Створіть агента із шаблону, за бажання задавши його поля в тому самому запиті. Без template агент створюється порожнім; GET /api/v1/voice/catalog перелічує шаблони, а також мови й голоси, які можна задати агенту. Шаблони написано англійською та китайською, тож для іншої мови передайте system_prompt і first_message цією мовою. Або зберігається весь запит, або агент не створюється, тому відхилений запит можна надіслати знову після виправлення. dashboard_url у відповіді — сторінка агента в панелі, де можна поговорити з чернеткою в браузері. Кожен агент працює на EvaSay ASR, EvaSay LLM і EvaSay TTS: EvaSay обирає їх для кожного дзвінка за мовою та навантаженням, і вони входять у ціну дзвінка; облікові записи інших провайдерів налаштовувати не потрібно.
curl https://evasay.com/api/v1/voice/agents \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"name": "Front desk",
"language": "en",
"first_message": "Hi, thanks for calling Sunrise Salon. How can I help?",
"system_prompt": "You are the front desk of Sunrise Salon..."
}'
Будь-яке з цих полів оновлюється через PATCH /api/v1/voice/agents/{id}:
| Поле | Примітки |
|---|---|
name, first_message, system_prompt | Текст |
status | published публікує чернетку як нову версію; draft припиняє приймати дзвінки |
language | Одна з 27 мов, наприклад en, zh, es, de, або multi, щоб іти за мовою абонента |
temperature | 0-100 |
max_duration_sec, silence_timeout_sec | Обмеження дзвінка |
interruptible, end_call_enabled | Логічні значення |
confirm_details | Логічне значення; агент повторює вголос числа й імена та просить підтвердити |
ai_disclosure | Логічне значення, за замовчуванням true; перед першим повідомленням агент каже мовою дзвінка, що абонент розмовляє зі штучним інтелектом (пропускається, якщо перше повідомлення вже про це говорить) |
voicemail_detection | Логічне значення; під час вихідних дзвінків агент спершу слухає й завершує дзвінок, потрапивши на автовідповідач |
voicemail_message | Залишається на автовідповідачі, може містити {{variables}}; якщо не задано — агент кладе слухавку |
transfer_number | Номер для переведення дзвінка, у міжнародному форматі |
transfer_destinations | До 9 додаткових номерів, [{name, number, when}]; агент обирає один за when |
transfer_briefing | Логічне значення; той, хто відповів першим, чує стислий переказ дзвінка від агента |
pronunciations | До 100 [{word, say, case_sensitive}]; голос вимовляє say замість word |
idle_messages | До 3 нагадувань, які по черзі вимовляються мовчазному абонентові, перш ніж дзвінок завершиться |
noise_reduction | Логічне значення; фоновий шум абонента фільтрується, перш ніж його почують |
recording_enabled | Логічне значення; дзвінки записуються у два канали (абонент ліворуч, агент праворуч) |
recording_consent | announce, ask (запис зберігається, лише якщо абонент погоджується) або none |
recording_notice | Повідомлення або запитання, що вимовляється першим; порожньо — вбудований текст мовою дзвінка |
handoffs | До 5 [{agent_id, when}]: інші агенти, яким цей може передати дзвінок |
knowledge_base_id | Одна з ваших баз знань |
vocabulary_id | Один з ваших словників; його терміни розпізнаються надійніше, коли їх вимовляє абонент |
voice_id | Ідентифікатор вбудованого голосу EvaSay або один із ваших клонованих голосів (clone:…) |
Вбудовані голоси залежать від мови: у китайської є ming-designed-female-clear і ming-designed-female-warm (жіночі), ming-designed-male-clear і ming-designed-male-friendly (чоловічі), в інших мов — F1–F5 (жіночі) та M1–M5 (чоловічі). Вбудований голос, який не говорить мовою агента, замінюється голосом тієї самої статі, що нею говорить. Попередня назва поля tts_voice_id досі приймається. Будь-яке інше значення voice_id, а також клонований голос, який ще не готовий, відхиляється.
analysis_config визначає, що з'ясовується з кожного дзвінка після його завершення: summary (типово true), summaryLanguage, successCriteria (чого досягає успішний дзвінок), fields (до 20 {name, type, description} для вилучення, де type — string, number або boolean) і scorecard (до 10 {name, description, weight}, вага 1–5). Результати — в analysis дзвінка та у вебхуку call.analyzed.
Зміна полів агента змінює його чернетку. Дзвінки й далі використовують опубліковану версію, доки ви не опублікуєте чернетку через POST /api/v1/voice/agents/{id}/publish (за бажання з note) або з status: "published" у тому самому PATCH. Кожна публікація зберігає пронумеровану версію; published_version в агента показує, яку версію використовують дзвінки. Дзвінок лишається на версії, що була активною на момент його початку, тож публікація під час дзвінка його не змінює. Тестові дзвінки з панелі використовують чернетку.
GET /agents/{id}/versions виводить список версій, а POST /agents/{id}/versions/{version}/restore відкочує: нові дзвінки використовують цю версію, і чернетка стає нею. Назва агента, розгортання, вигляд віджета та сповіщення не версіонуються й змінюються одразу, як і документи його бази знань.