Asistan oluştur
curl --request POST \
--url https://api.example.com/user/assistant \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"voice_id": 123,
"language_id": 123,
"type": "<string>",
"mode": "<string>",
"timezone": "<string>",
"initial_message": "<string>",
"system_prompt": "<string>",
"llm_model_id": 123,
"multimodal_model_id": 123,
"chat_llm_fallback_id": 123,
"turn_detection_threshold": 123,
"secondary_language_ids": [
123
],
"knowledgebase_id": 123,
"knowledgebase_mode": "<string>",
"phone_number_id": 123,
"tool_ids": [
123
],
"tools": [
{}
],
"tts_emotion_enabled": true,
"voice_stability": 123,
"voice_similarity": 123,
"speech_speed": 123,
"llm_temperature": 123,
"synthesizer_provider_id": 123,
"transcriber_provider_id": 123,
"allow_interruptions": true,
"fillers": true,
"filler_config": {},
"record": true,
"enable_noise_cancellation": true,
"wait_for_customer": true,
"max_duration": 123,
"max_silence_duration": 123,
"max_initial_silence_duration": 123,
"ringing_time": 123,
"reengagement_interval": 123,
"reengagement_prompt": "<string>",
"end_call_on_voicemail": true,
"voice_mail_message": "<string>",
"endpoint_type": "<string>",
"endpoint_sensitivity": 123,
"interrupt_sensitivity": 123,
"min_interrupt_words": 123,
"ambient_sound": "<string>",
"ambient_sound_volume": 123,
"is_webhook_active": true,
"webhook_url": "<string>",
"send_webhook_only_on_completed": true,
"include_recording_in_webhook": true,
"post_call_evaluation": true,
"post_call_schema": [
{
"name": "<string>",
"type": "<string>",
"description": "<string>"
}
],
"variables": {},
"conversation_inactivity_timeout": 123,
"conversation_ended_retrigger": true,
"conversation_ended_webhook_url": "<string>"
}
'import requests
url = "https://api.example.com/user/assistant"
payload = {
"name": "<string>",
"voice_id": 123,
"language_id": 123,
"type": "<string>",
"mode": "<string>",
"timezone": "<string>",
"initial_message": "<string>",
"system_prompt": "<string>",
"llm_model_id": 123,
"multimodal_model_id": 123,
"chat_llm_fallback_id": 123,
"turn_detection_threshold": 123,
"secondary_language_ids": [123],
"knowledgebase_id": 123,
"knowledgebase_mode": "<string>",
"phone_number_id": 123,
"tool_ids": [123],
"tools": [{}],
"tts_emotion_enabled": True,
"voice_stability": 123,
"voice_similarity": 123,
"speech_speed": 123,
"llm_temperature": 123,
"synthesizer_provider_id": 123,
"transcriber_provider_id": 123,
"allow_interruptions": True,
"fillers": True,
"filler_config": {},
"record": True,
"enable_noise_cancellation": True,
"wait_for_customer": True,
"max_duration": 123,
"max_silence_duration": 123,
"max_initial_silence_duration": 123,
"ringing_time": 123,
"reengagement_interval": 123,
"reengagement_prompt": "<string>",
"end_call_on_voicemail": True,
"voice_mail_message": "<string>",
"endpoint_type": "<string>",
"endpoint_sensitivity": 123,
"interrupt_sensitivity": 123,
"min_interrupt_words": 123,
"ambient_sound": "<string>",
"ambient_sound_volume": 123,
"is_webhook_active": True,
"webhook_url": "<string>",
"send_webhook_only_on_completed": True,
"include_recording_in_webhook": True,
"post_call_evaluation": True,
"post_call_schema": [
{
"name": "<string>",
"type": "<string>",
"description": "<string>"
}
],
"variables": {},
"conversation_inactivity_timeout": 123,
"conversation_ended_retrigger": True,
"conversation_ended_webhook_url": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
voice_id: 123,
language_id: 123,
type: '<string>',
mode: '<string>',
timezone: '<string>',
initial_message: '<string>',
system_prompt: '<string>',
llm_model_id: 123,
multimodal_model_id: 123,
chat_llm_fallback_id: 123,
turn_detection_threshold: 123,
secondary_language_ids: [123],
knowledgebase_id: 123,
knowledgebase_mode: '<string>',
phone_number_id: 123,
tool_ids: [123],
tools: [{}],
tts_emotion_enabled: true,
voice_stability: 123,
voice_similarity: 123,
speech_speed: 123,
llm_temperature: 123,
synthesizer_provider_id: 123,
transcriber_provider_id: 123,
allow_interruptions: true,
fillers: true,
filler_config: {},
record: true,
enable_noise_cancellation: true,
wait_for_customer: true,
max_duration: 123,
max_silence_duration: 123,
max_initial_silence_duration: 123,
ringing_time: 123,
reengagement_interval: 123,
reengagement_prompt: '<string>',
end_call_on_voicemail: true,
voice_mail_message: '<string>',
endpoint_type: '<string>',
endpoint_sensitivity: 123,
interrupt_sensitivity: 123,
min_interrupt_words: 123,
ambient_sound: '<string>',
ambient_sound_volume: 123,
is_webhook_active: true,
webhook_url: '<string>',
send_webhook_only_on_completed: true,
include_recording_in_webhook: true,
post_call_evaluation: true,
post_call_schema: [{name: '<string>', type: '<string>', description: '<string>'}],
variables: {},
conversation_inactivity_timeout: 123,
conversation_ended_retrigger: true,
conversation_ended_webhook_url: '<string>'
})
};
fetch('https://api.example.com/user/assistant', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/user/assistant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'voice_id' => 123,
'language_id' => 123,
'type' => '<string>',
'mode' => '<string>',
'timezone' => '<string>',
'initial_message' => '<string>',
'system_prompt' => '<string>',
'llm_model_id' => 123,
'multimodal_model_id' => 123,
'chat_llm_fallback_id' => 123,
'turn_detection_threshold' => 123,
'secondary_language_ids' => [
123
],
'knowledgebase_id' => 123,
'knowledgebase_mode' => '<string>',
'phone_number_id' => 123,
'tool_ids' => [
123
],
'tools' => [
[
]
],
'tts_emotion_enabled' => true,
'voice_stability' => 123,
'voice_similarity' => 123,
'speech_speed' => 123,
'llm_temperature' => 123,
'synthesizer_provider_id' => 123,
'transcriber_provider_id' => 123,
'allow_interruptions' => true,
'fillers' => true,
'filler_config' => [
],
'record' => true,
'enable_noise_cancellation' => true,
'wait_for_customer' => true,
'max_duration' => 123,
'max_silence_duration' => 123,
'max_initial_silence_duration' => 123,
'ringing_time' => 123,
'reengagement_interval' => 123,
'reengagement_prompt' => '<string>',
'end_call_on_voicemail' => true,
'voice_mail_message' => '<string>',
'endpoint_type' => '<string>',
'endpoint_sensitivity' => 123,
'interrupt_sensitivity' => 123,
'min_interrupt_words' => 123,
'ambient_sound' => '<string>',
'ambient_sound_volume' => 123,
'is_webhook_active' => true,
'webhook_url' => '<string>',
'send_webhook_only_on_completed' => true,
'include_recording_in_webhook' => true,
'post_call_evaluation' => true,
'post_call_schema' => [
[
'name' => '<string>',
'type' => '<string>',
'description' => '<string>'
]
],
'variables' => [
],
'conversation_inactivity_timeout' => 123,
'conversation_ended_retrigger' => true,
'conversation_ended_webhook_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/user/assistant"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"llm_model_id\": 123,\n \"multimodal_model_id\": 123,\n \"chat_llm_fallback_id\": 123,\n \"turn_detection_threshold\": 123,\n \"secondary_language_ids\": [\n 123\n ],\n \"knowledgebase_id\": 123,\n \"knowledgebase_mode\": \"<string>\",\n \"phone_number_id\": 123,\n \"tool_ids\": [\n 123\n ],\n \"tools\": [\n {}\n ],\n \"tts_emotion_enabled\": true,\n \"voice_stability\": 123,\n \"voice_similarity\": 123,\n \"speech_speed\": 123,\n \"llm_temperature\": 123,\n \"synthesizer_provider_id\": 123,\n \"transcriber_provider_id\": 123,\n \"allow_interruptions\": true,\n \"fillers\": true,\n \"filler_config\": {},\n \"record\": true,\n \"enable_noise_cancellation\": true,\n \"wait_for_customer\": true,\n \"max_duration\": 123,\n \"max_silence_duration\": 123,\n \"max_initial_silence_duration\": 123,\n \"ringing_time\": 123,\n \"reengagement_interval\": 123,\n \"reengagement_prompt\": \"<string>\",\n \"end_call_on_voicemail\": true,\n \"voice_mail_message\": \"<string>\",\n \"endpoint_type\": \"<string>\",\n \"endpoint_sensitivity\": 123,\n \"interrupt_sensitivity\": 123,\n \"min_interrupt_words\": 123,\n \"ambient_sound\": \"<string>\",\n \"ambient_sound_volume\": 123,\n \"is_webhook_active\": true,\n \"webhook_url\": \"<string>\",\n \"send_webhook_only_on_completed\": true,\n \"include_recording_in_webhook\": true,\n \"post_call_evaluation\": true,\n \"post_call_schema\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"variables\": {},\n \"conversation_inactivity_timeout\": 123,\n \"conversation_ended_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/user/assistant")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"llm_model_id\": 123,\n \"multimodal_model_id\": 123,\n \"chat_llm_fallback_id\": 123,\n \"turn_detection_threshold\": 123,\n \"secondary_language_ids\": [\n 123\n ],\n \"knowledgebase_id\": 123,\n \"knowledgebase_mode\": \"<string>\",\n \"phone_number_id\": 123,\n \"tool_ids\": [\n 123\n ],\n \"tools\": [\n {}\n ],\n \"tts_emotion_enabled\": true,\n \"voice_stability\": 123,\n \"voice_similarity\": 123,\n \"speech_speed\": 123,\n \"llm_temperature\": 123,\n \"synthesizer_provider_id\": 123,\n \"transcriber_provider_id\": 123,\n \"allow_interruptions\": true,\n \"fillers\": true,\n \"filler_config\": {},\n \"record\": true,\n \"enable_noise_cancellation\": true,\n \"wait_for_customer\": true,\n \"max_duration\": 123,\n \"max_silence_duration\": 123,\n \"max_initial_silence_duration\": 123,\n \"ringing_time\": 123,\n \"reengagement_interval\": 123,\n \"reengagement_prompt\": \"<string>\",\n \"end_call_on_voicemail\": true,\n \"voice_mail_message\": \"<string>\",\n \"endpoint_type\": \"<string>\",\n \"endpoint_sensitivity\": 123,\n \"interrupt_sensitivity\": 123,\n \"min_interrupt_words\": 123,\n \"ambient_sound\": \"<string>\",\n \"ambient_sound_volume\": 123,\n \"is_webhook_active\": true,\n \"webhook_url\": \"<string>\",\n \"send_webhook_only_on_completed\": true,\n \"include_recording_in_webhook\": true,\n \"post_call_evaluation\": true,\n \"post_call_schema\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"variables\": {},\n \"conversation_inactivity_timeout\": 123,\n \"conversation_ended_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/user/assistant")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"llm_model_id\": 123,\n \"multimodal_model_id\": 123,\n \"chat_llm_fallback_id\": 123,\n \"turn_detection_threshold\": 123,\n \"secondary_language_ids\": [\n 123\n ],\n \"knowledgebase_id\": 123,\n \"knowledgebase_mode\": \"<string>\",\n \"phone_number_id\": 123,\n \"tool_ids\": [\n 123\n ],\n \"tools\": [\n {}\n ],\n \"tts_emotion_enabled\": true,\n \"voice_stability\": 123,\n \"voice_similarity\": 123,\n \"speech_speed\": 123,\n \"llm_temperature\": 123,\n \"synthesizer_provider_id\": 123,\n \"transcriber_provider_id\": 123,\n \"allow_interruptions\": true,\n \"fillers\": true,\n \"filler_config\": {},\n \"record\": true,\n \"enable_noise_cancellation\": true,\n \"wait_for_customer\": true,\n \"max_duration\": 123,\n \"max_silence_duration\": 123,\n \"max_initial_silence_duration\": 123,\n \"ringing_time\": 123,\n \"reengagement_interval\": 123,\n \"reengagement_prompt\": \"<string>\",\n \"end_call_on_voicemail\": true,\n \"voice_mail_message\": \"<string>\",\n \"endpoint_type\": \"<string>\",\n \"endpoint_sensitivity\": 123,\n \"interrupt_sensitivity\": 123,\n \"min_interrupt_words\": 123,\n \"ambient_sound\": \"<string>\",\n \"ambient_sound_volume\": 123,\n \"is_webhook_active\": true,\n \"webhook_url\": \"<string>\",\n \"send_webhook_only_on_completed\": true,\n \"include_recording_in_webhook\": true,\n \"post_call_evaluation\": true,\n \"post_call_schema\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"variables\": {},\n \"conversation_inactivity_timeout\": 123,\n \"conversation_ended_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Assistant created successfully",
"data": {
"id": 789,
"name": "Sales Assistant",
"status": "inactive",
"type": "outbound",
"mode": "pipeline"
}
}
{
"message": "Validation failed",
"errors": {
"name": ["The name field is required."],
"voice_id": ["The selected voice is not compatible with the chosen engine type."],
"knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
}
}
Asistanlar
Asistan oluştur
Belirtilen yapılandırma ile yeni bir AI asistanı oluşturun
POST
/
user
/
assistant
Asistan oluştur
curl --request POST \
--url https://api.example.com/user/assistant \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"voice_id": 123,
"language_id": 123,
"type": "<string>",
"mode": "<string>",
"timezone": "<string>",
"initial_message": "<string>",
"system_prompt": "<string>",
"llm_model_id": 123,
"multimodal_model_id": 123,
"chat_llm_fallback_id": 123,
"turn_detection_threshold": 123,
"secondary_language_ids": [
123
],
"knowledgebase_id": 123,
"knowledgebase_mode": "<string>",
"phone_number_id": 123,
"tool_ids": [
123
],
"tools": [
{}
],
"tts_emotion_enabled": true,
"voice_stability": 123,
"voice_similarity": 123,
"speech_speed": 123,
"llm_temperature": 123,
"synthesizer_provider_id": 123,
"transcriber_provider_id": 123,
"allow_interruptions": true,
"fillers": true,
"filler_config": {},
"record": true,
"enable_noise_cancellation": true,
"wait_for_customer": true,
"max_duration": 123,
"max_silence_duration": 123,
"max_initial_silence_duration": 123,
"ringing_time": 123,
"reengagement_interval": 123,
"reengagement_prompt": "<string>",
"end_call_on_voicemail": true,
"voice_mail_message": "<string>",
"endpoint_type": "<string>",
"endpoint_sensitivity": 123,
"interrupt_sensitivity": 123,
"min_interrupt_words": 123,
"ambient_sound": "<string>",
"ambient_sound_volume": 123,
"is_webhook_active": true,
"webhook_url": "<string>",
"send_webhook_only_on_completed": true,
"include_recording_in_webhook": true,
"post_call_evaluation": true,
"post_call_schema": [
{
"name": "<string>",
"type": "<string>",
"description": "<string>"
}
],
"variables": {},
"conversation_inactivity_timeout": 123,
"conversation_ended_retrigger": true,
"conversation_ended_webhook_url": "<string>"
}
'import requests
url = "https://api.example.com/user/assistant"
payload = {
"name": "<string>",
"voice_id": 123,
"language_id": 123,
"type": "<string>",
"mode": "<string>",
"timezone": "<string>",
"initial_message": "<string>",
"system_prompt": "<string>",
"llm_model_id": 123,
"multimodal_model_id": 123,
"chat_llm_fallback_id": 123,
"turn_detection_threshold": 123,
"secondary_language_ids": [123],
"knowledgebase_id": 123,
"knowledgebase_mode": "<string>",
"phone_number_id": 123,
"tool_ids": [123],
"tools": [{}],
"tts_emotion_enabled": True,
"voice_stability": 123,
"voice_similarity": 123,
"speech_speed": 123,
"llm_temperature": 123,
"synthesizer_provider_id": 123,
"transcriber_provider_id": 123,
"allow_interruptions": True,
"fillers": True,
"filler_config": {},
"record": True,
"enable_noise_cancellation": True,
"wait_for_customer": True,
"max_duration": 123,
"max_silence_duration": 123,
"max_initial_silence_duration": 123,
"ringing_time": 123,
"reengagement_interval": 123,
"reengagement_prompt": "<string>",
"end_call_on_voicemail": True,
"voice_mail_message": "<string>",
"endpoint_type": "<string>",
"endpoint_sensitivity": 123,
"interrupt_sensitivity": 123,
"min_interrupt_words": 123,
"ambient_sound": "<string>",
"ambient_sound_volume": 123,
"is_webhook_active": True,
"webhook_url": "<string>",
"send_webhook_only_on_completed": True,
"include_recording_in_webhook": True,
"post_call_evaluation": True,
"post_call_schema": [
{
"name": "<string>",
"type": "<string>",
"description": "<string>"
}
],
"variables": {},
"conversation_inactivity_timeout": 123,
"conversation_ended_retrigger": True,
"conversation_ended_webhook_url": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
voice_id: 123,
language_id: 123,
type: '<string>',
mode: '<string>',
timezone: '<string>',
initial_message: '<string>',
system_prompt: '<string>',
llm_model_id: 123,
multimodal_model_id: 123,
chat_llm_fallback_id: 123,
turn_detection_threshold: 123,
secondary_language_ids: [123],
knowledgebase_id: 123,
knowledgebase_mode: '<string>',
phone_number_id: 123,
tool_ids: [123],
tools: [{}],
tts_emotion_enabled: true,
voice_stability: 123,
voice_similarity: 123,
speech_speed: 123,
llm_temperature: 123,
synthesizer_provider_id: 123,
transcriber_provider_id: 123,
allow_interruptions: true,
fillers: true,
filler_config: {},
record: true,
enable_noise_cancellation: true,
wait_for_customer: true,
max_duration: 123,
max_silence_duration: 123,
max_initial_silence_duration: 123,
ringing_time: 123,
reengagement_interval: 123,
reengagement_prompt: '<string>',
end_call_on_voicemail: true,
voice_mail_message: '<string>',
endpoint_type: '<string>',
endpoint_sensitivity: 123,
interrupt_sensitivity: 123,
min_interrupt_words: 123,
ambient_sound: '<string>',
ambient_sound_volume: 123,
is_webhook_active: true,
webhook_url: '<string>',
send_webhook_only_on_completed: true,
include_recording_in_webhook: true,
post_call_evaluation: true,
post_call_schema: [{name: '<string>', type: '<string>', description: '<string>'}],
variables: {},
conversation_inactivity_timeout: 123,
conversation_ended_retrigger: true,
conversation_ended_webhook_url: '<string>'
})
};
fetch('https://api.example.com/user/assistant', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/user/assistant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'voice_id' => 123,
'language_id' => 123,
'type' => '<string>',
'mode' => '<string>',
'timezone' => '<string>',
'initial_message' => '<string>',
'system_prompt' => '<string>',
'llm_model_id' => 123,
'multimodal_model_id' => 123,
'chat_llm_fallback_id' => 123,
'turn_detection_threshold' => 123,
'secondary_language_ids' => [
123
],
'knowledgebase_id' => 123,
'knowledgebase_mode' => '<string>',
'phone_number_id' => 123,
'tool_ids' => [
123
],
'tools' => [
[
]
],
'tts_emotion_enabled' => true,
'voice_stability' => 123,
'voice_similarity' => 123,
'speech_speed' => 123,
'llm_temperature' => 123,
'synthesizer_provider_id' => 123,
'transcriber_provider_id' => 123,
'allow_interruptions' => true,
'fillers' => true,
'filler_config' => [
],
'record' => true,
'enable_noise_cancellation' => true,
'wait_for_customer' => true,
'max_duration' => 123,
'max_silence_duration' => 123,
'max_initial_silence_duration' => 123,
'ringing_time' => 123,
'reengagement_interval' => 123,
'reengagement_prompt' => '<string>',
'end_call_on_voicemail' => true,
'voice_mail_message' => '<string>',
'endpoint_type' => '<string>',
'endpoint_sensitivity' => 123,
'interrupt_sensitivity' => 123,
'min_interrupt_words' => 123,
'ambient_sound' => '<string>',
'ambient_sound_volume' => 123,
'is_webhook_active' => true,
'webhook_url' => '<string>',
'send_webhook_only_on_completed' => true,
'include_recording_in_webhook' => true,
'post_call_evaluation' => true,
'post_call_schema' => [
[
'name' => '<string>',
'type' => '<string>',
'description' => '<string>'
]
],
'variables' => [
],
'conversation_inactivity_timeout' => 123,
'conversation_ended_retrigger' => true,
'conversation_ended_webhook_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/user/assistant"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"llm_model_id\": 123,\n \"multimodal_model_id\": 123,\n \"chat_llm_fallback_id\": 123,\n \"turn_detection_threshold\": 123,\n \"secondary_language_ids\": [\n 123\n ],\n \"knowledgebase_id\": 123,\n \"knowledgebase_mode\": \"<string>\",\n \"phone_number_id\": 123,\n \"tool_ids\": [\n 123\n ],\n \"tools\": [\n {}\n ],\n \"tts_emotion_enabled\": true,\n \"voice_stability\": 123,\n \"voice_similarity\": 123,\n \"speech_speed\": 123,\n \"llm_temperature\": 123,\n \"synthesizer_provider_id\": 123,\n \"transcriber_provider_id\": 123,\n \"allow_interruptions\": true,\n \"fillers\": true,\n \"filler_config\": {},\n \"record\": true,\n \"enable_noise_cancellation\": true,\n \"wait_for_customer\": true,\n \"max_duration\": 123,\n \"max_silence_duration\": 123,\n \"max_initial_silence_duration\": 123,\n \"ringing_time\": 123,\n \"reengagement_interval\": 123,\n \"reengagement_prompt\": \"<string>\",\n \"end_call_on_voicemail\": true,\n \"voice_mail_message\": \"<string>\",\n \"endpoint_type\": \"<string>\",\n \"endpoint_sensitivity\": 123,\n \"interrupt_sensitivity\": 123,\n \"min_interrupt_words\": 123,\n \"ambient_sound\": \"<string>\",\n \"ambient_sound_volume\": 123,\n \"is_webhook_active\": true,\n \"webhook_url\": \"<string>\",\n \"send_webhook_only_on_completed\": true,\n \"include_recording_in_webhook\": true,\n \"post_call_evaluation\": true,\n \"post_call_schema\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"variables\": {},\n \"conversation_inactivity_timeout\": 123,\n \"conversation_ended_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/user/assistant")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"llm_model_id\": 123,\n \"multimodal_model_id\": 123,\n \"chat_llm_fallback_id\": 123,\n \"turn_detection_threshold\": 123,\n \"secondary_language_ids\": [\n 123\n ],\n \"knowledgebase_id\": 123,\n \"knowledgebase_mode\": \"<string>\",\n \"phone_number_id\": 123,\n \"tool_ids\": [\n 123\n ],\n \"tools\": [\n {}\n ],\n \"tts_emotion_enabled\": true,\n \"voice_stability\": 123,\n \"voice_similarity\": 123,\n \"speech_speed\": 123,\n \"llm_temperature\": 123,\n \"synthesizer_provider_id\": 123,\n \"transcriber_provider_id\": 123,\n \"allow_interruptions\": true,\n \"fillers\": true,\n \"filler_config\": {},\n \"record\": true,\n \"enable_noise_cancellation\": true,\n \"wait_for_customer\": true,\n \"max_duration\": 123,\n \"max_silence_duration\": 123,\n \"max_initial_silence_duration\": 123,\n \"ringing_time\": 123,\n \"reengagement_interval\": 123,\n \"reengagement_prompt\": \"<string>\",\n \"end_call_on_voicemail\": true,\n \"voice_mail_message\": \"<string>\",\n \"endpoint_type\": \"<string>\",\n \"endpoint_sensitivity\": 123,\n \"interrupt_sensitivity\": 123,\n \"min_interrupt_words\": 123,\n \"ambient_sound\": \"<string>\",\n \"ambient_sound_volume\": 123,\n \"is_webhook_active\": true,\n \"webhook_url\": \"<string>\",\n \"send_webhook_only_on_completed\": true,\n \"include_recording_in_webhook\": true,\n \"post_call_evaluation\": true,\n \"post_call_schema\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"variables\": {},\n \"conversation_inactivity_timeout\": 123,\n \"conversation_ended_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/user/assistant")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"llm_model_id\": 123,\n \"multimodal_model_id\": 123,\n \"chat_llm_fallback_id\": 123,\n \"turn_detection_threshold\": 123,\n \"secondary_language_ids\": [\n 123\n ],\n \"knowledgebase_id\": 123,\n \"knowledgebase_mode\": \"<string>\",\n \"phone_number_id\": 123,\n \"tool_ids\": [\n 123\n ],\n \"tools\": [\n {}\n ],\n \"tts_emotion_enabled\": true,\n \"voice_stability\": 123,\n \"voice_similarity\": 123,\n \"speech_speed\": 123,\n \"llm_temperature\": 123,\n \"synthesizer_provider_id\": 123,\n \"transcriber_provider_id\": 123,\n \"allow_interruptions\": true,\n \"fillers\": true,\n \"filler_config\": {},\n \"record\": true,\n \"enable_noise_cancellation\": true,\n \"wait_for_customer\": true,\n \"max_duration\": 123,\n \"max_silence_duration\": 123,\n \"max_initial_silence_duration\": 123,\n \"ringing_time\": 123,\n \"reengagement_interval\": 123,\n \"reengagement_prompt\": \"<string>\",\n \"end_call_on_voicemail\": true,\n \"voice_mail_message\": \"<string>\",\n \"endpoint_type\": \"<string>\",\n \"endpoint_sensitivity\": 123,\n \"interrupt_sensitivity\": 123,\n \"min_interrupt_words\": 123,\n \"ambient_sound\": \"<string>\",\n \"ambient_sound_volume\": 123,\n \"is_webhook_active\": true,\n \"webhook_url\": \"<string>\",\n \"send_webhook_only_on_completed\": true,\n \"include_recording_in_webhook\": true,\n \"post_call_evaluation\": true,\n \"post_call_schema\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"variables\": {},\n \"conversation_inactivity_timeout\": 123,\n \"conversation_ended_retrigger\": true,\n \"conversation_ended_webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Assistant created successfully",
"data": {
"id": 789,
"name": "Sales Assistant",
"status": "inactive",
"type": "outbound",
"mode": "pipeline"
}
}
{
"message": "Validation failed",
"errors": {
"name": ["The name field is required."],
"voice_id": ["The selected voice is not compatible with the chosen engine type."],
"knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
}
}
Bu endpoint, kapsamlı yapılandırma seçenekleriyle yeni bir AI asistanı oluşturmanıza olanak tanır.
Motor Modları
API, her biri farklı yeteneklere sahip üç motor modunu destekler:| Mod | Açıklama | Zorunlu Alanlar |
|---|---|---|
pipeline | Geleneksel STT → LLM → TTS işlem hattı | llm_model_id |
multimodal | Gerçek zamanlı multimodal AI | multimodal_model_id |
dualplex | Multimodal beyin + özel TTS sesi | multimodal_model_id |
İstek Gövdesi
Temel Zorunlu Alanlar
string
gerekli
Asistanın adı (maks. 255 karakter)
integer
gerekli
Asistan için kullanılacak ses ID’si. Motor modunuzla uyumlu sesleri almak için
mode parametresiyle Sesleri Getir uç noktasını kullanın.integer
gerekli
Asistan için dil ID’si. Mevcut dilleri almak için Dilleri Getir uç noktasını kullanın.
string
gerekli
Asistan türü. Seçenekler:
inbound, outboundstring
gerekli
Motor modu. Seçenekler:
pipeline, multimodal, dualplexstring
gerekli
Asistan için saat dilimi (ör. “Europe/Bucharest”, “America/New_York”)
string
gerekli
Arama başladığında asistanın söyleyeceği ilk mesaj (maks. 200 karakter)
string
gerekli
Asistanın davranışını ve kişiliğini tanımlayan sistem istemi
Moda Özel Alanlar
integer
Kullanılacak LLM model ID’si.
pipeline modu için zorunludur.Mevcut modelleri almak için Modelleri Getir uç noktasını kullanın.integer
Multimodal model ID’si.
multimodal ve dualplex modları için zorunludur.Mevcut multimodal modelleri almak için Modelleri Getir uç noktasını kullanın.integer
Multimodal/dualplex modlarında araç çağrıları için yedek LLM model ID’si. İsteğe bağlı.
number
Multimodal/dualplex modları için konuşma sırası algılama hassasiyeti (0-1). Varsayılan: otomatik
İkincil Diller
integer[]
Asistanın konuşabileceği ek dil ID’lerinin dizisi. Asistan dilleri otomatik olarak algılar ve geçiş yapar.
"secondary_language_ids": [2, 3, 4]
Bilgi Bankası Ayarları
integer
Bu asistana eklenecek bilgi bankası ID’si
string
Bilgi bankasının nasıl kullanılacağı. Seçenekler:
function_call- AI arama yapmak için bir fonksiyon çağırır (multimodal/dualplex için zorunlu)prompt- Bilgi isteme enjekte edilir (yalnızca pipeline)
Telefon Numarası
integer
Asistana atanacak telefon numarasının ID’si. Hesabınıza ait olmalıdır.
inbound asistanlar için telefon numarası Arayan Kimliği türünde olamaz ve başka bir gelen arama asistanına zaten atanmış olamaz.Özel Görüşme İçi Araçlar
integer[]
Eklenecek özel görüşme içi araç ID’lerinin dizisi. Her araç hesabınıza ait olmalıdır.
"tool_ids": [1, 5, 12]
Yerleşik Araçlar
array
Etkinleştirilecek yerleşik araçların dizisi. Her aracın bir
type değeri ve araca özel alanları vardır.Göster Araç türleri
Göster Araç türleri
call_transfer - Aramayı başka bir telefon numarasına aktarır
phone_number(zorunlu): Aktarılacak telefon numarası (ör. “+1234567890”)description: Aramanın ne zaman aktarılacağıcustom: true ise, AI aktarma numarasını dinamik olarak belirleyebilirtimezone: Aktarma uygunluğu için saat dilimiwarm_transfer: Aktarmadan önce müşteriye bir mesaj gönderir (varsayılan:false)warm_transfer_message: AI’ya aktarmadan önce ne söylemesi gerektiğini bildiren istem (ör. “Müşteriye aramanın aktarıldığını söyleyin.”)
supervisor_phone(zorunlu): Sıcak aktarma için aranacak telefon numarası (ör. “+14155552001”).custom_sipetkinse, bunun yerine bir SIP adresi veya dahili hat numarasıdır.outbound_phone_id(zorunlu): Yöneticiyi aramak için kullanılan telefon numarasının ID’si. Mevcut numaraları bulmak için Telefon Numaralarını Getir uç noktasını kullanın.description(zorunlu): Ne zaman aktarılacağı — AI’nın sıcak aktarmayı ne zaman başlatması gerektiğini açıklar (ör. “Müşteri gerçek bir kişiyle konuşmak istediğinde aramayı bir insan yöneticiye aktarın.”)custom_sip: Telefon numarası yerine özel bir SIP adresi veya dahili hat numarası girmek için etkinleştirin (varsayılan:false)caller_id_mode: Yöneticinin aramayı alırken gördüğü telefon numarası. Seçenekler:outbound_number(varsayılan — giden arama numarasını gösterir),customer_number(arayanın numarasını gösterir),custom(özel bir numara gösterir)custom_caller_id: Yöneticiye gösterilen özel telefon numarası. Yalnızcacaller_id_modedeğericustomolduğunda kullanılır.hold_music: Arayan beklerken çalınan ses. Seçenekler:hold_music(varsayılan — varsayılan bekleme müziği çalar),none(sessizlik, müzik yok)hold_music_volume: Bekleme müziği ses seviyesi, 0-100 (varsayılan:80)hold_message: Arayan beklemeye alınmadan önce söylenen mesaj (varsayılan: “Sizi bir yöneticiye bağlarken lütfen bekleyin.”)summary_instructions: AI’nın yöneticiyi arama hakkında nasıl bilgilendireceğine dair talimatlar (varsayılan: “Görüşmeyi kendi bakış açınızdan tanıtın:\n- KİM arıyor (ad, varsa şirket)\n- NEDEN aradılar (amaçları veya sorunları)\n- NEDEN bu noktada bir insana ihtiyaç var\n\nKısa tutun (2-3 cümle).”)briefing_initial_message: AI’nın yönetici yanıtladığında söylediği ilk mesaj (varsayılan: “Merhaba! Hatta yardımınıza ihtiyaç duyan bir arayan var. Durumu size özetleyebilir miyim?”)connected_message: Yönetici bağlandıktan sonra arayana söylenen mesaj (varsayılan: “Artık bir yöneticiyle bağlantıdasınız. Sizi başbaşa bırakıyorum.”)
description: AI’nın aramayı ne zaman sonlandırması gerektiği
description: DTMF girişinin ne zaman kullanılacağı (IVR navigasyonu için)
timeout: Giriş için beklenecek saniye, 1-30 (varsayılan: 5)stop_key: Girişi sonlandıran tuş. Seçenekler:#(varsayılan),*
calcom_api_key(zorunlu): Cal.com API anahtarınızcalcom_event_slug(zorunlu): Cal.com’daki etkinlik türü slug’ıcalcom_team_slug: Etkinlik bir Cal.com takımına aitse takım slug’ıcalcom_endpoint: Cal.com API bölgesi. Seçenekler:us(varsayılan —https://api.cal.com),eu(https://api.cal.eu),custom(calcom_custom_endpointkullanır)calcom_custom_endpoint: Özel Cal.com API temel URL’si. Yalnızcacalcom_endpointdeğericustomolduğunda kullanılır (ör.https://my-calcom-instance.com).calcom_booking_fields: Etkinlik için özel rezervasyon alanları dizisi. Her alanın özellikleri:slug(zorunlu): Alan tanımlayıcısıtype(zorunlu): Alan türü (ör. “text”, “email”, “phone”, “select”)label(zorunlu): Görüntüleme etiketirequired: Alanın zorunlu olup olmadığı (varsayılan:false)options: Seçim alanları için seçenekler dizisi
description: Randevu planlamanın ne zaman sunulacağı
"tools": [
{
"type": "call_transfer",
"phone_number": "+1234567890",
"description": "Transfer when customer requests human support"
},
{
"type": "warm_call_transfer",
"supervisor_phone": "+1234567891",
"outbound_phone_id": 7,
"description": "Transfer the call to a human supervisor when the customer requests to speak with a real person.",
"custom_sip": false,
"caller_id_mode": "outbound_number",
"hold_music": "hold_music",
"hold_music_volume": 80,
"hold_message": "Please hold while I connect you with a supervisor.",
"summary_instructions": "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).",
"briefing_initial_message": "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?",
"connected_message": "You are now connected with a supervisor. I'll leave you to it."
},
{
"type": "collect_keypad",
"timeout": 5,
"stop_key": "#"
},
{
"type": "end_call",
"description": "End call when customer confirms satisfaction"
}
]
Ses ve TTS Ayarları
boolean
varsayılan:"true"
Duygusal metin-konuşma sentezinin etkinleştirilip etkinleştirilmeyeceği
number
varsayılan:"0.70"
Ses kararlılığı ayarı (0-1). Yüksek = daha tutarlı ses
number
varsayılan:"0.50"
Ses benzerliği ayarı (0-1). Yüksek = orijinal sese daha yakın
number
varsayılan:"1.00"
Konuşma hızı çarpanı (0.7-1.2)
number
varsayılan:"0.10"
LLM sıcaklık ayarı (0-1). Düşük = daha belirleyici
integer
Özel TTS sağlayıcı ID’si. Belirtilmezse dile göre otomatik seçilir. Mevcut sağlayıcıları keşfetmek için Sentezleyici Sağlayıcıları Getir uç noktasını kullanın.
integer
Özel STT sağlayıcı ID’si. Belirtilmezse dile göre otomatik seçilir. Yalnızca pipeline modu. Mevcut sağlayıcıları keşfetmek için Yazıya Dökücü Sağlayıcıları Getir uç noktasını kullanın.
Arama Davranış Ayarları
boolean
varsayılan:"true"
Arayan kişinin sözünü kesmesine izin verilip verilmeyeceği.
multimodal ve dualplex modlarında devre dışı bırakılamaz.boolean
varsayılan:"false"
İşleme sırasında dolgu seslerinin kullanılıp kullanılmayacağı (ör. “hmm”, “bir kontrol edeyim”).
Yalnızca
pipeline modu için kullanılabilir.object
Kategori bazında özel dolgu kelime profilleri. Belirtilmezse, asistanın diline göre varsayılanlar ayarlanır. Her kategori kısa ifadelerden oluşan bir dizidir.
positive: Olumlu/onaylayıcı yanıtlar için dolgu kelimeleri (ör. “Harika!”, “Mükemmel!”)negative: Olumsuz/nötr yanıtlar için dolgu kelimeleri (ör. “Hmm.”, “Mhm.”)question: Bir soru işlenirken dolgu kelimeleri (ör. “Hmm.”, “Bir düşüneyim.”)neutral: Nötr onaylar için dolgu kelimeleri (ör. “Tamam.”, “Anlıyorum.”)
"filler_config": {
"positive": ["Super!", "Great!", "Perfect!"],
"negative": ["Hmm.", "Mhm.", "I see."],
"question": ["Hmm.", "Let me check.", "Good question."],
"neutral": ["Ok.", "I understand.", "Noted."]
}
boolean
varsayılan:"false"
Aramanın kaydedilip kaydedilmeyeceği
boolean
varsayılan:"true"
Gürültü engellemenin etkinleştirilip etkinleştirilmeyeceği
boolean
varsayılan:"false"
true ise asistan müşterinin önce konuşmasını bekler
Zamanlama Ayarları
integer
varsayılan:"600"
Saniye cinsinden maksimum arama süresi (20-1200)
integer
varsayılan:"40"
Yeniden etkileşim öncesi saniye cinsinden maksimum sessizlik süresi (1-360)
integer
Arama başlangıcında sonlandırma öncesi maksimum sessizlik süresi (1-120 saniye). İsteğe bağlı.
integer
varsayılan:"30"
Vazgeçme öncesi maksimum çalma süresi (1-60 saniye)
Yeniden Etkileşim Ayarları
integer
varsayılan:"30"
Saniye cinsinden yeniden etkileşim aralığı (7-600)
string
Yeniden etkileşim mesajları için özel istem (maks. 1000 karakter)Örnek:
"Hâlâ orada mısınız? Başka sorularınız var mı?"Sesli Mesaj Ayarları
boolean
varsayılan:"true"
Sesli mesaj algılandığında aramanın sonlandırılıp sonlandırılmayacağı
string
Kapatmadan önce sesli mesaja bırakılacak mesaj (maks. 1000 karakter)
Uç Nokta Algılama
string
varsayılan:"vad"
Ses etkinliği algılama türü. Seçenekler:
vad, ainumber
varsayılan:"0.5"
Uç nokta hassasiyet seviyesi (0-5)
number
varsayılan:"0.5"
Söz kesme hassasiyet seviyesi (0-5)
integer
Söz kesmeye izin verilmeden önceki minimum kelime sayısı (0-10). Etkinleştirmek için ayarlayın.
Ortam Sesi
string
Arka plan ortam sesi. Seçenekler:
off, office, city, forest, crowded_room, cafe, naturenumber
varsayılan:"0.5"
Ortam sesi ses seviyesi (0-1)
Webhook Yapılandırması
boolean
varsayılan:"false"
Webhook bildirimlerinin etkin olup olmadığı
string
Arama sonrası bildirimler için webhook URL’si.
is_webhook_active değeri true ise zorunludur.boolean
varsayılan:"true"
Webhook’ların yalnızca tamamlanan aramalarda gönderilip gönderilmeyeceği (başarısız/cevapsız aramalar hariç)
boolean
varsayılan:"true"
Webhook yüküne kayıt URL’sinin dahil edilip edilmeyeceği
Arama Sonrası Değerlendirme
boolean
varsayılan:"true"
AI arama sonrası değerlendirmesinin etkinleştirilip etkinleştirilmeyeceği
array
Arama sonrası veri çıkarma için şema tanımı
Göster post_call_schema özellikleri
Göster post_call_schema özellikleri
"post_call_schema": [
{"name": "status", "type": "bool", "description": "Was the call objective achieved"},
{"name": "summary", "type": "string", "description": "Brief summary of the call"}
]
Değişkenler
object
İstemlerde
{{variable_name}} aracılığıyla erişilebilen özel değişkenlerin anahtar-değer çiftleri"variables": {
"company_name": "Acme Corp",
"product": "Premium Widget",
"support_email": "support@acme.com"
}
Görüşme Sona Erme Ayarları
integer
varsayılan:"30"
Görüşmenin sona ermiş sayılması için dakika cinsinden sohbet etkinsizlik süresi (1-1440)
boolean
varsayılan:"false"
Etkinsizlik nedeniyle sona erdikten sonra görüşmenin yeniden tetiklenmesine izin verilip verilmeyeceği
string
Bir sohbet görüşmesi etkinsizlik nedeniyle sona erdiğinde çağrılan webhook URL’si. Ana arama webhook’undan ayrıdır.
Örnek İstekler
Pipeline Modu Asistanı
{
"name": "Sales Assistant",
"voice_id": 1,
"language_id": 1,
"type": "outbound",
"mode": "pipeline",
"timezone": "Europe/Bucharest",
"initial_message": "Hello! How can I help you today?",
"system_prompt": "You are a professional sales assistant...",
"llm_model_id": 2,
"secondary_language_ids": [2, 3],
"knowledgebase_id": 1,
"knowledgebase_mode": "prompt",
"fillers": true,
"filler_config": {
"positive": ["Great!", "Perfect!", "Awesome!"],
"negative": ["Hmm.", "I see."],
"question": ["Good question.", "Let me check."],
"neutral": ["Ok.", "Noted.", "I understand."]
},
"tool_ids": [1, 5],
"tools": [
{
"type": "end_call",
"description": "End call when customer is satisfied"
},
{
"type": "call_transfer",
"phone_number": "+1234567890",
"description": "Transfer to support"
},
{
"type": "warm_call_transfer",
"supervisor_phone": "+1234567891",
"outbound_phone_id": 7,
"description": "Transfer the call to a human supervisor when the customer requests to speak with a real person.",
"custom_sip": false,
"caller_id_mode": "outbound_number",
"hold_music": "hold_music",
"hold_music_volume": 80,
"hold_message": "Please hold while I connect you with a supervisor.",
"summary_instructions": "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).",
"briefing_initial_message": "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?",
"connected_message": "You are now connected with a supervisor. I'll leave you to it."
},
{
"type": "collect_keypad",
"timeout": 5,
"stop_key": "#"
}
],
"reengagement_interval": 20,
"reengagement_prompt": "Are you still there?"
}
Multimodal Modu Asistanı
{
"name": "Support Bot",
"voice_id": 41,
"language_id": 1,
"type": "inbound",
"mode": "multimodal",
"timezone": "America/New_York",
"initial_message": "Hi! Welcome to support.",
"system_prompt": "You are a helpful destek asistanı...",
"multimodal_model_id": 1,
"chat_llm_fallback_id": 2,
"turn_detection_threshold": 0.7,
"knowledgebase_id": 1,
"knowledgebase_mode": "function_call",
"tts_emotion_enabled": false
}
Dualplex Modu Asistanı
{
"name": "Premium Asistan",
"voice_id": 1,
"language_id": 2,
"type": "outbound",
"mode": "dualplex",
"timezone": "Europe/Bucharest",
"initial_message": "Buna ziua!",
"system_prompt": "Esti un asistent profesionist...",
"multimodal_model_id": 4,
"chat_llm_fallback_id": 2,
"secondary_language_ids": [1, 3],
"knowledgebase_id": 1,
"knowledgebase_mode": "function_call",
"ambient_sound": "office",
"ambient_sound_volume": 0.3
}
Yanıt
string
Asistan oluşturma işlemini onaylayan başarı mesajı
object
{
"message": "Assistant created successfully",
"data": {
"id": 789,
"name": "Sales Assistant",
"status": "inactive",
"type": "outbound",
"mode": "pipeline"
}
}
{
"message": "Validation failed",
"errors": {
"name": ["The name field is required."],
"voice_id": ["The selected voice is not compatible with the chosen engine type."],
"knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
}
}
Notlar
- Asistanın başarıyla oluşturulması için tüm zorunlu alanlar sağlanmalıdır
- Uyumlu sesleri almak için
modeparametresiyle Sesleri Getir uç noktasını kullanın - Multimodal/dualplex modları için
knowledgebase_modedeğerifunction_callolmalıdır - Multimodal/dualplex modları için
allow_interruptionsher zaman etkindir - Dolgu kelimeleri yalnızca pipeline modunda kullanılabilir
- Asistan varsayılan olarak
inactivedurumuyla oluşturulur

