如何使用bot框架在多个facebook页面上使用相同的bot

问题描述 投票:2回答:5

我有几个facebook页面,我想在每个页面上运行相同的机器人。我正在使用机器人框架,现在一切都适用于一页。如何与多个页面关联?

bots chatbot facebook-chatbot facebook-messenger-bot
5个回答
5
投票

对不起,如果我的回答很晚

您可以通过一个bot后端很好地处理所有页面流量

  1. 创建一个fb应用程序并选择产品作为信使
  2. 添加指向机器人的webhook配置
  3. 选择要逐个关联的所有页面并保持页面访问令牌的便利。
  4. 转到并在您的fb页面中搜索页面ID并保持方便
  5. 在常量或dB维护页面访问令牌对我的页面
  6. 当您在webhook上收到回调时,您会收到一个页面条目和Id == page id
  7. 根据页面,我有你的业务逻辑
  8. 使用您针对页面ID存储的页面访问令牌调用send api

希望这可以帮助


8
投票

当您调用Facebook Send 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,
     })

2
投票

您可以将同一个应用订阅到多个页面。订阅Facebook应用程序后,与该应用程序关联的信使将与该页面相关联。

https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/这个api用于将facebook应用程序添加到页面


0
投票

每个页面都需要自己的facebook应用程序。创建应用程序后,您可以将它们链接到同一个机器人,但是如果您在代码中验证签名并且可能希望为每个机制使用不同的URL,则它们将使用不同的页面令牌。


-1
投票

我处理这个问题的方法是在不同的服务器上部署相同的Bot后端。通过这个,我将拥有相同的后端源但不同的webhook URL。这使得每个Bot虽然具有相似的功能,但可以单独隔离和维护。在构建Bot时,这是一个非常重要的设计考虑因素,因为它可能会进行大量的对话。

要回答你的问题,是的,只需为每个请求传递页面令牌和验证令牌,并在用户与其他页面交谈时更改它 - 但我不建议这样做。

© www.soinside.com 2019 - 2024. All rights reserved.