1

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

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

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

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

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

这就是 Chatfuel 所需要的。 这就是 Chatfuel 需要的。

4

2 回答 2

0

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

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')
于 2018-01-15T17:36:50.520 回答
0

您可以使用 Express (node) 通过 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) 发布代码段并单击端点链接,您可以在其中看到响应。获取以 '.sh' 结尾的 url 并将其放入 chatfuel 的 Json 插件中。

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

于 2018-02-02T10:40:54.427 回答