ボタン

ほとんどのメッセージテンプレート、および固定メニューは、さまざまなタイプのアクションを呼び出すボタンをサポートします。これらのボタンを使用すると、Messengerウェブビューで開く、支払いフローを開始する、Webhookにポストバックメッセージを送るなど、テンプレートへの応答方法をメッセージの受信者に提示できます。

メッセージテンプレートの場合、ボタンはbuttons配列内のオブジェクトによって定義されます。固定メニューの場合、ボタンはcall_to_actions配列内のオブジェクトによって定義されます。

URLボタン

URLボタンは、Messengerウェブビューでウェブページを開きます。これにより、スレッドにウェブベースのエクスペリエンスを与えることができ、開発の際の柔軟性も増します。例えば、スレッドに製品概要を表示した後、URLボタンを使用すると、ウェブサイトで実際の製品ページを開くことができます。

サイトにアプリリンクが含まれている場合、ボタンは指定されたネイティブアプリを起動します。

Facebookクローラーは、リダイレクトを実行するためにアプリリンクメタタグを読み取る必要があります。ウェブサイトにタグを実装しただけなら、シェアデバッガーツールで新しいスクレイピングをリクエストすることができます。クローラーがサイトをスクレイピングした後、送信された新しいURLボタンはリダイレクト動作に従うはずです。

サポートされる用途

URLボタンは、以下で使用できます。

  • 固定メニュー
  • 一般テンプレート
  • リストテンプレート
  • ボタンテンプレート
  • メディアテンプレート

MessengerエクステンションSDK - 必須ドメインのホワイトリスト登録

MessengerウェブビューでMessengerエクステンションSDKが有効になっているウェブページを表示するには、ボットのMessengerプロフィールのwhitelisted_domainsプロパティで、ドメイン(サブドメインを含む)をホワイトリストに登録する必要があります。これにより、信頼できるドメインのみが、SDK関数を介して利用可能なユーザー情報にアクセスできるようになります。

ドメインのホワイトリスト登録について詳しくは、whitelisted_domainsのリファレンスをご覧ください。

ボタンフォーマット

ボタンプロパティの一覧は、URLボタンのリファレンスで参照してください。

{
  "type": "web_url",
  "url": "

ポストバックボタン

postbackボタンは、payloadプロパティに文字列設定して、messaging_postbacksイベントをWebhookに送信します。これにより、ボタンがタップされたときに任意のアクションを実行できます。例えば、製品リストを表示した後に、ポストバックで製品IDをWebhookに送信すると、それを使用してデータベースにクエリし、製品の詳細が構造化メッセージとして返されます。

サポートされる用途

ポストバックボタンは、以下で使用できます。

  • 固定メニュー
  • 一般テンプレート
  • リストテンプレート
  • ボタンテンプレート
  • メディアテンプレート

ボタンフォーマット

ボタンプロパティの一覧は、ポストバックボタンのリファレンスで参照してください。

{
  "type": "postback",
  "title": "

通話ボタン

通話ボタンをタップすると、設定した電話番号に電話をかけられます。電話番号は+<COUNTRY_CODE><PHONE_NUMBER>のフォーマット(例: +15105559999)にします。

サポートされる用途

通話ボタンは、以下で使用できます。

  • 一般テンプレート
  • リストテンプレート
  • ボタンテンプレート
  • メディアテンプレート

ボタンフォーマット

ボタンプロパティの一覧は、通話ボタンのリファレンスで参照してください。

{
  "type":"phone_number",
  "title":"

ログインボタン

ログインボタンは、アカウントのリンクフローで使用され、メッセージ受信者を認証のためのウェブベースのログインフローに誘導し、Messenger上のIDをサイト上のアカウントとリンクします。

アカウントのリンクのためのログインボタンの使用に関する詳細は、アカウントのリンクをご覧ください。

サポートされる用途

ログインボタンは、以下で使用できます。

  • 一般テンプレート
  • リストテンプレート
  • ボタンテンプレート
  • メディアテンプレート

ボタンフォーマット

ボタンプロパティの一覧は、ログインボタンのリファレンスで参照してください。

{
  "type": "account_link",
  "url": "

ログアウトボタン

ログアウトボタンは、アカウントのリンクフローで使用され、メッセージ受信者のMessenger上のIDをサイトのアカウントからリンク解除します。

アカウントのリンクを解除するためのログアウトボタンの使用に関する詳細は、アカウントのリンクをご覧ください。

サポートされる用途

ログアウトボタンは、以下で使用できます。

  • 一般テンプレート
  • リストテンプレート
  • ボタンテンプレート
  • メディアテンプレート

ボタンフォーマット

ボタンプロパティの一覧は、ログアウトボタンのリファレンスで参照してください。

{
  "type": "account_unlink"
}

ゲームプレイボタン

ゲームプレイボタンでは、Facebookページにリンクされているインスタントゲームを開きます。ゲームの開き方は、起動時にゲームに送信されるリクエスト内のpayloadプロパティや、ボットが単一のプレイヤーまたは既存のグループに対して特定のコンテキストでゲームをスタートできるようにするオプションのgame_metadata.player_idプロパティまたはgame_metadata.context_idプロパティを設定することでカスタマイズできます。

ボタンフォーマット

payloadプロパティは、シリアライズされたJSONでなければなりません。これは、Instant Game SDKで逆シリアル化されます。

ボタンプロパティの一覧は、ゲームプレイボタンのリファレンスで参照してください。

{
  "type":"game_play",
  "title":"Play",
  "payload":"{<SERIALIZED_JSON_PAYLOAD>}",
  "game_metadata": { // Only one of the below
    "player_id": "<PLAYER_ID>",
    "context_id": "<CONTEXT_ID>"
  }
}

ユーザーがゲームのラウンドを終えたときにボットに送信されるイベントについては、ゲームプレイWebhooksイベントを参照してください。

予約ボタン

予約ボタンを使用すると、ユーザーに予約の招待を送ることができます。ユーザーに予約の招待を送る前に、カレンダーと営業時間をページに設定する必要があります。ボタンをクリックするとネイティブの予約UIが開きます。

プロパティの一覧については、予約ボタンのリファレンスをご覧ください

ボタンフォーマット

{
  "type": "booking"
}

ベストプラクティス

ボタンを使用すると、特定のメッセージに対してフォローアップの操作や、さらなるやり取りを促すことができます。

実行しようとしているアクションの内容を利用者が理解しやすいように、動詞を使用するようにしてください。

ウェブサイト上で行ってほしいタスク(購入、アカウントのリンクなど)の場合にURLボタンを使用します。Messengerの外部に移動することを明示します。

コールバックボタンのタップ後に応答を送信します。そうすることで、アクションを確実に処理または完了できます(予約のキャンセル、質問への返答など)。

ボタンは常にスレッドに表示されるため、ボットの現在の状態によってアクションが変わる場合はボタンを使用しないでください。

使用する単語は1~3語とし、句読点は追加しないでください。テキストはスペースを含めて20文字未満に収めるようにしてください。

各ボタンに設定したURLに依存しないでください。できるだけMessenger内でやり取りが完結する方が、操作が円滑になります。

コールバックボタンは複数設定するようにしてください。選択するボタンが1つしかないと、利用者はそのボタンをメッセージテキストの続きを読むためのものだと考え、アクションを実行するためとは認識しなくなります。