2016-11-05 16 views
1

我目前有一個工作的NodeJs後端(使用Sailsjs構建),託管我正在構建的移動應用程序的休息服務。如何安全地將Facebook Messenger bot與現有nodejs後端集成?

現在我想擴展到Facebook Messenger,以便我的用戶可以選擇使用機器人而不是使用應用程序進行通信。

例如,如果用戶想要查找他的下一個約會,他可以打開應用程序並查看它,或者打開Messenger並詢問「我的下一次約會是什麼時間?」。 爲了得到這個工作,我必須將Messenger用戶識別爲我數據庫中的現有用戶。爲此,我目前使用Facebook Messenger account linking。我設法讓帳戶鏈接工作並將用戶PSID保存到我的數據庫。 對於我正在使用Motion.ai(考慮使用其他服務)的機器人。所有的消息都傳遞給My Motion bot webhook和我的後端webhook。對一個應用程序使用兩個webhook是不對的,或者是不是?

我的移動應用的其餘服務都使用webtoken來識別撥打電話的用戶,但我的Messenger bot用戶沒有webtoken,我該如何解決這個問題,並且仍然有一個安全的平臺? 也許我可以給用戶發送令牌或PSID以及Motion.ai令牌的選項嗎? Motion.ai令牌對於所有用戶都是相同的,但是仍然有點安全我的後端,因爲它只接受來自Motion.ai服務器的reqeust。

我真的很感激任何幫助,您可以提供

好吧,我找到一種方式來獲得它的工作。 由於我正在構建一個荷蘭語機器人Motion.ai並沒有爲我工作。我轉而使用Api.ai主要是爲了支持荷蘭語,但也因爲先進的語言處理能力。 我發現我無法將我的控制器重新用於我的機器人和移動應用程序。爲了解決這個問題,我把所有的邏輯都移到了一個服務(更好的設計)上,我可以在我的機器人控制器和其他服務控制器中調用。

得到一切以安全的方式工作,我做了以下內容:

1: Api.ai不支持鏈接被Facebook做出回調帳戶,所以我用我的服務器作爲網絡掛接我的Facebook應用程序。

2:我用帆政策承認Facebook的令牌,我的數據庫查詢的用戶ID(如果它不匹配發送account_linking請求用戶),並處理account_linking回調。 爲了保護Api.ai webhook,我使用了另一個使用基本身份驗證的策略。

2.1如果用戶尚未鏈接,鏈接過程將發送登錄表單,以便他可以用他的電子郵件和密碼登錄我的應用程序。

2.2:如果用戶的電子郵件和密碼匹配,我發送重定向鏈接到fb以確認登錄。我還添加了一個包含usersid的標記(來自我的數據庫)。

2.3: Fb現在會通知用戶他已成功登陸併發送一個account_linking回調,並附帶他們從我處收到的令牌。由於用戶標識位於令牌中,因此我現在可以在數據庫中查找用戶並使用從Facebook接收的ID更新他的FacebookID。現在,用戶在正式loged

3:一旦政策確定我用一個控制器來重定向Facebook的消息Api.ai.

4:最後,Api.ai會發回一個響應給我的服務器,它將處理它並將消息重定向到fb用戶。

回答

0

假設您可以像您說的那樣切換到另一項服務,請切換到api.ai

因爲它提供了一個one-click Facebook Messenger integration它似乎是領先的機器人市場。

還有wit.ai但我還沒有測試過它。

希望這有助於:)

+0

謝謝,但我知道api.ai和wit.ai.他們的確會簡化機器人建造過程,但仍然不能解決我的安全問題...... –