通话进行中时调用 POST /api/v1/voice/calls/{id}/control。运行这通电话的 Worker 约 2 秒内取到指令,接口返回 202。联系不上运行这通电话的 Worker 时,接口返回 503(code call_unreachable),指令不会执行。
type | 作用 |
|---|---|
say | Agent 说完当前这句话后说出 text;带 "interrupt": true 时立即打断并说出 |
note | 把 text 告诉 Agent(不读出来),从下一句回复起参考它;逐字稿里会标出这条提示 |
end | Agent 先说出 text(如果有)再挂断;电话通话不带 text 时立即挂断 |
这类通话的 ended_reason 为 api_ended。工作台的通话详情页也有同样的控制按钮。
POST /api/v1/voice/calls/{id}/listen(可带 { "channels": 2 })返回 listen_url,2 分钟内可以连接。这是一个 WebSocket:先收到一条 JSON {"type":"start","sampleRate":8000,"channels":1,"encoding":"pcm_s16le"},之后是二进制的 16 位小端 PCM,即来电者听到的内容(双方混音;channels: 2 时左声道是来电者、右声道是 Agent)。通话结束时连接关闭。音频直接来自运行通话的 Worker,不经过 EvaSay 的控制面;工作台通话详情页的“旁听”按钮用的是同一个地址。