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

PythonAnywhere上Flask应用无法通过ngrok+Twilio发送WhatsApp消息

问题解决方案

一、ngrok本地Web界面(127.0.0.1:4040)无法访问的解决办法

  • 确认ngrok进程正在运行:必须先在本地终端执行转发命令(比如ngrok http 5000,端口对应你的Flask应用端口),未启动进程的话4040端口自然无法连接。
  • 绕过Web界面直接获取转发链接:如果4040端口始终无法访问,直接查看启动ngrok的终端输出,找到Forwarding行的公网链接(即你用到的https://c664-54-226-131-176.ngrok-free.app),无需依赖Web界面。
  • 排查本地拦截:暂时关闭防火墙、杀毒软件,部分安全工具会阻止ngrok的本地端口通信。
  • 更新ngrok版本:旧版本可能存在兼容性问题,替换为最新版后重试。

二、PythonAnywhere收到POST请求但无法回复消息的解决办法

  • 确保Flask路由返回正确的TwiML格式:Twilio要求回复必须是符合规范的XML,示例代码如下:
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route('/twilio', methods=['POST'])
def twilio_reply():
    # 生成回复内容
    resp = MessagingResponse()
    resp.message("这是来自Flask的回复消息")
    # 必须返回XML格式及正确的Content-Type
    return str(resp), 200, {'Content-Type': 'application/xml'}

if __name__ == '__main__':
    app.run(debug=True)
  • 检查Twilio Sandbox的Webhook配置:确保完整填写带路径的地址(如https://c664-54-226-131-176.ngrok-free.app/twilio),且请求方法选择POST。
  • 查看PythonAnywhere日志:进入PythonAnywhere的Web应用控制台,查看错误日志,排查是否存在导入失败、代码逻辑错误或权限问题。
  • 验证响应有效性:用curl或Postman向你的ngrok链接发送POST请求,检查返回的XML是否符合TwiML规范,确认PythonAnywhere能正常生成响应。
  • 查看Twilio控制台日志:在Twilio的Monitor -> Logs中查看消息发送记录,里面会明确标注失败原因(如响应超时、格式错误等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:27:17