我正在尝试使用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();
});
答案 0 :(得分:0)
也许这个答案无法解决您的问题,但它可能会有所帮助。 如果您想发送200个HTTP代码,请改为使用此代码:
res.sendStatus(200); // equivalent to res.status(200).send('OK')
另一方面,如果这不是中间件,您可以删除return next();
行。