Twilio WhatsApp聊天机器人无响应问题排查求助
WhatsApp-Twilio-Python 自动对话连接故障排查
问题详情
正在搭建基于Twilio的WhatsApp自动对话机器人,按教程操作后出现以下异常:
- 初始执行
ngrok http 5000时触发POST/ 403 Forbidden错误,修改ngrok配置更换网址后该错误消失,但本地主机端口仍显示为4040 - 将ngrok转发URL配置到Twilio后,HTTP请求无任何反馈,无法收到机器人回复
- 测试发现转发URL添加
/message后缀时,Twilio可接收请求并回复,但当前Flask脚本配置的请求路径未生效
运行的Flask脚本
from flask import Flask, request from twilio.twiml.messaging_response import MessagingResponse app = Flask(__name__) @app.route("/wasms", methods=['POST']) def wa_sms_reply(): """Respond to incoming calls with a simple text message.""" msg = request.form.get('Body').lower() print("msg-->", msg) resp = MessagingResponse() reply = resp.message() if msg == "hi": reply.body("hello!") return str(resp) if __name__ == "__main__": app.run(debug=True)
已尝试的排查操作
- 执行
ngrok http https://localhost:5000 - 关闭Mac防火墙
- 在Twilio后台允许所在地区访问
- 配置
config.hosts << /.*.ngrok.io/及skip_before_action :verify_authenticity_token
排查建议
- 路径匹配校验:Twilio配置的Webhook URL必须与Flask路由完全一致。当前脚本路由为
/wasms,需将Twilio的Webhook设置为{ngrok转发URL}/wasms,而非/message——之前/message能生效说明路径匹配存在偏差。 - 端口一致性检查:确认Flask默认运行在5000端口(脚本中
app.run(debug=True)默认端口),ngrok启动命令为ngrok http 5000。若本地显示4040,检查是否有其他进程占用5000端口导致Flask切换端口,或ngrok启动命令有误。 - 请求日志分析:启动ngrok后访问
http://localhost:4040(ngrok监控页面),查看Twilio发送的请求详情,包括请求路径、状态码、响应内容,确认请求是否到达Flask的/wasms路由。 - Twilio Webhook配置验证:在Twilio WhatsApp Sandbox设置中,确认「WHEN A MESSAGE COMES IN」的URL为
{ngrok_url}/wasms,请求方法选择POST。 - Flask调试日志查看:运行Flask时观察控制台输出,确认是否有Twilio的请求到达,以及请求路径是否匹配。若无请求日志,说明Twilio的Webhook未正确指向你的ngrok URL。
- 签名验证临时关闭:
skip_before_action :verify_authenticity_token是Rails框架的配置,对Flask无效。可暂时在Twilio控制台关闭Webhook签名验证,测试是否能正常接收请求,后续再重新配置签名验证逻辑。
内容的提问来源于stack exchange,提问作者Mateo Severi
相关产品推荐
相关产品推荐

