2016-04-14 34 views
3

我也跟着在这个页面 https://developers.facebook.com/docs/messenger-platform/quickstart透过Facebook Messenger API:无法获取POST请求

我的代码的NodeJS

app.post('/webhook/', function(req, res) { 
    messaging_events = req.body.entry[0].messaging; 
    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: "); 
     } 
    } 
    res.sendStatus(200); 
}); 

我也得到类似这样的错误

TypeError: Cannot read property 'entry' of undefined 
    at /home/user/public_html/app/testbot/webhook.js:31:30 
    at Layer.handle [as handle_request] (/home/user/public_html/app/testbot/node_modules/express/lib/router/layer.js:95:5) 
    at next (/home/user/public_html/app/testbot/node_modules/express/lib/router/route.js:131:13) 
    at Route.dispatch (/home/user/public_html/app/testbot/node_modules/express/lib/router/route.js:112:3) 
    at Layer.handle [as handle_request] (/home/user/public_html/app/testbot/node_modules/express/lib/router/layer.js:95:5) 
    at /home/user/public_html/app/testbot/node_modules/express/lib/router/index.js:277:22 
    at Function.process_params (/home/user/public_html/app/testbot/node_modules/express/lib/router/index.js:330:12) 
    at next (/home/user/public_html/app/testbot/node_modules/express/lib/router/index.js:271:10) 
    at serveStatic (/home/user/public_html/app/testbot/node_modules/express/node_modules/serve-static/index.js:74:16) 
    at Layer.handle [as handle_request] (/home/user/public_html/app/testbot/node_modules/express/lib/router/layer.js:95:5) 

步骤我无法获取来自Facebook的POST请求。我该如何解决这个问题?

回答

12

我之前遇到过同样的问题。你需要用身体的解析器lib目录下:

var express = require('express'); 
var bodyParser = require('body-parser'); 

var app = express(); 
var jsonParser = bodyParser.json(); 

然后将它传递到后钩

app.post('/webhook/', jsonParser, function(req, res) { 
+2

嘿,感谢您的回答。这是伟大的,工作完美。现在我得到了'console.log(text);'消息,但facebook的sendTextMessage()函数存在另一个问题。我无法发送任何数据到Facebook聊天。新的错误是'ReferenceError:request is not defined'。你有没有注意到这个错误,而你有代码,你有解决方案吗? – ozgrozer

+3

好的,我做到了。这是一个非常愚蠢的问题:)'var request = require(“request”);' – ozgrozer