Соединение Django Dashboard с Chatfuel
У меня есть этот проект, где я должен соединить свое приложение Django с ботом Chatfuel.
У меня есть панель администратора, поэтому всякий раз, когда я обновляю поле, например, выполняя определенную задачу, я должен уведомить клиента через чат-бота, что это поле изменилось. Я прочитал документацию по JSON API и заметил, что у них есть определенный "шаблон" для получения данных из бэкэнда.
Что я сделал, так это извлек все свои данные из моделей через Django Rest Framework и преобразовал их в JSON. Дело в том, что я не знаю, как использовать эту информацию для работы с ней в Chatfuel, потому что в моем JSON нет шаблона, который требуется Chatfuel.
Это моя информация, извлеченная из моделей.
2 ответа
Если кто-то ищет этот ответ, я решаю его с помощью сериализатора:
class UserAPI(APIView):
serializer = UserSerializer
def get(self, request, format=None):
list = Caseworker.objects.all()
response = self.serializer(list, many=True)
return HttpResponse(json.dumps({'messages': {'text':
response.data}}), content_type='application/json')
Вы можете достичь этого с помощью Runkit, используя express (node).
1) Перейдите на https://runkit.com/ и создайте записную книжку с этим кодом и замените: ThisIsYourJsonCall своим вызовом:
var express = require('express');
var app = express();
var getJSON = require("async-get-json");
app.listen(80, function() {
console.log('Chatfuel Bot-Server listening on port 80...');
});
app.get('/*', function(req, res) {
module.exports.endpoint = async function (request, response)
{
var stringResponse = JSON.stringify(await getJSON('ThisIsYourJsonCall'));
response.end(stringResponse);
}
});
2) Опубликуйте фрагмент и щелкните ссылку на конечную точку, где вы можете увидеть ответ. Возьмите URL, заканчивающийся на ".sh", и поместите его в плагин Json в чате.
3) Теперь вам нужно изменить переменную stringResponse на формат, который вам и Facebook нужен с использованием javascript и узла, прежде чем передавать ее в функцию response.end().