Подключение Django Dashboard к Chatfuel

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

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

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

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

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

Это то, что нужно Chatfuel. Вот что нужно Chatfuel.


person Pilar Figueroa    schedule 14.01.2018    source источник
comment
Ваш вопрос слишком широкий. Кто отвечает за обнаружение изменений в ваших моделях? У вас есть отдельная программа, которая читает API django и передает его в chatfuel, или вы хотите, чтобы django делал это, когда что-то менялось?   -  person dahrens    schedule 15.01.2018
comment
@dahrens Я хочу, чтобы django делал это, когда что-то меняется.   -  person Pilar Figueroa    schedule 15.01.2018
comment
Вам нужно писать сообщения только тогда, когда модель, которую вы показали, меняется? Не могли бы вы добавить код модели и класс сериализатора?   -  person dahrens    schedule 15.01.2018


Ответы (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')
person Pilar Figueroa    schedule 15.01.2018

Вы можете добиться этого с помощью Runkit, используя экспресс (узел).

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 в chatfuel.

3) Что вам нужно сделать сейчас, так это изменить переменную stringResponse на формат, который нужен вам и Facebook, используя javascript и node, прежде чем вы передадите ее функции response.end().

person Dimitris Mouhtaropoulos    schedule 02.02.2018