2017-01-16 86 views

回答

0

每個頁面都需要自己的Facebook應用程序。一旦創建了應用程序,您可以將它們鏈接到相同的機器人,但是它們將使用不同的頁面令牌,以防您在代碼中驗證簽名,並且您可能希望爲其中的每一個使用不同的URL。

+0

我有一個批准的Facebook應用程序,我想用這個機器人的網頁我DONOT自己,我有一個網頁的ID和令牌數,但我我無法使用我的機器人。我該怎麼做? –

+0

這是錯誤的,你可以在你想要的頁面上使用一個應用程序。你不需要爲每個頁面單獨的應用程序。 – luschn

4

當您調用Facebook發送API時,通過參數access_token傳遞頁面訪問令牌。您可以通過修改此訪問令牌來指定哪個頁面來引導您的消息。要知道哪個頁面啓動了該消息,您可以訪問消息文章條目的id字段。

app.post('/webhook', (req, res) => { 
    const data = req.body 

    // Make sure this is a page subscription 
    if (data.object === 'page') { 
     // Iterate over each entry 
     data.entry.forEach((pageEntry) => { 
      // get the pageId 
      const pageId = pageEntry.id 
      ... 

這樣,你會需要保持一個對象映射頁面的ID與每個頁面ID相關聯的訪問令牌:

const accessTokens = { 
    myPageId1: 'myPageAccessToken1', 
    myPageId2: 'myPageAccessToken2', 
} 

然後發送響應時,只需指定相應的頁面的access_token

const callSendAPI = (pageId, messageData) => 
    rp({ 
     uri: 'https://graph.facebook.com/v2.8/me/messages', 
     qs: { access_token: accessTokens[pageId] }, 
     method: 'POST', 
     body: messageData, 
     json: true, 
    }) 
+0

這工作? –

+0

@UriAbramson是的,讓我知道你是否對實施它有任何疑問 –

0

我會處理這個問題的方法是在不同的服務器上部署相同的Bot後端。由此,我將擁有相同的後端來源,但不同的webhook網址。這使得每個機器人雖然具有類似的功能,但可以分開進行隔離和維護。在構建Bot時,這是非常重要的設計考慮因素,因爲它可能會有很多對話。

要回答你的問題,是的,只需爲每個請求傳遞頁面令牌和驗證令牌,並在用戶與其他頁面進行交談時對其進行更改 - 但我不建議這樣做。

相關問題