Messengerによるゲームアップデート

Facebookインスタントゲームには、Messengerプラットフォームボットをアタッチすることができます。この機能は任意ですが、再エンゲージメントに効果的なチャネルをゲームに組み込むことができます。ゲームボットの作成と設定方法は、次のとおりです。

ステップ1:Facebookページを作成

ゲームボットを作成するには、まずFacebookページを作成する必要があります。ページとインスタントゲームを正しく連動させるためには、次のようないくつかの特定の条件を満たしている必要があります。

  • ページのカテゴリはアプリページ(このカテゴリのみ)にする必要があります。
  • ページ名には、アプリの名前を含める必要があります。
  • ページを別のアプリに関連付けることはできません

この条件を満たしたページを作成するには、[アプリダッシュボード]に移動して、次のステップを従います。

  1. [製品]メニューで、[インスタントゲーム]ドロップダウンを展開して、[詳細]を選択します。
  2. [詳細]ページで、[アプリページ]というセクションにある[新しいページを作成]をクリックします。
  3. [インスタントゲーム]製品の[アプリページ]セクションに移動します。次のステップに進む前に、[アプリページ]セクションが右側のステップのようになっていることを確認します。

:上述の手順のようにインスタントゲームがページに正しく関連付けられていないと、ボットはmessaging_game_playsイベントを受け取ることができません。

ステップ2:ボットをアクティブにする

ページを作成したら、メッセージWebhooksに応答することを確認します。Webhooksは、メッセージイベントがページに送信されたときに、バックエンドに送信されるHTTPコールです。応答が適切であった場合は、サーバーのロジックによって、各イベントへの適切な応答方法が決まります。サーバーのエンドポイントをページのイベントに関連付けるには、Messengerプラットフォームのクイックスタートチュートリアルの指示に従って、ページのボットを有効にします。下の表には、ボットとインスタントゲームを連動させる際に必要なWebhooksとアクセス許可の情報が記載されています。

セクション

ページのイベント

messagesmessaging_game_plays

アクセス許可

pages_messaging

インスタントゲームのボットで使用できるのは、標準メッセージのみです。pages_messaging_subscriptionsは使用できません。注: ボットメッセージを送信する場合、GAME_EVENTメッセージタグを使用しないでください。これはサポートされていません。

サブスクリプションメッセージまたはカスタマーマッチングを必要とする他の機能をボットに実装している場合は、別のアプリを作成し、Messengerプラットフォームのアクセス許可を再申請してください。

ステップ3: messaging_game_plays Webhooksに応答する

ボットが正しく設定されると、プレイヤーがインスタントゲームを終了するたびに、サーバーアプリが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:Facebookのガイドラインとポリシーに従う

本番環境にリリースする前に、ゲームボットの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が返され、「This person isn't available right now (現在この人を対象にすることはできません)」というメッセージが出ます。
  2. そのユーザーのためのクォータが残っていない場合、応答は{count: 0, time_window: 0}になります。

リファレンス

Messengerによるゲームアップデートを構築して最適化する方法の詳細については、以下のドキュメントを参照してください。

次のステップ

インスタントゲームとそれに付随するMessengerによるゲームアップデートを構築する方法について知ることができました。次に、それをテストしてリリースできるように準備しましょう: インスタントゲームのテスト、公開、共有