Facebook聊天机器人和身份验证

时间:2017-03-21 08:07:02

标签: node.js facebook facebook-graph-api passport.js facebook-chatbot

我有一个用户可以使用Facebook登录的应用程序。我有用户的身份验证令牌,有效期为30天。我正在使用Passport。目前,我要求绝对最低权限(仅限电子邮件),以便我的auth应用程序不需要验证。

现在......我需要编写一个偶尔会写入经过身份验证的用户的聊天机器人。因此,机器人需要启动对话。它实际上是用户积极感兴趣的通知。

鉴于我知道如何编写聊天机器人,我想知道......这样做是否可能?

如果不可能,是否可以通过比较他们的Facebook用户ID来“链接”与我的机器人与其中一个登录用户发起聊天? (我担心不会,因为Facebook的用户ID似乎是应用程序的范围!)

1 个答案:

答案 0 :(得分:2)

1)为了可靠地向用户发送消息,而不是通过用户交互,您将需要来自FB的订阅消息传递权限,该权限目前处于限制性测试阶段。

Subscription Messaging仅限于来自新闻,个人追踪器和效率类别中的应用的非广告消息。如果您的机器人符合其中一个类别,您可能会获得执行所需操作的权限。

如果没有,您仍然可以向用户发送通知,但每次都需要引发他们的响应(按下按钮,文本响应)以获得超出标准消息的24小时限制之外的其他消息。这些消息可以是促销信息。

2)当您拥有其他应用或网页的用户ID时,要获取用户的网页范围ID,请使用ID匹配API。

您必须创建一个FB Business帐户(如果您还没有)并将您的应用和页面与业务相关联,请按照ID Matching API Docs中的指南进行操作。

要获取您的商家帐户拥有的网页的所有网页范围ID,当您拥有用户的应用ID时(以FB登录为例),您将向Graph API发出以下请求:

GET /{user-id}/ids_for_pages
    ?access_token=[app_access_token]
    &appsecret_proof=[appsecret_proof]

您将收到类似于此的回复,其中包含您的企业帐户所拥有的每个页面的指定用户的页面范围ID:

"data": [
      {
        "id": "12345123", // The psid for the user for that page
        "page": {
          "category": "Musician",
          "link": "https://www.facebook.com/Johns-Next-Great-Thing-380374449010653/",
          "name": "John's Next Great Thing",
          "id": "380374449010653"
        }
      }
    ]