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

使用Python-Flask设置Twilio的StatusCallback回调URL无返回问题求助

可能遗漏的配置及问题修正
  • Twilio控制台号码配置错误:确认你在Twilio的号码设置页面填写的StatusCallback地址,是ngrok生成的公网HTTPS域名+/webhook路径,ngrok每次重启都会生成新的随机域名,不要使用历史旧域名填写,也不要直接填本地127.0.0.1地址。
  • ngrok端口映射不匹配:启动ngrok时的命令需要和Flask运行的端口对应,Flask默认运行在5000端口,ngrok启动命令应为ngrok http 5000,不要填错端口。
  • Flask服务监听地址限制:默认Flask只监听本地127.0.0.1的请求,ngrok的转发请求无法被接收,需要修改启动代码为app.run(debug=True, host='0.0.0.0'),允许内网所有地址访问。
  • 代码取值逻辑错误:request.values.get()只能接收单个Key作为参数,你传入列表的写法会直接返回None甚至引发服务报错返回500,导致Twilio请求失败无日志,需要修正为逐个取值:
from flask import Flask, request, abort
import logging

logging.basicConfig(level=logging.INFO)
app = Flask(__name__)

@app.route('/webhook', methods =['POST', 'GET'])
def webhook():
    call_sid = request.values.get('CallSid')
    from_num = request.values.get('From')
    to_num = request.values.get('To')
    direction = request.values.get('Direction')
    logging.info(f'Status: CallSid={call_sid}, From={from_num}, To={to_num}, Direction={direction}')
    return ('', 204)

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
  • Twilio回调事件未勾选:确认你在Twilio控制台的StatusCallback配置中,勾选了需要触发回调的对应通话事件(如呼叫发起、接通、挂断等),未勾选的事件Twilio不会发送回调请求。
  • 先排查请求链路:可以先查看ngrok自带的控制台页面,确认是否有Twilio的请求进入:如果ngrok无请求,直接排查Twilio端的URL配置;如果ngrok有请求但状态码为4XX/5XX,对应排查路径、代码逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:36:03