You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Twilio Voice Client断开连接并设置Task Router Worker为不可用

捕获Twilio Voice Client注册/注销事件的方案

Twilio Voice Client确实没有原生的注册/注销Webhook,但可以通过以下几种方式实现检测客户端断开、更新Task Router Worker状态的需求:

1. 客户端侧事件主动上报

在Voice Client的代码中监听连接状态变化,当检测到断开时主动通知后端,再由后端更新Worker状态:

  • JavaScript客户端可监听device.disconnect事件,触发时调用你的后端接口:
    device.on('disconnect', function(connection) {
      // 发送请求到你的后端,标记对应Worker为不可用
      fetch('/api/update-worker-status', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ workerSid: 'YOUR_WORKER_SID' })
      });
    });
    
  • 补充:如果客户端意外崩溃(如浏览器强制关闭),这种方法可能失效,建议搭配心跳机制做兜底。

2. Task Router Activity超时机制

利用Task Router的Activity超时功能实现自动状态切换:

  • 创建一个「在线」状态的Activity,设置合理的超时时间(比如30秒)
  • 让Voice Client每隔一段时间(比如20秒)向你的后端发送心跳请求,后端调用Task Router API刷新Worker的Activity超时时间
  • 若客户端断开,心跳停止,超时后Worker会自动切换到预设的「不可用」Activity

3. 借助Call Status Webhook间接判断

如果客户端用于接听来电,可通过通话结束后的Call Status Webhook触发状态更新:

  • 当Twilio发送call.status=completed的Webhook时,在你的后端处理逻辑中,关联该通话对应的Worker,将其标记为不可用
  • 局限性:仅适用于通话结束后的断开场景,无法覆盖未接来电时的主动注销情况

内容的提问来源于stack exchange,提问作者JonathanT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:22:33