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

使用Twilio向通话方流式传输音频时遇无效URL问题求助

Twilio音频流式传输错误(错误码11100)排查与解决

问题场景

  • 已通过ngrok暴露本地服务,浏览器可正常访问生成的stream_url
  • /speak端点返回200状态码,但/stream_audio端点从未被触发
  • Twilio控制台报错码11100,提示“无效URL”

排查与解决步骤


  1. 强制使用HTTPS协议
    Twilio要求所有Webhook和Stream URL必须使用HTTPS,本地开发时url_for默认生成HTTP地址,需手动指定HTTPS scheme:
stream_url = url_for('stream_audio', text=text, _external=True, _scheme='https')

这是触发11100错误的最常见原因,Twilio会直接拒绝HTTP请求。

  1. 确认ngrok地址有效性
    免费版ngrok每次重启会生成新域名,需确保Twilio号码配置的Webhook地址是最新的ngrok地址。同时可通过Twilio控制台的Webhook测试工具直接调用stream_url,验证Twilio服务器能否正常访问该地址。

  2. 处理URL参数编码问题
    若text参数包含空格、标点等特殊字符,未编码的URL会被Twilio判定为无效。需对参数进行URL编码:

from urllib.parse import quote, unquote

# 在generate_voice_response中编码参数
encoded_text = quote(text)
stream_url = url_for('stream_audio', text=encoded_text, _external=True, _scheme='https')

# 在stream_audio中解码参数
text = unquote(request.args.get('text', ""))
  1. 验证TwiML格式正确性
    检查打印的TwiML,确保<Stream>标签的url属性是完整的HTTPS地址,无语法错误。正确的TwiML示例:
<Response>
  <Start>
    <Stream url="https://xxxx-xx-xx-xx-xx.ngrok.io/stream_audio?text=Hi%21%20How%20can%20I%20be%20of%20help%3F" />
  </Start>
</Response>
  1. 允许端点接受多种请求方法
    默认@app.route只接受GET请求,为兼容Twilio的请求方式,修改stream_audio端点:
@app.route("/stream_audio", methods=["GET", "POST"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:57:52