ответ webhook с AsyncHttpConsumer канала django на Heroku - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь перенести мой код из wsgi для использования asyncHttpConsumer asgi / channel. Я могу получить http_request от diaglogflow. Тогда я могу использовать send () или send_response () для ответа. Я могу сделать что-то вроде

await self.send_response(200, b'response text', 
    headers=[(b"Content-Type", b"text/plain"),
            ])

, и мой сервер heroku отправляет это нормально, но диалог не возвращает ничего. У меня есть другое приложение wsgi, которое просто использует

from django.http import JsonResponse 
...
fulfillmentText = {'fulfillmentText': "server works correctly"}
return JsonResponse(fulfillmentText, safe=False)

, где оно на самом деле корректно возвращается в диалоговый поток.

Я попытался использовать JsonResponse на стороне asgi / channel, но он просто дает мне ошибку, которая просто в основном говорят, что я не правильно использую send_response.

Что мне нужно сделать, чтобы правильно преобразовать мой ответ на стороне asyncHttpConsumer?

1 Ответ

0 голосов
/ 07 января 2020

Разобрался.

Мне просто нужно было преобразовать мой дикт в байты, используя

response = json.dumps(mydict).encode('utf-8')
await self.send_response(200, fulfillmentText, headers=[(b"Content-Type", b"text/plain"),])
...