如何在Twilio中接收WhatsApp消息并在Python中打印?
解决WhatsApp消息接收后无法打印的问题
排查步骤与解决方案:
确认Webhook配置
登录Twilio控制台,检查你的WhatsApp号码/沙箱的传入消息Webhook地址是否和SMS的一致,都指向你的/sms路由。如果WhatsApp的Webhook未设置或地址错误,请求根本不会发送到你的Python服务。打印完整请求表单数据
修改你的reply函数,先打印整个请求的表单数据,确认Twilio发送的WhatsApp消息包含哪些字段:
from flask import request from twilio.twiml.messaging_response import MessagingResponse @app.route("/sms", methods=['POST']) def reply(): # 打印所有请求表单字段,用于排查 print("完整请求表单数据:", request.form.to_dict()) # 获取消息内容,默认空字符串避免报错 incoming_msg = request.form.get('Body', '').lower() print("接收到的消息内容:", incoming_msg) # 必须返回Twiml响应,否则Twilio可能认为请求失败 response = MessagingResponse() response.message("已收到你的消息") return str(response)
- 区分SMS与WhatsApp消息(可选)
可以通过From字段判断消息类型,方便后续处理:
sender = request.form.get('From', '') if sender.startswith('whatsapp:'): print("【WhatsApp消息】发送方:", sender) else: print("【SMS消息】发送方:", sender)
常见问题说明:
- 如果修改后仍无打印,检查你的Python服务是否能被公网访问(Twilio需要能调用你的Webhook地址,本地开发可使用端口映射工具做内网穿透)。
- 确保函数返回了
str(response),Twilio要求Webhook必须返回Twiml响应,否则可能不会重复发送请求,也会导致你看不到后续的消息打印。
内容的提问来源于stack exchange,提问作者e.iluf
相关产品推荐
相关产品推荐

