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

如何通过Twilio原生函数实现TaskRouter预约路由与SIP坐席对接

实现方案说明

你描述的呼入转坐席SIP号码的流程完全可以仅通过Twilio Studio、TaskRouter和Twilio Functions原生能力实现,无需引入AWS等第三方服务,具体实现步骤如下:

第一步:配置坐席属性

首先确保你在TaskRouter的坐席(Worker)属性里已经正确存储了SIP号码,参考属性结构:

{
  "contact_uri": "sip:坐席SIP地址@你的SIP域.sip.twilio.com",
  "available": true,
  "skills": ["普通咨询"]
}

第二步:配置Studio呼入入队逻辑

  • 在Studio Flow中添加Enqueue Call控件,连接到呼入触发节点
  • 在控件配置中选择对应TaskRouter工作区,自定义需要携带的任务属性(比如用户来电号码、咨询类型等),属性会同步传递到后续生成的Task中

第三步:配置TaskRouter工作流与分配回调

核心逻辑通过Twilio Function实现,无需外部服务:

部署处理任务分配的Twilio Function

新建一个Twilio Function,运行环境选择Node.js最新版本,参考代码如下:

exports.handler = function(context, event, callback) {
  // 解析TaskRouter传递的分配事件参数
  const taskAttributes = JSON.parse(event.TaskAttributes);
  const workerAttributes = JSON.parse(event.WorkerAttributes);
  
  // 生成桥接通话的TwiML指令
  const twiml = new Twilio.twiml.VoiceResponse();
  const dial = twiml.dial();
  // 读取坐席属性中存储的SIP号码发起呼叫
  dial.sip(workerAttributes.contact_uri);
  
  // 返回符合TaskRouter要求的分配响应
  const response = {
    instruction: "dequeue",
    dequeue_from: taskAttributes.from,
    twiml: twiml.toString()
  };
  
  callback(null, response);
};
  • 给该Function开启TaskRouter相关访问权限,访问权限设置为公开
  • 复制Function的URL,粘贴到对应TaskRouter工作流的Assignment Callback URL配置项,回调触发方式选择POST

第四步:流程测试

按照你预期的流程走测即可:

  • 使用测试号码拨打你的Twilio号码触发Studio流程
  • 确认Task生成后正确进入对应队列,匹配到可用坐席后触发Assignment Callback
  • 验证坐席SIP终端可以正常收到来电,通话桥接正常

注意事项

  • 确保你的SIP终端已经正确注册到Twilio SIP域,或者你配置的SIP号码可以被Twilio正常呼叫
  • 如果需要处理坐席拒接、超时等异常情况,可以在TaskRouter工作流中配置对应的超时、拒接路由规则,也可以在Twilio Function中添加对应的异常处理逻辑
  • 所有运行日志都可以在Twilio控制台的TaskRouter事件日志、Function运行日志中查看,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:36:03