【问题标题】:How to use a single webhook for multiple messenger apps/bots?如何将单个 webhook 用于多个 Messenger 应用程序/机器人?
【发布时间】:2017-10-04 18:04:12
【问题描述】:

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

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

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

【问题讨论】:

  • 你有任何服务器在那个端口上运行吗?
  • 我发现我的错误,检查我的答案! @luschn 还是谢谢!
  • 为什么需要为每个机器人使用不同的端口?当您运行 Web 服务器时,您也不会让每个浏览器都连接到不同的端口 - 它们都使用 80 或 443。这里也是一样。如果你想让不同的机器人相互独立,那么使用不同的路径会更有意义 - https://mydomain/webhook/bot1https://mydomain/webhook/bot2 等。

标签: facebook facebook-graph-api bots chatbot facebook-messenger-bot


【解决方案1】:

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

【讨论】:

  • 我考虑过这个选项,但我想让我的机器人在彼此之间保持“独立”。例如。如果一个机器人崩溃了,我不希望其他所有机器人都崩溃。感谢您的建议,即使我以不同的方式解决了我的问题,这实际上应该是我的问题的公认答案。
  • 好点。您是否在同一台服务器下运行这些机器人?更具容错性的是将机器人分离到不同的进程中,但我认为您在这里的想法是正确的。好奇,你用的是机器人框架吗,如果是,是哪个?
  • 您可以使用一个进程(服务器)在 webhook 上接收您的负载,然后将 JSON 负载分派给特定进程(机器人)来处理该页面的消息。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

        server {
        listen 443;
        server_name mydomain/webhook2;
    
        location /{
             proxy_pass http://127.0.0.1:yourportname;
             }
        }
    

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多