Facebook 如何将单个webhook用于多个messenger应用程序/机器人?

Facebook 如何将单个webhook用于多个messenger应用程序/机器人?,facebook,facebook-graph-api,bots,chatbot,facebook-messenger-bot,Facebook,Facebook Graph Api,Bots,Chatbot,Facebook Messenger Bot,我正在为不同的fb页面开发不同的聊天机器人,但我只有一台服务器来运行它们 对于我使用的第一个聊天机器人https://mydomain/webhook由于webhook和所有东西都工作正常,所有消息都会发送到443端口,我的程序会处理它们。现在我想知道我的第二个聊天机器人的webhook应该是什么。我的想法是在另一个端口上打开https连接并使用https://mydomain/webhook:myport作为webhook,以便每个bot侦听不同的端口,并且每个webhook相应地指向它们 不

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

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


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

我的错误是在“/webhook”之后添加端口号,而端口号应该在ip地址“”之后。如果其他人想知道,是的,您可以对不同的messenger应用程序使用相同的webhook,只需使用不同的端口。

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

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

    server {
    listen 443;
    server_name mydomain/webhook2;

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

你有其他端口上运行的服务器吗?我发现了我的错误,检查我的答案@无论如何谢谢你!为什么您需要为每个bot使用不同的端口?当您运行web服务器时,您也不会让每个浏览器都连接到不同的端口——它们都使用80或443。这里也一样。如果你想让不同的机器人彼此独立,那么使用不同的路径将更有意义-
https://mydomain/webhook/bot1
https://mydomain/webhook/bot2
,等等。我考虑过这个选项,但我想让我的机器人彼此“独立”。例如,如果一个机器人崩溃,我不想让其他所有机器人都跟着它一起崩溃。谢谢你的建议,这实际上应该是我问题的公认答案,即使我用不同的方式解决了我的问题。这是一个很好的观点。你是在同一台服务器下运行这些机器人程序吗?更具容错性的做法是将机器人程序分为不同的进程,但我认为您的想法是正确的。奇怪的是,您使用的是bot框架吗?如果是的话,您可以使用一个进程(服务器)在webhook上接收有效负载,然后将JSON有效负载分配给特定进程(bot)来处理该页面的消息。