Wyślij POST /api/v1/voice/calls/{id}/control, gdy połączenie trwa. Worker obsługujący połączenie odbiera polecenie w ciągu około 2 sekund; API odpowiada 202. Jeśli workera obsługującego połączenie nie da się osiągnąć, API odpowiada 503 (code call_unreachable), a polecenie nie zostaje wykonane.
type | Co się dzieje |
|---|---|
say | Agent mówi text po zakończeniu bieżącego zdania albo od razu przy "interrupt": true |
note | Agent dostaje text (nie jest wypowiadane) i uwzględnia to od następnej odpowiedzi; transkrypcja to odnotowuje |
end | Agent mówi text, jeśli podano, po czym się rozłącza; połączenie telefoniczne bez text jest rozłączane od razu |
ended_reason połączenia ma wtedy wartość api_ended. Strona połączenia w panelu ma te same elementy sterowania.
POST /api/v1/voice/calls/{id}/listen (opcjonalnie { "channels": 2 }) zwraca listen_url, którą można otworzyć w ciągu dwóch minut. To WebSocket: najpierw wiadomość JSON {"type":"start","sampleRate":8000,"channels":1,"encoding":"pcm_s16le"}, potem ramki binarne 16-bitowego PCM little-endian z tym, co słyszy rozmówca (oba głosy zmieszane; przy channels: 2 rozmówca po lewej, agent po prawej). Zamyka się, gdy połączenie się kończy. Dźwięk płynie prosto z workera obsługującego połączenie, z pominięciem płaszczyzny sterowania EvaSay; przycisk Słuchaj na stronie połączenia w panelu używa tego samego adresu.