Facebook Messanger Bot Webhook问题

时间:2016-04-18 16:32:14

标签: javascript json node.js facebook facebook-graph-api

我收到了此消息

  

您的Webhooks订阅回调网址尚未接受   更新。

     

我们注意到您的Webhooks订阅了回调网址   https://trololo.herokuapp.com/bot尚未接受更新   至少16分钟。请确认您的回叫服务器是   功能,以便您可以继续接收更新。如果你需要   更新您的回调网址,请参阅   https://developers.facebook.com/docs/graph-api/reference/app/subscriptions#update

     

如果您的回调网址仍然无法接受8小时的更新   直接,我们将禁用您的订阅。要重新激活   订阅,使用相同的参数发出POST请求   将重新激活。

此代码在服务器上执行

app.post('/bot', function (req, res) {
  console.log('post bot: ' + req);
  var messaging_events = req.body.entry[0].messaging;
  for (var i = 0; i < messaging_events.length; i++) {
    var event = req.body.entry[0].messaging[i];
    var sender = event.sender.id;
    if (event.message && event.message.text) {
      text = event.message.text;
      console.log('text received: ' + text);
      sendTextMessage(sender, "Text received, echo: "+ text.substring(0, 200));
    }
  }
  res.sendStatus(200);
});

但它失败了因为req.body未定义。 req params也没有json,因为它出现了这个错误:

  

TypeError:将循环结构转换为JSON

req只显示[object Object],我不知道对象内部是什么。 .toString也没有工作。

我完成了两次完整指南。我认为问题来自于facebook页面应连接到facebook应用程序的部分。我这样做curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<mytoken>"请帮忙。非常感谢任何回复。

这是一个演示日志 error logs

1 个答案:

答案 0 :(得分:1)

我认为这是一个依赖性问题......也许你错过了json body解析器body-parser

如果您查看node-wit/examples/messenger.js上有关计划示例的评论,您会看到需要安装一些代码:

在项目目录中,尝试:

npm install body-parser express request

看看:https://www.youtube.com/watch?v=zFO1cRr5-qY ......我认为他们确切地解决了这个问题以及你可能找到的其他问题。