ozgrozer
ozgrozer

Reputation: 2042

Facebook Messenger API: Can't Get POST Requests

I followed steps which in this page https://developers.facebook.com/docs/messenger-platform/quickstart

My nodejs codes

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);
});

And I get an error like this

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)

I can't get POST requests which coming from Facebook. How can I solve that?

Upvotes: 3

Views: 1991

Answers (1)

Manuel Spuhler
Manuel Spuhler

Reputation: 900

I was stuck before with the same problem. You need to use the body-parser lib:

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

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

then pass it to the post hook

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

Upvotes: 12

Related Questions