使用 Messenger 发布游戏更新

Facebook 小游戏可以附加 Messenger 平台智能助手。这项功能虽为可选配置,却为游戏吸引玩家再次参与提供了有效的渠道。以下说明如何创建和设置游戏智能助手:

第 1 步:创建主页

如需创建游戏智能助手,你首先需要创建 Facebook 主页。为了让主页与小游戏正确关联,主页需要符合一些特定条件:

  • 主页类别需要是并且也只能是应用主页
  • 主页名称需要包含应用名称
  • 主页不能与其他应用关联

如要创建符合这些条件的主页,请访问你的“应用面板”,并按以下步骤操作:

  1. 在“产品”菜单中,展开“小游戏”下拉菜单,选择详情
  2. 在“详情”页面,找到名称为“应用主页”的版块,然后点击创建新主页
  3. 前往小游戏产品的“应用主页”版块。在执行下一步操作前,请确保应用主页版块如右图所示:

请注意如果小游戏未与上述类型的主页正确关联,智能助手将无法收到 messaging_game_plays 事件

第 2 步:激活智能助手

创建主页后,你需要确保响应其消息 Webhook。Webhook 是在向你的主页发送消息事件时,我们向你的后端发送的 HTTP 调用。之后,你的服务器的逻辑将决定如何正确地响应每个事件(如果响应适当)。如需将服务器的端点与主页事件相关联,请按照 Messenger 平台快速入门教程中的说明为主页启用智能助手。下表介绍了将智能助手与小游戏关联所需的 Webhook 和权限:

部分

主页事件

messagesmessaging_game_plays

权限

pages_messaging

小游戏智能助手仅可使用标准消息,不能使用 pages_messaging_subscriptions。注意:发送智能助手消息时,请勿使用 GAME_EVENT消息标签,因为已不再支持此功能。

如果你的智能助手具有需要用到订阅消息客户匹配的其他功能,你应创建单独的应用,并重新申请 Messenger 平台权限。

步骤 3:响应 messaging_game_plays Webhook

正确配置智能助手后,你的服务器端应用程序将开始在玩家每次关闭小游戏时接收 messaging_game_plays Webhook。下方示例展示服务器端应用程序检测到其中一个 Webhook 并发出响应的情形。

if (event.game_play) {
  var senderId = event.sender.id; // Messenger sender id
  var playerId = event.game_play.player_id; // Instant Games player id
  var contextId = event.game_play.context_id; 
  var payload = event.game_play.payload;
  var playerWon = payload['playerWon'];
  if (playerWon) {
    sendMessage(
      senderId, 
      contextId, 
      'Congratulations on your victory!', 
      'Play Again'
    );

  } else {
    sendMessage(
      senderId, 
      contextId, 
      'Better luck next time!', 
      'Rematch!'
    );
  }
}

你可以参阅 Messenger 平台文档,了解有关 Webhook 的详细信息:“玩游戏”Webhook 文档

步骤 4:吸引玩家重回游戏

下方示例说明如何使用图谱 API 向玩家发送 game_play 按钮。

curl "https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>" 
   -X POST 
   -H "Content-Type: application/json" 
   -d '{
  "messaging_type": "UPDATE",
  "recipient": {
    "id": "<RECIPIENT_ID>"
  },
  "message": {
    "attachment": {
      "type": "template",
      "payload": {
        "template_type": "generic",
        "elements": [
          {
            "title": "It has been a while since your last game. Time to get back",
            "buttons": [
              {
                "type": "game_play",
                "title": "Play Tic-Tac-Toe.",
                "payload": "{}",
                "game_metadata": {
                  "context_id": "<CONTEXT_ID>"
                }
              }
            ]
          }
        ]
      }
    }
  }
}'

你可以参阅 Messenger 平台文档,了解有关此按钮的详细信息:“玩游戏”按钮文档

步骤 5:遵循我们的指南和政策

在发布到生产环境之前,你的游戏智能助手应通过 Messenger 平台提交流程。提交审核前,请务必查看我们的智能助手检查表

游戏更新配额 API

如要确认可向用户发送游戏更新的时间范围和数量,可使用 game_bots_quota API。

GET graph.facebook.com/me?fields=game_bots_quota.recipient_id(<PSID>)&access_token=<page_access_token>

响应

"game_bots_quota": {
    "count": {a number indicating the remaining number of Game Updates that can be sent to a given user},
    "time_window": {a number indicating the remaining time that your game can send Game Updates to a given user},
}

更多背景信息

  1. 如果用户未订阅“使用 Messenger 发布游戏更新”,调用此 API 将返回错误代码 551 和消息此用户目前不可用
  2. 如果此用户没有剩余配额可用,则响应将为 {count: 0, time_window: 0}

参考文档

请参阅下方文档,详细了解如何通过 Messenger 创建和优化游戏更新。

后续步骤

在了解如何使用通过 Messenger 创建和设置的游戏更新来构建小游戏后,现在便可测试小游戏并做好发布准备了:测试、发布和分享您的小游戏