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

Twilio Flex坐席拒接来电后转回IVR功能报错咨询

Twilio Flex坐席拒接来电自动转回IVR故障解决方案

故障现象

已基于现有插件实现坐席接起后转接Studio IVR功能,新增拒接转接逻辑后触发报错,通话未完成转接:

twilio-flex.unbundled-react.min.js:1574 Error on afterRejectTask: SyntaxError: Unexpected token < in JSON at position 0

原有新增监听器代码如下:

flex.Actions.addListener("afterRejectTask", async (payload, abortFunction) => {
    let url: string = payload.task.attributes.transferToIvrUrl;
    let menu: string = 'hangup';
    await request(url, { CallSid: payload.sid, menu });
});

请求目标为Twilio Function,正常返回TwiML格式响应:

<Response>
  <Enqueue workflowSid="WWcc1a650e4175089538d754a6c2e15a98">
    <Task>{"transferToIvrUrl": "https://my-twilio-function-service.twil.io/studio-flex-transfer-helper"}</Task>
  </Enqueue>
</Response>

控制台上下文截图:
控制台额外上下文信息


根因分析

  • 响应解析错误:插件内置的request方法默认将接口响应当作JSON格式解析,但Twilio Function返回的是XML格式的TwiML内容,首字符为<,不符合JSON语法规则,直接触发解析报错,中断后续逻辑。
  • 参数传值错误:RejectTask事件的payload中,payload.sid是当前待处理任务(Task)的SID,并非通话的CallSid,传值错误会导致Twilio Function找不到目标通话,转接指令无法生效。
  • 监听器时机错误:afterRejectTask触发时,Flex已经执行完默认拒接逻辑,会将任务重新放回队列分配给其他坐席,此时再发送转接指令会和系统默认路由逻辑冲突,无法拿到通话控制权。

修复步骤

  • 调整监听器挂载时机:将afterRejectTask替换为beforeRejectTask,在系统执行默认拒接路由前先触发转接逻辑,抢占通话控制权。
  • 修正CallSid取值:从任务属性中读取正确的通话SID,即payload.task.attributes.call_sid,不要直接使用payload.sid。
  • 替换请求方法:弃用默认解析JSON的request工具,改用原生fetch发送请求,无需解析响应内容(TwiML是给Twilio语音平台执行的指令,不需要前端处理返回值)。
    修复后的完整监听器代码:
    flex.Actions.addListener("beforeRejectTask", async (payload) => {
        const transferUrl = payload.task.attributes.transferToIvrUrl;
        const callSid = payload.task.attributes.call_sid;
        // 发送表单格式请求,不做JSON响应解析
        await fetch(transferUrl, {
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            body: new URLSearchParams({
                CallSid: callSid,
                menu: "hangup"
            })
        });
    });
    
  • 可选校验项:确认Twilio Function的响应头已设置Content-Type: text/xml,确保Twilio平台能正确识别返回的TwiML指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:49:16