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

TwiML Voice <Play>无法播放Google Cloud Storage URL问题排查

问题分析与解决方案

你的核心问题是Flask接口返回的内容不符合Twilio Voice Webhook的要求:

你当前代码最后返回的是字符串'200',但Twilio调用你的Webhook时,需要接收符合格式的TwiML(Twilio Markup Language)XML响应,才能执行播放音频的操作。你打印的XML是正确的,但没有将其作为有效响应返回给Twilio,导致Twilio无法解析执行播放逻辑。

修正后的代码

@app.route('/hello', methods=['GET', 'POST'])
def welcome():
    name = 'messi'
    url = GCSAgent().search_mp3_file(name)
    print(f'Logging url:{url}')
    response = VoiceResponse()
    response.play(url)
    print(response)
    # 返回正确的TwiML响应,指定Content-Type为XML
    return str(response), 200, {'Content-Type': 'application/xml'}

关键说明

  • str(response)将生成的VoiceResponse对象转换为Twilio能识别的XML字符串
  • 显式设置Content-Type: application/xml,确保Twilio正确解析响应内容
  • HTTP状态码保持200即可,无需返回纯文本'200'

修正后,Twilio就能正常接收并解析TwiML,和使用Play小部件时一样播放GCS存储桶中的MP3文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:23:18