将 Django 仪表板与 Chatfuel 连接

Connecting Django Dashboard with Chatfuel

我有这个项目,我必须将我的 Django 应用程序与 Chatfuel 机器人连接起来。

我有我的管理面板,所以每当我更新一个字段,比如完成某些任务时,我必须通过聊天机器人通知我的客户这个字段发生了变化。我阅读了 JSON API 文档,我注意到他们有一个特定的 "template" 来从后端获取数据。

我所做的是通过 Django Rest Framework 从模型中提取所有数据并将其转换为 JSON。问题是我不知道如何使用此信息在 Chatfuel 中使用它,因为我的 JSON 没有 Chatfuel 需要的模板。

这是我从模型中提取的信息。

这就是 Chatfuel 所需要的。

如果有人正在寻找这个答案,我用序列化器解决它:

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(节点)来实现此目的。

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) 发布代码段并单击端点 link,您可以在其中查看响应。抓取以 '.sh' 结尾的 url 并将其放入 chatfuel 的 Json 插件中。

3) 您现在需要做的是在将 stringResponse 变量传递给 response.end() 函数之前,使用 javascript 和节点将 stringResponse 变量更改为您和 Facebook 需要的格式。