Küldd és fogadd egy hívás hangját a saját programodból, például a saját telefonrendszeredből vagy alkalmazásodból. Indítsd el a hívást:
curl https://evasay.com/api/v1/voice/calls/websocket \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "AGENT_ID", "encoding": "pcm_s16le", "sample_rate": 16000 }'
A válasz websocket_url címe egyszeri tokent tartalmaz, és 15 percen belül megnyitható. Az encoding értéke pcm_s16le (16 bites little-endian PCM 8000, 16000 vagy 24000 sample_rate mellett) vagy mulaw (8 kHz-es μ-law). A hang mindkét irányban bináris keretekként halad ebben a formátumban, lehetőleg 20 ms-osakban. A szöveges keretek JSON-ok:
| Irány | Üzenetek |
|---|---|
| Te → EvaSay | {"type":"dtmf","digits":"12#"} billentyűleütések; {"type":"end"} lerakja; {"type":"text","text":"…"} a hívó által begépelt szavak ("input":"button" megérintett válaszhoz); {"type":"context","text":"…","key":"cart"} amit az alkalmazásod jelent (az ügynök nem válaszol rá); {"type":"typing"} az ügyfél éppen gépel (gépelés közben nagyjából másodpercenként küldd; az ügynök 2 mp-ig nem szólal meg); {"type":"tool_result","id":"…","result":{…}} (vagy "error") egy oldalfüggvény válasza |
| EvaSay → te | start (a callId mezővel); clear (a hívó közbeszólt: dobd el az ügynök még le nem játszott hangját); transcript (role, text, final, és input a begépelt szavaknál); user_started_speaking, user_stopped_speaking, agent_started_speaking, agent_stopped_speaking; cards (cards, quick_replies); tool (id, name, arguments: futtasd az egyik oldalfüggvényedet); notice (code: too_fast vagy limit a begépelt szavaknál); ended (a reason mezővel, majd a socket bezárul) |
Az ügynök köszön, amint csatlakozol. A kéréshez hozzáadhatók a user_id és a page_tools (az oldalfüggvények, amelyekre az alkalmazásod válaszol, lásd alább). A hívásokat percenként számláznak, mint bármelyik másikat, ugyanazokkal a hívásnaplókkal, elemzéssel és webhookokkal.