2

我正在爲不同的fb頁面開發不同的聊天機器人,但我只有一臺服務器來運行它們。如何使用單個webhook用於多個Messenger應用程序/機器人?

對於第一個聊天機器我使用https://mydomain/webhook作爲webhook,一切工作正常,所有的消息都發送到443 port和我的程序處理它們。現在我想知道我的第二個聊天機器人應該是什麼webhook。我的想法是在另一個端口上打開https連接,並使用https://mydomain/webhook:myport作爲webhook,以便每個bot監聽不同的端口,並且每個webhook都相應地指向它們。

不幸的是,當我嘗試從Facebok的開發者平臺驗證我的網絡掛接我得到了404 not found響應。我也嘗試在相同的端口上使用相同的webhook(443),並獲得403 forbidden響應。

+0

你有其他的端口上運行的任何服務器? – luschn

+0

我發現了我的錯誤,請檢查我的答案! @luschn謝謝! – Moltehh

+1

爲什麼你需要爲每個機器人使用不同的端口?當您運行Web服務器時,您不會讓每個瀏覽器都連接到不同的端口 - 它們全部使用80或443.這裏是同樣的事情。如果你想保持不同的機器人相互獨立的,那麼它將使更多的意義使用不同的路徑 - '的https:// MYDOMAIN /網絡掛接/ bot1','的https:// MYDOMAIN /網絡掛接/ bot2'等 – CBroe

回答

3

您可以使用完全相同的網絡掛接,相同的端口和一切,多透過Facebook Messenger機器人。發送到您的webhook的消息事件的每個有效負載將被分類到消息所用的頁面列表中。你可以編寫代碼來處理每個頁面的負載,當它打到你的webhook後。

+0

我考慮過這個選項,但我想讓我的機器人在彼此之間「獨立」。例如。如果一個機器人崩潰,我不希望所有其他人崩潰。感謝您的建議,即使我以不同的方式解決了我的問題,這實際上應該是我的問題的接受答案。 – Moltehh

+0

好點。你是否在同一臺服務器上運行這些機器人?更多容錯能力將把機器人分離到不同的進程中,但我認爲你在這裏有正確的想法。 好奇,你是否使用bot框架,如果是的話,哪個? –

+0

你可以使用一個進程(服務器)在網絡掛接收到您的有效載荷,然後派遣JSON有效載荷爲特定進程(殭屍程序)來處理頁面的消息。 –

1

我的錯誤是「/網絡掛接」之後添加端口號,而端口號應的IP地址「https://mydomain」後走了。如果其他人想知道,是的,你可以使用不同的Messenger應用程序相同的webhook,只需使用不同的端口。

相關問題