我正在尝试使用nodejs构建一个facebook messenger机器人。我开发了一个具有核心功能的机器人。当测试用户发送GIF或贴纸的负面场景时,它必须响应“我无法得到你。对不起”。它确实会发送该消息,但它会挂起,此后每隔几分钟就会继续发送该消息。我注意到ngrok服务器为POST请求抛出了一个500HTTP Internal server错误。在进一步的调试中,我发现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();
});发布于 2018-01-15 09:45:11
也许这个答案不能解决你的问题,但它可能会有所帮助。如果您想发送200 HTTP代码,请使用以下代码:
res.sendStatus(200); // equivalent to res.status(200).send('OK')
另一方面,如果这不是中间件,您可以删除return next();行。
https://stackoverflow.com/questions/48255932
复制相似问题