在facebook messenger bot上发布res.send(200)问题

时间:2018-01-15 01:35:02

标签: node.js facebook-messenger facebook-messenger-bot ngrok

我正在尝试使用nodejs构建一个facebook messenger机器人。我开发了具有核心功能的机器人。在测试时 在用户发送GIF或贴纸的负面情况下,它必须回答“我无法得到你。抱歉”。它发送 该消息但它会挂起并且每隔几分钟就会继续发送该消息。我注意到ngrok服务器抛出了500个HTTP POST请求的内部服务器错误。在进一步调试时,我能够发现res.send(200)没有正确执行。 我在res.send(200)之后拥有的console.log stmt永远不会打印出来。不确定我可能缺少什么。任何帮助表示赞赏。尝试使用新的ngork https链接重新启动服务器并重新订阅应用程序。同样的消息继续打印出来:(。

这是我的代码。

    server.post('/', (req, res, next) => {
            // Extract the body of the POST request
            let data = req.body;
            let incomingMessage = '';
            if(data.object === 'page') {
                data.entry.forEach(pageObj => {
                    // Iterate through the messaging Array
                    pageObj.messaging.forEach(msgEvent => {
                         incomingMessage = {
                            sender: msgEvent.sender.id,
                            timeOfMessage: msgEvent.timestamp,
                            message: msgEvent.message
                        }
                    });
                });
            }
            const {
                message,
                sender
            } = incomingMessage

            if(message.text) {
                f.txt(sender, 'Hi there!!!');
            } else {
                f.txt(sender, `I couldn't get you. Sorry :(`);
                //res.send(200);
            }
        res.send(200);
        console.log('We are at the end of post');
        return next();
    });

1 个答案:

答案 0 :(得分:0)

也许这个答案无法解决您的问题,但它可能会有所帮助。 如果您想发送200个HTTP代码,请改为使用此代码:

res.sendStatus(200); // equivalent to res.status(200).send('OK')

另一方面,如果这不是中间件,您可以删除return next();行。