Skicka och ta emot ett samtals ljud från ditt eget program, till exempel ditt eget telefonsystem eller din app. Starta samtalet:
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 }'
websocket_url i svaret innehåller en engångstoken och kan öppnas inom 15 minuter. encoding är pcm_s16le (16-bitars little-endian PCM med en sample_rate på 8000, 16000 eller 24000) eller mulaw (8 kHz μ-law). Ljudet går åt båda håll som binära ramar i det formatet, helst på 20 ms vardera. Textramar är JSON:
| Riktning | Meddelanden |
|---|---|
| Du → EvaSay | {"type":"dtmf","digits":"12#"} knapptryckningar; {"type":"end"} lägger på; {"type":"text","text":"…"} ord som uppringaren skrivit ("input":"button" för ett knackat svar); {"type":"context","text":"…","key":"cart"} vad din app rapporterar (agenten svarar inte på det); {"type":"typing"} kunden skriver (skicka den ungefär en gång i sekunden medan de skriver; agenten väntar 2 s med att tala); {"type":"tool_result","id":"…","result":{…}} (eller "error") svaret från en sidfunktion |
| EvaSay → du | start (med callId); clear (uppringaren avbröt: släng agentens ännu ej spelade ljud); transcript (role, text, final och input för skrivna ord); user_started_speaking, user_stopped_speaking, agent_started_speaking, agent_stopped_speaking; cards (cards, quick_replies); tool (id, name, arguments: kör en av dina sidfunktioner); notice (code: too_fast eller limit för skrivna ord); ended (med reason, därefter stängs socketen) |
Agenten hälsar så fort du ansluter. user_id och page_tools (de sidfunktioner din app svarar på, se nedan) kan läggas till i anropet. Samtal debiteras per minut som alla andra, med samma samtalsposter, analys och webhooks.