我有一个项目,我必须将我的Django应用程序与Chatfuel机器人连接起来。
我有我的管理面板,所以每当我更新一个字段,如完成某个任务,我必须通过聊天机器人通知我的客户这个字段的变化。我阅读了JSON API文档,我注意到它们有一个特定的“模板”来从后端获取数据。
我所做的是通过Django Rest Framework从模型中提取所有数据,并将其转换为JSON。问题是,我不知道如何在Chatfuel中使用此信息,因为我的JSON没有Chatfuel所需的模板。
这是我从模型中提取的信息。

这就是Chatfuel所需要的。

发布于 2018-01-16 01:36:51
如果有人正在寻找这个答案,我会用一个序列化程序来解决:
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-02-02 18:40:54
您可以通过使用express (node)的Runkit来实现这一点。
1)转到https://runkit.com,使用以下代码创建一个notebook,并将: 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和node将其更改为您和Facebook需要的格式。
https://stackoverflow.com/questions/48254782
复制相似问题