这个NodeJS API是否正确完成? - Chatfuel没有按预期解析它

时间:2017-08-04 08:33:57

标签: javascript json node.js formatting chatfuel

Chatfuel不会解析JSON-API返回的整个json字符串。 欢迎任何帮助。

虽然从API返回的JSON看起来像这样(在postman中):

{
    "messages": [
        {
            "text": "i think you should study"
        },
        {
            "text": "Mikrobiologi"
        }
    ]
}

messenger bot只发送第一个文本。

我的应用代码:

router.get('/ask/:question', function(req, res){
  var output = [];
  var keywords = req.params.question.split(' ');
  var answer = qHandler.search(keywords);
  answer.then(function(books){
    output.push({text: 'i think you should study'})
    for (var i = books.length; i > 0; i--){
      output.push({text: books[i-1].title});
      if (i-1 > 0){
        output.push({text: ' and '});
      }
    };
    res.send({messages: output});
  });
});

我尝试更改顺序,在返回的字符串之前和之后添加更多硬编码文本。

在邮递员中,一切看起来都应该如此,但是聊天装置似乎没有解析插入书籍标题的文本对象。

1 个答案:

答案 0 :(得分:0)

看起来你的代码是正确的。 请确保您在不使用answer.then(function(books){下的邮递员的情况下获取HTTP request.debug图书值的参数

在这里,我可以在纯JavaScript中执行此代码

var books = [
    {
        title: 'asdfasdf'
    },{
        title: 'asdfasdf'
    },{
        title: 'asdfasdf'
    },{
        title: 'asdfasdf'
    },{
        title: 'asdfasdf'
    }]

var output = [];
output.push({ text: 'i think you should study' })
for (var i = books.length; i > 0; i--) {
    output.push({ text: books[i - 1].title });
    if (i - 1 > 0) {
        output.push({ text: ' and ' });
    }
};
console.log(output);