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

如何在保持Media Stream连接时更新TwiML并使用<Say>和<Gather>动词

Twilio 保持Media Stream连接同时使用/的方案

问题背景

通过动词建立双向Media Stream连接后,更新TwiML使用或会覆盖,导致媒体流断开,需要找到不切断连接就能使用这两个动词的方法。

可行方案

1. 使用Call Control API替代TwiML动词

不需要修改原有的TwiML,直接调用Twilio的Call Control API执行对应操作:

  • 播放语音:调用Calls/{CallSid}/Play接口,传入要播放的文本或音频URL,无需替换TwiML,媒体流会保持连接。
  • 收集按键:调用Calls/{CallSid}/Gather接口,配置按键收集规则,同样不会中断现有媒体流。

2. 调整初始TwiML结构,同时包含与/

如果场景允许,将原有的替换为中的动词,在同一个TwiML响应中同时声明媒体流和需要执行的/操作,示例如下:

<Response>
  <!-- 保持双向媒体流连接 -->
  <Stream url="wss://你的媒体流端点地址" />
  <!-- 播放语音 -->
  <Say>您好,正在为您连接媒体流,请稍候</Say>
  <!-- 收集按键 -->
  <Gather numDigits="1" action="/handle-gather">
    <Say>请按1进行下一步操作</Say>
  </Gather>
</Response>

这种方式下,会持续保持连接,和也能正常执行。

3. 在媒体流端点中直接处理音频注入与按键收集

如果必须使用动词,可以在连接的媒体流服务端点中自行实现相关逻辑:

  • 模拟:通过Media Stream的双向通道,直接向Twilio发送合成好的音频数据,实现语音播放效果。
  • 模拟:在端点中监听Twilio推送的DTMF事件,自行处理按键收集、验证和后续逻辑,无需依赖TwiML的动词。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:45:48