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

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

排查建议

  1. 路径匹配校验:Twilio配置的Webhook URL必须与Flask路由完全一致。当前脚本路由为/wasms,需将Twilio的Webhook设置为{ngrok转发URL}/wasms,而非/message——之前/message能生效说明路径匹配存在偏差。
  2. 端口一致性检查:确认Flask默认运行在5000端口(脚本中app.run(debug=True)默认端口),ngrok启动命令为ngrok http 5000。若本地显示4040,检查是否有其他进程占用5000端口导致Flask切换端口,或ngrok启动命令有误。
  3. 请求日志分析:启动ngrok后访问http://localhost:4040(ngrok监控页面),查看Twilio发送的请求详情,包括请求路径、状态码、响应内容,确认请求是否到达Flask的/wasms路由。
  4. Twilio Webhook配置验证:在Twilio WhatsApp Sandbox设置中,确认「WHEN A MESSAGE COMES IN」的URL为{ngrok_url}/wasms,请求方法选择POST。
  5. Flask调试日志查看:运行Flask时观察控制台输出,确认是否有Twilio的请求到达,以及请求路径是否匹配。若无请求日志,说明Twilio的Webhook未正确指向你的ngrok URL。
  6. 签名验证临时关闭:skip_before_action :verify_authenticity_token是Rails框架的配置,对Flask无效。可暂时在Twilio控制台关闭Webhook签名验证,测试是否能正常接收请求,后续再重新配置签名验证逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:15:38