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

如何确认Twilio凭证正确性?Flask IVR应用401错误排查

问题排查方向

1. 未处理Twilio请求签名验证

Twilio向Flask路由发送请求时会携带签名信息,若未在Flask中验证该签名,或验证逻辑有误,会直接返回401。需用Twilio Python库完成签名验证:

from twilio.request_validator import RequestValidator
from flask import request, abort

@app.route('/ivr', methods=['POST'])
def ivr():
    validator = RequestValidator(auth_token)
    twilio_signature = request.headers.get('X-Twilio-Signature')
    # 注意:此处URL需与Twilio配置的完全一致,包含协议、域名、路径
    target_url = 'https://9mr9cmz8-8000.inc1.devtunnels.ms/ivr'
    
    if not validator.validate(target_url, request.form, twilio_signature):
        abort(401)
    # 后续业务逻辑

2. 端口转发URL存在访问限制

VS Code的dev tunnels若设置了访问权限限制(如仅允许特定用户访问),Twilio服务器无法通过验证,会返回401:

  • 确认隧道设置为公开访问模式,无访问者限制
  • 用匿名浏览器打开webhook URL,检查是否能正常返回200(而非401)

3. Twilio凭证或权限问题

  • 核对account_sid和auth_token是否与Twilio控制台完全一致,注意大小写、特殊字符
  • 确认目标号码属于当前Twilio账号,无功能限制
  • 可尝试用Twilio CLI重新设置webhook,验证凭证有效性:
twilio api:core:incoming-phone-numbers:update --sid Pxxxxxxxxxxxxxxxxxxx0 --voice-url https://9mr9cmz8-8000.inc1.devtunnels.ms/ivr --voice-method POST

4. Flask路由配置错误

确保Flask路由明确允许POST方法,且无额外身份验证中间件(如flask-login的login_required)误拦截Twilio请求:

@app.route('/ivr', methods=['POST'])  # 必须指定POST方法
def handle_ivr():
    # 业务处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:42:37