Надішліть POST /api/v1/voice/calls/{id}/control, поки дзвінок триває. Воркер, який веде дзвінок, підхоплює команду приблизно за 2 секунди; API відповідає 202. Якщо воркер, який веде дзвінок, недоступний, API відповідає 503 (code call_unreachable), і команда не виконується.
type | Що відбувається |
|---|---|
say | Агент вимовляє text після поточного речення або одразу, якщо вказано "interrupt": true |
note | Агентові повідомляється text (не вимовляється), і він ураховує це з наступної відповіді; у розшифровці це позначається |
end | Агент вимовляє text, якщо його задано, і кладе слухавку; телефонний дзвінок без text завершується одразу |
ended_reason дзвінка тоді дорівнює api_ended. На сторінці дзвінка в панелі є ті самі елементи керування.
POST /api/v1/voice/calls/{id}/listen (за бажання { "channels": 2 }) повертає listen_url, яку можна відкрити протягом двох хвилин. Це WebSocket: спершу JSON-повідомлення {"type":"start","sampleRate":8000,"channels":1,"encoding":"pcm_s16le"}, потім бінарні кадри 16-бітного little-endian PCM із тим, що чує абонент (обидва голоси змішані; з channels: 2 абонент ліворуч, агент праворуч). Він закривається, коли дзвінок завершується. Звук іде прямо від воркера, що веде дзвінок, оминаючи площину керування EvaSay; кнопка «Слухати» на сторінці дзвінка в панелі використовує ту саму адресу.