Send og modtag et opkalds lyd fra dit eget program, f.eks. dit eget telefonsystem eller din app. Start opkaldet:
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 indeholder et engangstoken og kan åbnes inden for 15 minutter. encoding er pcm_s16le (16-bit little-endian PCM med en sample_rate på 8000, 16000 eller 24000) eller mulaw (8 kHz μ-law). Lyden går begge veje som binære rammer i det format, helst på 20 ms hver. Tekstrammer er JSON:
| Retning | Beskeder |
|---|---|
| Dig → EvaSay | {"type":"dtmf","digits":"12#"} tastetryk; {"type":"end"} lægger på; {"type":"text","text":"…"} ord, opringeren skrev ("input":"button" for et tappet svar); {"type":"context","text":"…","key":"cart"} hvad din app melder (agenten svarer ikke på det); {"type":"typing"} kunden skriver (send den cirka én gang i sekundet, mens de skriver; agenten venter 2 s med at tale); {"type":"tool_result","id":"…","result":{…}} (eller "error") svaret fra en sidefunktion |
| EvaSay → dig | start (med callId); clear (opringeren afbrød: smid agentens endnu ikke afspillede lyd væk); transcript (role, text, final og input for skrevne ord); user_started_speaking, user_stopped_speaking, agent_started_speaking, agent_stopped_speaking; cards (cards, quick_replies); tool (id, name, arguments: kør en af dine sidefunktioner); notice (code: too_fast eller limit for skrevne ord); ended (med reason, derefter lukker socket'en) |
Agenten hilser, så snart du forbinder. user_id og page_tools (de sidefunktioner, din app svarer på, se nedenfor) kan føjes til anmodningen. Opkald afregnes pr. minut som alle andre, med de samme opkaldsposter, den samme analyse og de samme webhooks.