麻烦连接webhook到Facebook messenger bot

我正在尝试使用NodeJS,Express和一个heroku服务器创build一个Facebook chatbot。

我在heroku上创build了我的webhook,并通过Facebook进行了validation和保存。 然后我运行这个代码来连接我的webhook到Facebook。

curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<token>" 

这个返回{success:true}。

所以然后我开始添加回复传入消息的代码,但我似乎无法连接。 每当我发送消息,我都没有回复。

这是我的代码:

 var express = require('express'); var bodyParser = require('body-parser'); var request = require("request") var app = express(); var port = process.env.PORT || 3000; // body parser middleware app.use(bodyParser.urlencoded({ extended: true })); app.get('/', function (req, res) { if (req.query['hub.verify_token'] === '8FKU9XWeSjnZN4ae') { res.send(req.query['hub.challenge']); console.log("app.get ran") res.sendStatus(200) } console.log("Error: wrong validation token") }) app.post('wyrdbot.herokuapp.com', function (req, res) { messaging_events = req.body.entry[0].messaging; console.log("app.post ran") for (i = 0; i < messaging_events.length; i++) { event = req.body.entry[0].messaging[i]; sender = event.sender.id; if (event.message && event.message.text) { text = event.message.text; sendTextMessage(sender, "Text received, echo: "+ text.substring(0, 200)); } } res.sendStatus(200); }); app.listen(port, function () { console.log('Listening on port ' + port); }); var token = "<myToken>"; function sendTextMessage(sender, text) { messageData = { text:text } request({ url: 'https://graph.facebook.com/v2.6/me/messages', qs: {access_token:token}, method: 'POST', json: { recipient: {id:sender}, message: messageData, } }, function(error, response, body) { if (error) { console.log('Error sending message: ', error); } else if (response.body.error) { console.log('Error: ', response.body.error); } }); } 

我一直在试图debugging它,并已经意识到app.post函数根本没有运行。 我也得到错误,说我的webhook已被禁用。

当我检查我的日志,我发现这打印了一堆:

 2016-04-20T14:13:31.487873+00:00 heroku[router]: at=info method=POST path="/" host=wyrdbot.herokuapp.com request_id=fa1e5270-5038-4e67-b7a6-c6852c7c3000 fwd="173.252.90.101" dyno=web.1 connect=0ms service=16ms status=404 bytes=212 

我完全没有想要尝试的想法。 任何人都知道我错过了什么?

任何帮助,将不胜感激。 谢谢!

使用app.use(bodyParser.json()); 因为facebook正在请求主体中发送JSON数据。

试试app.post('/',function(req,res){