Hozz létre egy ügynököt sablonból, és ha szeretnéd, ugyanabban a kérésben add meg a mezőit. template nélkül üresen indul; a GET /api/v1/voice/catalog felsorolja a sablonokat, valamint az ügynök által elfogadott nyelveket és hangokat. A sablonok angolul és kínaiul készültek, ezért más nyelvhez küldje el a system_prompt és a first_message mezőt az adott nyelven. Vagy a teljes kérés mentésre kerül, vagy nem jön létre ügynök, így egy elutasított kérés javítás után újra elküldhető. A válaszban lévő dashboard_url az ügynök oldala az irányítópulton, ahol a böngészőben beszélhet a piszkozattal. Minden ügynök az EvaSay ASR-en, az EvaSay LLM-en és az EvaSay TTS-en fut, amelyeket az EvaSay hívásonként a nyelv és a terhelés alapján választ, és amelyek benne vannak a hívás árában; más szolgáltatók fiókjait nem kell beállítanod.
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..."
}'
Ezek bármelyik mezőjét frissítheted a PATCH /api/v1/voice/agents/{id} hívással:
| Mező | Megjegyzések |
|---|---|
name, first_message, system_prompt | Szöveg |
status | A published új verzióként közzéteszi a piszkozatot; a draft megszünteti a hívásfogadást |
language | A 27 nyelv egyike, pl. en, zh, es, de, vagy multi, hogy kövesse a hívó nyelvét |
temperature | 0-100 |
max_duration_sec, silence_timeout_sec | Hívási korlátok |
interruptible, end_call_enabled | Logikai értékek |
confirm_details | Logikai érték; a számokat és neveket visszamondja, és megerősítteti őket |
ai_disclosure | Logikai érték, alapértelmezés true; az első üzenete előtt az ügynök a hívás nyelvén elmondja, hogy a hívó mesterséges intelligenciával beszél (kimarad, ha az első üzenet már ezt mondja) |
voicemail_detection | Logikai érték; a kimenő hívások először hallgatnak, és hangpostánál véget érnek |
voicemail_message | A hangpostán hagyott üzenet, használhat {{variables}} értékeket; ha nincs, lerakja a telefont |
transfer_number | Az átkapcsolás száma, nemzetközi formátumban |
transfer_destinations | Legfeljebb 9 további szám, [{name, number, when}]; az ügynök a when alapján választ egyet |
transfer_briefing | Logikai érték; aki először felveszi, meghallja az ügynök összefoglalóját a hívásról |
pronunciations | Legfeljebb 100 elem [{word, say, case_sensitive}]; a hang a word helyett a say értéket mondja |
idle_messages | Legfeljebb 3 emlékeztető, amelyeket sorban mond el egy elhallgatott hívónak, mielőtt a hívás véget ér |
noise_reduction | Logikai érték; a hívó háttérzaját kiszűri, mielőtt meghallanák |
recording_enabled | Logikai érték; a hívásokat két csatornán rögzíti (a hívó balra, az ügynök jobbra) |
recording_consent | announce, ask (csak akkor marad meg, ha a hívó beleegyezik) vagy none |
recording_notice | Az elsőként elmondott tájékoztatás vagy kérdés; üresen a hívás nyelvén beépített szöveg |
handoffs | Legfeljebb 5 elem [{agent_id, when}]: más ügynökök, akiknek ez átadhat egy hívást |
knowledge_base_id | Egy a tudásbázisaid közül |
vocabulary_id | Egy a szótáraid közül; a benne szereplő kifejezéseket megbízhatóbban ismeri fel, ha a hívó kimondja őket |
voice_id | Egy beépített EvaSay-hang azonosítója vagy egy klónozott hangod (clone:…) |
A beépített hangok a nyelvtől függnek: a kínainak ming-designed-female-clear és ming-designed-female-warm (női), ming-designed-male-clear és ming-designed-male-friendly (férfi) van, a többi nyelvnek F1–F5 (női) és M1–M5 (férfi). Az a beépített hang, amely nem beszéli az ügynök nyelvét, lecserélődik az azonos nemű hangra, amelyik igen. A régebbi tts_voice_id mezőnév továbbra is elfogadott. Minden más voice_id érték, illetve a még nem kész klónozott hang elutasításra kerül.
Az analysis_config határozza meg, mit kell megállapítani minden hívásból a végén: summary (alapértelmezés true), summaryLanguage, successCriteria (mit ér el egy sikeres hívás), fields (legfeljebb 20 kinyerendő {name, type, description}, ahol a type string, number vagy boolean) és scorecard (legfeljebb 10 {name, description, weight}, súly 1–5). Az eredmények a hívás analysis mezőjében és a call.analyzed webhookban jelennek meg.
Egy ügynök mezőinek módosítása a piszkozatát módosítja. A hívások a közzétett verziót használják tovább, amíg közzé nem teszed a piszkozatot a POST /api/v1/voice/agents/{id}/publish hívással (opcionálisan note mezővel), vagy a status: "published" értékkel ugyanabban a PATCH-ben. Minden közzététel megőriz egy számozott verziót; az ügynök published_version mezője megmondja, melyiket használják a hívások. Egy hívás azon a verzión marad, amely az indulásakor élesben volt, így a hívás közbeni közzététel nem változtat rajta. A vezérlőpultról indított tesztbeszélgetések a piszkozatot használják.
A GET /agents/{id}/versions kilistázza a verziókat, a POST /agents/{id}/versions/{version}/restore pedig visszaállít: az új hívások azt a verziót használják, és a piszkozat azzá válik. Az ügynök neve, telepítése, a widget kinézete és az értesítések nincsenek verziózva, és azonnal módosulnak, ahogy a tudásbázis dokumentumai is.