Skip to main content
POST
/
user
/
assistant
Създай асистент
curl --request POST \
  --url https://call.aiployees.com/api/user/assistant \
  --header 'Authorization: Bearer <token>' \
  --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>"
}
'
{
  "message": "Assistant created successfully",
  "data": {
    "id": 789,
    "name": "Sales Assistant",
    "status": "inactive",
    "type": "outbound",
    "mode": "pipeline"
  }
}
Този endpoint ви позволява да създадете нов AI асистент с обширни опции за конфигурация.

Engine режими

API поддържа три engine режима, всеки с различни възможности:
РежимОписаниеЗадължителни полета
pipelineТрадиционна STT → LLM → TTS веригаllm_model_id
multimodalReal-time multimodal AImultimodal_model_id
dualplexMultimodal мозък + персонализиран TTS гласmultimodal_model_id

Request Body

Основни задължителни полета

name
string
required
Името на асистента (максимум 255 символа)
voice_id
integer
required
ID на гласа за употреба от асистента. Използвайте Get Voices endpoint с mode параметър за да получите съвместими гласове за вашия engine режим.
language_id
integer
required
ID на езика за асистента. Използвайте Get Languages endpoint за да получите наличните езици.
type
string
required
Типът на асистента. Опции: inbound, outbound
mode
string
required
Engine режимът. Опции: pipeline, multimodal, dualplex
timezone
string
required
Часовата зона за асистента (напр. “Europe/Bucharest”, “America/New_York”)
initial_message
string
required
Първоначалното съобщение, което асистентът ще изговори когато започне обаждането (максимум 200 символа)
system_prompt
string
required
System prompt-ът, който дефинира поведението и личността на асистента

Полета специфични за режима

llm_model_id
integer
ID на LLM модела за използване. Задължително за pipeline режим.Използвайте Get Models endpoint за да получите наличните модели.
multimodal_model_id
integer
ID на multimodal модела. Задължително за multimodal и dualplex режими.Използвайте Get Models endpoint за да получите наличните multimodal модели.
chat_llm_fallback_id
integer
Fallback LLM модел ID за tool calls в multimodal/dualplex режими. Незадължително.
turn_detection_threshold
number
Чувствителност за разпознаване на реплики за multimodal/dualplex режими (0-1). По подразбиране: автоматично

Вторични езици

secondary_language_ids
integer[]
Масив от допълнителни ID-та на езици, които асистентът може да говори. Асистентът ще разпознава автоматично и ще превключва езици.
"secondary_language_ids": [2, 3, 4]

Настройки на базата знания

knowledgebase_id
integer
ID на базата знания за прикачване към този асистент
knowledgebase_mode
string
Как да се използва базата знания. Опции:
  • function_call - AI извиква функция за търсене (задължително за multimodal/dualplex)
  • prompt - Знанията се инжектират в prompt-а (само за pipeline)

Телефонен номер

phone_number_id
integer
ID на телефонен номер за присвояване на асистента. Трябва да принадлежи на вашия акаунт.
За inbound асистенти, телефонният номер не може да бъде от тип Caller ID и не може да бъде вече присвоен на друг inbound асистент.

Персонализирани Mid-Call инструменти

tool_ids
integer[]
Масив от ID-та на персонализирани mid-call инструменти за прикачване. Всеки инструмент трябва да принадлежи на вашия акаунт.
"tool_ids": [1, 5, 12]

Вградени инструменти

tools
array
Масив от вградени инструменти за активиране. Всеки инструмент има type и полета специфични за инструмента.
"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"
  }
]

Настройки за глас и TTS

tts_emotion_enabled
boolean
default:"true"
Дали да се активира емоционален text-to-speech синтез
voice_stability
number
default:"0.70"
Настройка за стабилност на гласа (0-1). По-високо = по-последователен глас
voice_similarity
number
default:"0.50"
Настройка за прилика на гласа (0-1). По-високо = по-близо до оригиналния глас
speech_speed
number
default:"1.00"
Множител за скорост на говорене (0.7-1.2)
llm_temperature
number
default:"0.10"
Настройка за LLM temperature (0-1). По-ниско = по-детерминистично
synthesizer_provider_id
integer
ID на персонализиран TTS доставчик. Избира се автоматично на базата на езика, ако не е предоставено. Използвайте Get Synthesizer Providers endpoint за да откриете наличните доставчици.
transcriber_provider_id
integer
ID на персонализиран STT доставчик. Избира се автоматично на базата на езика, ако не е предоставено. Само за pipeline режим. Използвайте Get Transcriber Providers endpoint за да откриете наличните доставчици.

Настройки за поведение при обаждане

allow_interruptions
boolean
default:"true"
Дали да се позволяват прекъсвания от обаждащия се.
Не може да се деактивира за multimodal и dualplex режими.
fillers
boolean
default:"false"
Дали да се използват filler звуци по време на обработка (напр. “um”, “let me check”).
Достъпно само за pipeline режим.
filler_config
object
Персонализирани профили за filler думи по категория. Ако не са предоставени, се задават по подразбиране на базата на езика на асистента. Всяка категория е масив от кратки фрази.
  • positive: Filler думи за позитивни/утвърдителни отговори (напр. “Great!”, “Perfect!”)
  • negative: Filler думи за негативни/неутрални отговори (напр. “Hmm.”, “Mhm.”)
  • question: Filler думи при обработка на въпрос (напр. “Hmm.”, “Let me think.”)
  • neutral: Filler думи за неутрални потвърждения (напр. “Ok.”, “I understand.”)
"filler_config": {
  "positive": ["Super!", "Great!", "Perfect!"],
  "negative": ["Hmm.", "Mhm.", "I see."],
  "question": ["Hmm.", "Let me check.", "Good question."],
  "neutral": ["Ok.", "I understand.", "Noted."]
}
record
boolean
default:"false"
Дали да се записва обаждането
enable_noise_cancellation
boolean
default:"true"
Дали да се активира шумопотискане
wait_for_customer
boolean
default:"false"
Ако е true, асистентът чака клиентът да заговори първи

Настройки за време

max_duration
integer
default:"600"
Максимална продължителност на обаждането в секунди (20-1200)
max_silence_duration
integer
default:"40"
Максимална продължителност на тишина преди повторно ангажиране в секунди (1-360)
max_initial_silence_duration
integer
Максимална тишина в началото на обаждането преди приключване (1-120 секунди). Незадължително.
ringing_time
integer
default:"30"
Максимално време за звънене преди отказване (1-60 секунди)

Настройки за повторно ангажиране

reengagement_interval
integer
default:"30"
Интервал за повторно ангажиране в секунди (7-600)
reengagement_prompt
string
Персонализиран prompt за съобщения за повторно ангажиране (максимум 1000 символа)Пример: "Are you still there? Do you have any other questions?"

Настройки за гласова поща

end_call_on_voicemail
boolean
default:"true"
Дали да се приключи обаждането когато се засече гласова поща
voice_mail_message
string
Съобщение за оставяне в гласовата поща преди затваряне (максимум 1000 символа)

Разпознаване на край

endpoint_type
string
default:"vad"
Тип разпознаване на гласова активност. Опции: vad, ai
endpoint_sensitivity
number
default:"0.5"
Ниво на чувствителност на endpoint (0-5)
interrupt_sensitivity
number
default:"0.5"
Ниво на чувствителност за прекъсвания (0-5)
min_interrupt_words
integer
Минимален брой думи преди да се позволи прекъсване (0-10). Задайте за активиране.

Околен звук

ambient_sound
string
Фонов околен звук. Опции: off, office, city, forest, crowded_room, cafe, nature
ambient_sound_volume
number
default:"0.5"
Ниво на звука на околния звук (0-1)

Конфигурация на webhook

is_webhook_active
boolean
default:"false"
Дали webhook уведомленията са активни
webhook_url
string
URL на webhook за уведомления след обаждане. Задължително ако is_webhook_active е true.
send_webhook_only_on_completed
boolean
default:"true"
Дали да се изпращат webhook-ове само при завършени обаждания (не неуспешни/неотговорени)
include_recording_in_webhook
boolean
default:"true"
Дали да се включва URL за записа в webhook payload-а

Оценяване след обаждане

post_call_evaluation
boolean
default:"true"
Дали да се активира AI оценяване след обаждане
post_call_schema
array
Дефиниция на схемата за извличане на данни след обаждане
"post_call_schema": [
  {"name": "status", "type": "bool", "description": "Was the call objective achieved"},
  {"name": "summary", "type": "string", "description": "Brief summary of the call"}
]

Променливи

variables
object
Ключ-стойност двойки на персонализирани променливи достъпни в prompt-овете чрез {{variable_name}}
"variables": {
  "company_name": "Acme Corp",
  "product": "Premium Widget",
  "support_email": "support@acme.com"
}

Настройки за приключена беседа

conversation_inactivity_timeout
integer
default:"30"
Минути бездействие в чата преди беседата да се счита за приключена (1-1440)
conversation_ended_retrigger
boolean
default:"false"
Дали да се позволява повторно задействане на беседата след като приключи поради бездействие
conversation_ended_webhook_url
string
Webhook URL извикван когато chat беседата приключи поради бездействие. Отделен от основния call webhook.

Примерни заявки

Pipeline режим асистент

{
  "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 режим асистент

{
  "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 support agent...",
  "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 режим асистент

{
  "name": "Premium Agent",
  "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
}

Отговор

message
string
Съобщение за успех потвърждаващо създаването на асистента
data
object
{
  "message": "Assistant created successfully",
  "data": {
    "id": 789,
    "name": "Sales Assistant",
    "status": "inactive",
    "type": "outbound",
    "mode": "pipeline"
  }
}