Envoyez POST /api/v1/voice/calls/{id}/control pendant un appel. Le worker qui exécute l’appel prend la commande en environ 2 secondes ; l’API répond 202. Si le worker qui exécute l’appel est injoignable, l’API répond 503 (code call_unreachable) et la commande n’est pas exécutée.
type | Ce qui se passe |
|---|---|
say | L’agent dit text après sa phrase en cours, ou tout de suite avec "interrupt": true |
note | L’agent reçoit text (sans le dire) et en tient compte dès sa réponse suivante ; la transcription le note |
end | L’agent dit text s’il est fourni, puis raccroche ; un appel téléphonique sans text est raccroché aussitôt |
Le ended_reason de l’appel est alors api_ended. La page de l’appel dans le tableau de bord offre les mêmes commandes.
POST /api/v1/voice/calls/{id}/listen (avec éventuellement { "channels": 2 }) renvoie une listen_url à ouvrir dans les deux minutes. C’est un WebSocket : d’abord un message JSON {"type":"start","sampleRate":8000,"channels":1,"encoding":"pcm_s16le"}, puis des trames binaires de PCM 16 bits little-endian avec ce qu’entend l’appelant (les deux voix mélangées ; avec channels: 2, l’appelant à gauche et l’agent à droite). Il se ferme à la fin de l’appel. L’audio vient directement du worker qui exécute l’appel, pas du plan de contrôle d’EvaSay ; le bouton Écouter de la page de l’appel utilise la même adresse.