python - Django + Rest 框架 + twilio : Getitng status call back sid

标签 python django django-rest-framework twilio

我正在尝试一些我认为非常简单的事情,当我用 postman 测试我的终点时它工作正常,但是当网站启动时,就是我得到“错误”的时候

这些是我当前的设置:

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: {}>
[]            

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

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

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

Twilio debug console

我是 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

当我在 postman 中尝试时,我得到了

[]

最佳答案

此处为 Twilio 开发人员布道师。

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

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

让我知道这是否有帮助。

关于python - Django + Rest 框架 + twilio : Getitng status call back sid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57033513/

相关文章:

python - 非重复计数算法

django - Django manage.py:迁移在依赖之前应用

python - django 1.2.3 中不需要 CSRF 功能

python - ModelForm 没有指定模型类

python - 创建后URL不存在

python - DRF - 嵌套路由器 - 在 POST/PUT/PATCH 上创建/更新嵌套对象

android - 获取 token 身份验证 View 时出现 Django REST HTTP 400 错误

python - Python 中的内存感知 LRU 缓存?

python - 使用生成器从成批的 .npy 文件训练 Keras 模型?

python - 删除大文件中的空列