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

配置Twilio TwiML Bin:呼叫转接带耳语、无人接听转Studio及主叫挂断同步挂断

解决Twilio TwiML Bin主叫挂断后仍进入Studio语音信箱的问题

核心问题分析

主叫挂断后仍触发语音信箱流程,是因为默认情况下<Dial>指令执行完毕后,无论主叫状态如何,Twilio都会继续执行后续TwiML逻辑。要解决这个问题,需要通过Dial回调状态判断来分支处理不同的通话结局。


解决方案步骤

1. 调整主TwiML Bin的<Dial>配置

给<Dial>添加action属性,指定一个回调TwiML Bin来处理通话结束后的状态判断,同时保留耳语和超时设置:

<Response>
  <!-- 配置转接:带耳语、30秒超时,结束后触发回调 -->
  <Dial 
    action="https://your-twilio-domain/handle-dial-status" 
    method="POST" 
    timeout="30"
  >
    <Number whisper="https://your-twiml-bin-url/whisper-twiml">+1234567890</Number>
  </Dial>
</Response>

2. 创建回调处理的TwiML Bin

在这个Bin里,通过Twilio的模板变量CallStatus判断通话状态,只在被叫真正无人接听时才跳转Studio:

<Response>
  {% if CallStatus == "completed" %}
    <!-- 主叫主动挂断,直接终止通话 -->
    <Hangup/>
  {% elif CallStatus == "no-answer" %}
    <!-- 被叫无人接听,跳转Studio语音信箱流程 -->
    <Redirect method="POST">https://studio.twilio.com/v2/Flows/YOUR_STUDIO_FLOW_SID/Executions</Redirect>
  {% else %}
    <!-- 其他状态(如被叫拒接)直接挂断 -->
    <Hangup/>
  {% endif %}
</Response>

3. Studio流程添加前置校验(可选但更稳妥)

在Studio流程的起始节点后,添加Split Based On节点,检查通话状态:

  • 条件:widgets.incoming_call.CallStatus等于completed
  • 满足条件时,直接连接Hangup节点结束流程
  • 不满足条件时,继续执行语音信箱录制逻辑

为什么之前的超时设置无效?

你设置的超时是针对被叫无人接听的等待时长,但主叫挂断属于completed状态,和超时触发的no-answer状态是完全不同的事件。只有通过回调状态判断,才能区分这两种场景,避免误触发语音信箱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:07:51