Facebook Chatbot Webhook - 我为什么要实现get-request?



我们目前正在为facebook messenger平台开发第一个聊天机器人。我从此处的快速入门示例开始: https://developers.facebook.com/docs/messenger-platform/guides/quick-start

一切正常,机器人调用我的后端,我可以响应。都很好。

但是,从不调用以下 GET-Hook:

app.get('/hook/', (req, res) => {
console.log('GET REQUEST CALLED');
if (req.query['hub.verify_token'] === FB_VERIFY_TOKEN) {
res.send(req.query['hub.challenge']);
} else {
res.send('Error, wrong validation token');
}
});

快速入门和完整指南告诉我,我需要代码的平静,但他们都没有告诉我为什么......

我的问题是:

  • 什么时候应该调用这个网络钩子?
  • 为什么我的机器人在没有这个钩子的情况下工作?
  • 它不应该以某种方式验证我的后端吗?为什么需要这样做?

我想我在这里完全错过了一些东西:/

编辑: 这是否仅在我以编程方式订阅页面时才需要? 目前,我已使用仪表板向页面添加了订阅。

当您从开发人员面板设置 Webhook URL 时。Facebook 会自动向该端点发送 GET 请求,并期望您正在验证验证令牌。

此端点是 Facebook 的验证端点。它承认Facebook不会将聊天信息发送到可能导致隐私滥用的错误端点。此外,它还会验证您的终端节点是否已准备好处理 Facebook 输入数据。