通話進行中傳送 POST /api/v1/voice/calls/{id}/control。執行通話的 Worker 約 2 秒內收到指令,API 回應 202。執行通話的 Worker 無法連線時,API 回應 503(code call_unreachable),指令不會執行。
type | 效果 |
|---|---|
say | Agent 說完目前這句後說出 text;帶 "interrupt": true 則立刻說 |
note | 把 text 告訴 Agent(不念出來),從下一次回答起納入考量;逐字稿會標記 |
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 位元小端序 PCM 的二進位影格,內容是來電者聽到的聲音(兩邊混音;channels: 2 時左聲道來電者、右聲道 Agent)。通話結束時關閉。音訊直接來自執行通話的 Worker,不經過 EvaSay 的控制平面;工作台通話頁面的旁聽按鈕用的是同一個網址。