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

关于通过Twilio向WhatsApp发送Polly语音及音频消息的技术问询

问题解答:Polly音频通过Twilio发送至WhatsApp的可行性与故障修复

首先明确:完全可以通过Twilio将Amazon Polly生成的文本转语音音频发送到WhatsApp,你的代码核心逻辑没问题,故障大概率出在音频文件的可访问性、格式合规性或Twilio的媒体校验环节,以下是具体排查和修复步骤:

1. 排查音频文件的可访问性

  • Twilio需要能直接抓取你提供的media_url,请先在浏览器中打开该URL,确认能直接下载并播放MP3文件:
    • 如果链接需要登录验证、token过期或权限限制,Twilio无法获取音频,导致发送失败。
    • 建议为Firebase存储的文件生成长期有效的公开访问链接,或配置Firebase存储的IP白名单允许Twilio服务器访问(公开链接实现更便捷)。

2. 验证音频格式合规性

WhatsApp通过Twilio接收音频有明确要求,Polly生成的音频默认符合,但需确认:

  • 格式:必须是MP3
  • 比特率:64kbps-128kbps(Polly默认128kbps,符合要求)
  • 采样率:44.1kHz或48kHz
  • 文件大小:不超过16MB

3. 代码优化与调试

你的代码结构正确,可尝试以下调整:

  • 暂时移除body字段,单独发送音频:部分地区的WhatsApp客户端对文本+媒体的组合消息可能存在兼容性问题,先单独测试音频发送是否成功。
  • 打印完整异常信息:捕获异常时输出str(e)的完整内容,或直接查看Twilio控制台的消息日志,里面会有具体错误代码(比如12300代表无效媒体URL,12302代表媒体格式不支持)。

修正后的示例代码:

path = "https://firebasestorage.googleapis.com/v0/b/compartamosdemo-50264.appspot.com/o/10557652_confirmacion.mp3?alt=media&token=d22c70ba-b123-4670-8a11-4adef74b0699"

message = ""
try:
    # 先单独发送音频,排除文本干扰
    message = client.messages.create(
        from_='whatsapp:+141....',  # 替换为你的Twilio WhatsApp号码
        to='whatsapp:+57319....',    # 替换为接收方WhatsApp号码
        media_url=[path]
    )
    print(f"发送成功,消息SID: {message.sid}")
except Exception as e:
    # 输出完整错误信息用于调试
    error_detail = str(e)
    print(f"发送失败: {error_detail}")
    app.logger.error("Error en messages: %s", error_detail)

return str(message)

4. 额外注意事项

  • 如果是刚通过Polly生成的音频,确保已经成功上传到Firebase存储,且文件状态为“已完成”,避免使用未上传完成的临时链接。
  • Twilio的媒体抓取有缓存机制,如果之前用了无效链接,建议更换新URL或等待缓存过期后再测试。

内容的提问来源于stack exchange,提问作者Andrés Darío Suárez Guarnizo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:50:26