透過 Messenger 更新遊戲

Facebook 即時遊戲能夠與 Messenger 平台 Bot 連結。雖然並非必要,但為遊戲提供了吸引用戶再次互動的絕佳管道。以下說明如何建立與設定遊戲 Bot:

步驟 1:建立粉絲專頁

若要建立遊戲 Bot,首先需要建立 Facebook 粉絲專頁。為了能夠與即時遊戲正確搭配,粉絲專頁需要符合以下的一些特別條件:

  • 粉絲粉絲專頁的類別必須為應用程式粉絲專頁(且僅限該類別)
  • 粉絲專頁的名稱必須包含應用程式的名稱
  • 粉絲專頁不可連結其他應用程式。

若要使用這些條件建立粉絲專頁,請前往應用程式主控板並遵照以下步驟操作:

  1. 在「產品」功能表中,展開「即時遊戲」下拉式清單,然後選擇「詳細資訊」
  2. 在「詳細資訊」頁面上,找到標題為「應用程式粉絲專頁」的區塊,然後點擊「建立新的粉絲專頁」
  3. 前往即時遊戲產品的應用程式粉絲專頁區塊。繼續下一步驟前,請確認應用程式粉絲專頁區塊是否類似右側步驟所示:

注意如未照上述方式將即時遊戲與粉絲專頁正確連結,Bot 將無法接收 messaging_game_plays 事件

步驟 2:啟用 Bot

建立粉絲專頁後,您必須確認是否回覆其訊息 Webhooks。Webhooks 是當訊息事件傳送至粉絲專頁時,我們向您的後端傳送的 HTTP 呼叫。如果回覆為適當的動作,您伺服器的邏輯會決定如何正確回覆每個事件。若要將伺服器的端點連結至粉絲專頁事件,請依照 Messenger 開放平台快速入門教學中的指示,啟用粉絲專頁的 Bot。若要讓 Bot 可搭配即時遊戲,您需要下表包含 Webhooks 和權限的相關資訊:

區塊

粉絲專頁事件

messagesmessaging_game_plays

權限

pages_messaging

即時遊戲 Bot 僅允許使用標準訊息,但不可使用 pages_messaging_subscriptions。注意:由於不再支援 Bot,因此傳送 Bot 訊息時,請勿使用 GAME_EVENT訊息標籤

如果您的 Bot 有其他需要訂閱訊息顧客配對才能使用的功能,應該建立不同的應用程式,並再次申請 Messenger 平台權限。

步驟 3:回覆 messaging_game_plays Webhooks

正確設定 Bot 後,只要玩家關閉即時遊戲,您的伺服器應用程式就會開始接收 messaging_game_plays Webhooks。以下範例說明伺服器應用程式如何偵測與回覆其中一項 Webhooks。

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!'
    );
  }
}

如需深入瞭解此 Webhook,請參閱 Messenger 平台文件:「玩遊戲」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:遵守準則和政策

正式推出前,您的遊戲 Bot 應該進行 Messenger 平台提交程序。提交供審查前,請務必查看 Bot 檢查清單

遊戲更新額度 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,並顯示:This person isn't available right now(這名用戶目前沒空。)
  2. 如果用戶沒有剩餘額度,回應會是 {count: 0, time_window: 0}

參考資料

請參閱以下文件,進一步瞭解如何透過 Messenger 組建及最佳化遊戲更新。

後續步驟

現在您已瞭解如何使用相關的「透過 Messenger 更新遊戲」組建即時遊戲,接下來可以測試遊戲並準備推出:測試、發佈及分享即時遊戲