Messenger를 통한 게임 업데이트

Facebook 인스턴트 게임은 Messenger 플랫폼 봇을 연결할 수 있습니다. 이 기능은 선택 사항이지만 게임에 재참여를 유도할 수 있는 강력한 채널로 활용할 수 있습니다. 게임 봇을 만들고 설정하는 방법은 다음과 같습니다.

1단계: 페이지 만들기

게임 봇을 만들려면 먼저 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단계: 가이드라인 및 정책 준수

봇은 출시를 시작하기 전에 먼저 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를 통해 관련 게임 업데이트로 인스턴트 게임을 빌드하는 방법을 알게 되었으니 이제 이를 테스트하고 출시를 준비할 때입니다. 자세한 내용은 인스턴트 게임 테스트, 공개 및 공유를 참조하세요.