如何通过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
相关产品推荐
相关产品推荐

