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

使用Flask+Twilio WhatsApp沙箱,消息Body未发送至回调URL

问题解决:Twilio WhatsApp沙箱无法接收消息Body

核心原因

你当前配置的是状态回调URL(Status Callback URL),这个URL仅用于接收消息状态变更(如已读、发送成功)的通知,不会携带用户发送的消息内容(Body字段)。真正负责接收用户消息的是Twilio沙箱中的**“当收到消息时的Webhook URL”**配置项。

修复步骤

  • 登录Twilio控制台,进入WhatsApp沙箱的配置界面
  • 找到「When a message comes in」(当收到消息时)的配置区域
  • 将你的ngrok回调URL(例如https://xxxx.ngrok.io/chatbot/receive)填入该字段,请求方法选择POST
  • 状态回调URL可以保留(用于跟踪消息发送状态),但不要和消息接收的WebHook混淆

验证代码调整

你的Flask代码可以优化为直接回复用户消息,方便测试是否成功接收Body:

from flask import Flask, request, Response
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route("/chatbot/receive", methods=["POST"])
def reply_whatsapp():
    # 获取用户发送的消息内容
    incoming_message = request.form.get('Body', '')
    print(f"用户消息:{incoming_message}")
    
    # 生成Twilio要求的XML响应
    response = MessagingResponse()
    response.message(f"已收到你的消息:{incoming_message}")
    return Response(str(response), mimetype='application/xml')

if __name__ == "__main__":
    app.run(debug=True)

测试流程

  1. 重启Flask服务,确保ngrok隧道正常运行
  2. 使用沙箱绑定的WhatsApp账号,向Twilio沙箱号码发送消息
  3. 查看Flask控制台,即可看到打印的消息Body,同时WhatsApp会收到自动回复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:55:06