ほとんどのメッセージテンプレート、および固定メニューは、さまざまなタイプのアクションを呼び出すボタンをサポートします。これらのボタンを使用すると、Messengerウェブビューで開く、支払いフローを開始する、Webhookにポストバックメッセージを送るなど、テンプレートへの応答方法をメッセージの受信者に提示できます。
メッセージテンプレートの場合、ボタンはbuttons
配列内のオブジェクトによって定義されます。固定メニューの場合、ボタンはcall_to_actions
配列内のオブジェクトによって定義されます。
URLボタンは、Messengerウェブビューでウェブページを開きます。これにより、スレッドにウェブベースのエクスペリエンスを与えることができ、開発の際の柔軟性も増します。例えば、スレッドに製品概要を表示した後、URLボタンを使用すると、ウェブサイトで実際の製品ページを開くことができます。
サイトにアプリリンクが含まれている場合、ボタンは指定されたネイティブアプリを起動します。
Facebookクローラーは、リダイレクトを実行するためにアプリリンクメタタグを読み取る必要があります。ウェブサイトにタグを実装しただけなら、シェアデバッガーツールで新しいスクレイピングをリクエストすることができます。クローラーがサイトをスクレイピングした後、送信された新しいURLボタンはリダイレクト動作に従うはずです。
URLボタンは、以下で使用できます。
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イベントを参照してください。
ボタンを使用すると、特定のメッセージに対してフォローアップの操作や、さらなるやり取りを促すことができます。
実行しようとしているアクションの内容を利用者が理解しやすいように、動詞を使用するようにしてください。
ウェブサイト上で行ってほしいタスク(購入、アカウントのリンクなど)の場合にURLボタンを使用します。Messengerの外部に移動することを明示します。
コールバックボタンのタップ後に応答を送信します。そうすることで、アクションを確実に処理または完了できます(予約のキャンセル、質問への返答など)。
ボタンは常にスレッドに表示されるため、ボットの現在の状態によってアクションが変わる場合はボタンを使用しないでください。
使用する単語は1~3語とし、句読点は追加しないでください。テキストはスペースを含めて20文字未満に収めるようにしてください。
各ボタンに設定したURLに依存しないでください。できるだけMessenger内でやり取りが完結する方が、操作が円滑になります。
コールバックボタンは複数設定するようにしてください。選択するボタンが1つしかないと、利用者はそのボタンをメッセージテキストの続きを読むためのものだと考え、アクションを実行するためとは認識しなくなります。