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

如何在Django+AWS生产环境使用Twilio Webhook接收SMS回复

解决AWS部署后Twilio无法接收SMS回复的问题

1. 确认Twilio Webhook URL配置

  • 必须配置完整的公开可访问URL,比如https://你的AWS域名.com/api/twilio/sms-webhook/,不能只填端点路径(如/api/twilio/sms-webhook/),Twilio需要完整URL才能发起请求。
  • 检查域名、端点路径的拼写和大小写(Django路由区分大小写),避免因拼写错误导致请求失败。

2. 验证AWS端点的可达性与网络配置

  • 用curl或Postman模拟Twilio的POST请求访问你的端点,确认能返回200 OK状态码和合法的TwiML响应(哪怕是空的<Response></Response>)。
  • 检查AWS安全组:确保允许80/443端口的入站请求,可先临时放开所有HTTP/HTTPS请求测试,确认正常后再限制Twilio的IP范围。
  • 若使用负载均衡或反向代理(Nginx/Apache),确认请求能正确转发到Django应用,无拦截或错误重定向。

3. 修复Django后端的Webhook处理逻辑

  • 给处理Webhook的视图添加@csrf_exempt装饰器,因为Twilio请求不会携带Django的CSRF令牌,会被默认的CSRF保护拦截:
    from django.views.decorators.csrf import csrf_exempt
    from django.http import HttpResponse
    from twilio.twiml.messaging_response import MessagingResponse
    
    @csrf_exempt
    def sms_webhook(request):
        if request.method == 'POST':
            incoming_msg = request.POST.get('Body', '').strip()
            # 处理消息逻辑
            resp = MessagingResponse()
            resp.message("已收到你的回复")
            return HttpResponse(str(resp), content_type='application/xml')
        return HttpResponse(status=405)
    
  • 核对URL路由是否正确映射到该视图,同时查看Django日志,确认Twilio请求是否到达后端:无请求记录则是网络问题,有错误码(如403、404)则针对性修复。

4. 检查Twilio控制台的细节配置

  • 在号码设置中,确认“收到消息时”的Webhook使用POST方法,并指向正确URL(GET方法无法完整传递消息参数)。
  • 进入Twilio的Monitor -> Events页面,查看是否有请求失败记录,里面会显示具体错误(如连接超时、SSL错误、4xx状态码),这是排查核心依据。

5. 确认SSL证书有效性

  • Twilio要求生产环境Webhook必须使用HTTPS,确保你的AWS域名配置了有效SSL证书(如AWS Certificate Manager提供的免费证书),自签名或过期证书会被Twilio拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:10:35