Соединение Django Dashboard с Chatfuel

У меня есть этот проект, где я должен соединить свое приложение Django с ботом Chatfuel.

У меня есть панель администратора, поэтому всякий раз, когда я обновляю поле, например, выполняя определенную задачу, я должен уведомить клиента через чат-бота, что это поле изменилось. Я прочитал документацию по JSON API и заметил, что у них есть определенный "шаблон" для получения данных из бэкэнда.

Что я сделал, так это извлек все свои данные из моделей через Django Rest Framework и преобразовал их в JSON. Дело в том, что я не знаю, как использовать эту информацию для работы с ней в Chatfuel, потому что в моем JSON нет шаблона, который требуется Chatfuel.

Это моя информация, извлеченная из моделей.

Вот моя информация, извлеченная из моих моделей

Это то, что нужно Chatfuel. Вот что нужно 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().

Другие вопросы по тегам