【发布时间】:2017-01-04 17:00:53
【问题描述】:
我的问题有点像this。
您对回调 URL https://{domain}/bot 的 Webhooks 订阅至少有 2 天没有接受更新。请验证您的回调服务器是否正常运行。请访问我们的参考文档,了解如何更新您的回调 URL。
如果您的回调 URL 在 12 小时后仍然失败,您的订阅将被禁用。要重新激活,只需使用相同的参数发出 POST 请求或访问应用仪表板中的 Webhooks 选项卡。
但是,我很确定我已经为每个请求返回了状态 200,这是我的代码的一部分:
router.post("/bot", (req, res) => {
Promise.map(req.body["entry"], eachEntry => {
return Promise.map(eachEntry["messaging"], eachMessage => {
// some postback and quick_replies handling, send messages...
});
})
.then(() => res.sendStatus(200))
.catch(err => {
console.error(err.stack);
res.sendStatus(200);
});
});
我只订阅了messages、messaging_postbacks、message_deliveries 等事件。我想即使有些事情我没有处理,这些请求最终也会获得状态 200。
但我不明白的是,每次我收到 webhook 失败警报时,我都没有在日志中看到错误或任何未作为状态 200 返回的内容。
我也尝试将res.sendStatus(200) 更改为res.end() 或res.status(200).end(),但也没有用。
提前谢谢你!
【问题讨论】:
-
您是否尝试过使用邮递员向您的端点发帖?
-
是的,我试过了,效果很好。其实已经公开了,也有朋友用过。
-
我的意思是有些朋友已经使用这个机器人一段时间了。不知怎的,我无法编辑我的评论...
-
你可以尝试在promise之外发送响应状态。我的意思是,你不需要等待 promise 返回响应状态,你会一直发送 200。
-
@AndrésAndrade 是的,我正在考虑这个问题。但我在评论区使用sender actions。我试图将 res.sendStatus(200) 移到顶部,但发件人的动作会......有点奇怪。它显示然后消失。然后它再次显示。我想我太挑剔了……但我也不认为这是问题的根源。 :(
标签: javascript node.js facebook-messenger facebook-messenger-bot