【问题标题】:Django + RestFramework + twilio: Getitng status call back sidDjango + Rest Framework + twilio:获取状态回调 sid
【发布时间】:2019-07-15 05:05:55
【问题描述】:

我正在尝试一些我认为非常简单的东西,当我用邮递员测试我的端点时它工作正常,但是当网站启动时,我得到“错误”

这些是我当前的设置:

twilio==6.29.1
Django==2.0.7
djangorestframework==3.9.4
Python 3.6.8

使用 twilio 发送短信后:

client = Client(key1,key2)
message = client.api.account.messages.create(
    body= request.data["Body"],
    to= request.data["toNumber"],
    status_callback='https://myurl',
    from_= request.data["fromNumber"]
)

我已设置回拨

class SMSCallBack(APIView):
    parser_classes = (JSONParser,)
    def post(self, request, format=None):  
        print(request.GET)
        print(request.GET.getlist('SmsSid'))
        return Response({'xxx': 'xxx'})

不过这是我在日志中的回复

<QueryDict: {}>
[]            

如果我尝试在邮递员中做同样的事情,我会得到

<QueryDict: {'SmsSid': ['asd']}>
['asd']

现在我用邮递员猜测我已经正确设置它(POST,并在参数选项卡中添加一个值),因为来自 twilio 的控制台日志表明他们发送的多个参数之一是 SmsSid

我对 Django 和 python 还是很陌生,所以在尝试获取传入参数时我可能缺少什么?

当我尝试时

request.POST.getlist('SmsSid')

我的结果是:

2019-07-15T05:15:25.735240+00:00 app[web.1]: 10.65.77.132 - - [15/Jul/2019:05:15:25 +0000] "POST /XXXX/smscallback/ HTTP/1.1" 415 100 "-" "TwilioProxy/1.1"
2019-07-15T05:15:25.738919+00:00 heroku[router]: at=info method=POST path="/XXXX/smscallback/" host=XXX.com request_id=3c5b81c2-003b-461a-8bd9-3e79d4545a9a fwd="3.94.8.12" dyno=web.1 connect=1ms service=783ms status=415 bytes=346 protocol=https

当我尝试使用邮递员时,我得到了

[]

【问题讨论】:

  • 您使用了post method,但尝试从GET 获取回调参数。你不应该这样做request.POST.getlist('SmsSid')
  • Exprator 我已经编辑了问题以显示我在尝试时得到的结果

标签: python django django-rest-framework twilio


【解决方案1】:

这里是 Twilio 开发者宣传员。

Twilio 将向您的 statusCallback 端点发出 POST 请求。所以数据将在请求正文中,在request.POST 下而不是在request.GET 下。

您的代码还显示您正在使用JSONParser 来解析传入的请求。 Twilio 以application/x-www-form-urlencoded 发送请求,因此您应该改用FormParser

让我知道这是否有帮助。

【讨论】:

  • 太棒了,一个题外话的问题,回到控制台我得到错误 415,它说可能的错误 Content-Type 与实际内容不匹配,我需要返回什么以避免 twilio 显示此警告?
  • 我不确定这是否离题,这是您的服务器返回 415,这是因为它没有收到预期的请求。希望更新以使用正确的传入解析器意味着它确实期望输入并返回 200。
猜你喜欢
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多