如何为多个 Messenger apps/bots 使用单个 webhook?

How to use a single webhook for multiple messenger apps/bots?

我正在为不同的 fb 页面开发不同的聊天机器人,但我只有一台服务器 运行 它们。

对于第一个聊天机器人,我使用 https://mydomain/webhook 作为 webhook,一切正常,所有消息都发送到 443 port,我的程序会处理它们。现在我想知道我的第二个聊天机器人的 webhook 应该是什么。我的想法是在另一个端口上打开一个 https 连接并使用 https://mydomain/webhook:myport 作为 webhook,这样每个 bot 都会监听不同的端口并且每个 webhook 相应地指向它们。

不幸的是,当我尝试从 facebok 开发者平台验证我的 webhook 时,我收到了 404 not found 响应。我还尝试在同一个端口 (443) 上使用同一个 webhook,我得到了 403 forbidden 响应。

我的错误是在“/webhook”之后添加端口号,而端口号应该在 IP 地址“https://mydomain”之后。如果有人想知道,是的,您可以对不同的 Messenger 应用程序使用相同的 Webhook,只需使用不同的端口即可。

您可以为多个 Facebook Messenger 机器人使用完全相同的 Webhook、相同的端口等等。发送到您的 webhook 的消息传递事件的每个有效负载将被分类到消息所针对的页面列表中。您可以编写代码以在每个页面到达您的 webhook 后以不同方式处理它。

您可以在 443 中收到您的响应,然后通过在您服务器的 conf 中使用代理传递重定向到您指定的端口。

    server {
    listen 443;
    server_name mydomain/webhook2;

    location /{
         proxy_pass http://127.0.0.1:yourportname;
         }
    }