オンプレミスAPIを終了します。詳細と次世代クラウドAPIへの移行方法については、オンプレミスAPIの終了のドキュメントを参照してください。
このガイドでは、各インタラクティブメッセージの送信方法を説明します。インタラクティブメッセージを使うと、ユーザーは、WhatsApp上でビジネスに対して要求したいことを簡単に見つけ、選択することができます。テストでは、インタラクティブメッセージ機能を使用したチャットボットの場合、テキストベースのメッセージよりも返信率とコンバージョンが大幅に高くなりました。
インタラクティブメッセージの種類:
テキストメッセージとインタラクティブメッセージを比較すると、以下のようになります。
以下の例のように、リストメッセージと返信ボタンを1つのフロー内で組み合わせることができます。
インタラクティブメッセージの場合、テキストベースのリストよりもシンプルかつ一貫したフォーマットで、ユーザーがビジネスに要求したいことを見つけ、選択できます。テストでは、インタラクティブメッセージの方がユーザーの理解度が高いという結果が出ています。
テストでは、インタラクティブメッセージ機能を使用したチャットボットの場合、テキストベースのメッセージよりも返信率とコンバージョンが大幅に高くなりました。
リアルタイムで動的にデータを入力できるため、顧客や状況に合わせてパーソナライズできます。例えば、予約可能日時を選択できるリストメッセージを表示したり、返信ボタンで以前の配送先住所を表示したりすることができます。
インタラクティブメッセージにはテンプレートや事前承認は必要ありません。
リストメッセージは、複数のオプションを提示する場合に最適です。例として以下が挙げられます。
返信ボタンは、限られた数の選択肢を提供し、すぐに返信を得る場合に最適です。
返信ボタンは、一般的な回答では十分でない「パーソナライズされた」ユースケースに特に役立ちます。
Flowsメッセージは、次のような1つまたは複数の画面での構造化コミュニケーションに最適です。
Flowsメッセージを使用すると、企業はより豊かで魅力的なユーザーエクスペリエンスを提供できるようになり、顧客は必ずしも別のアプリに切り替えたり、ウェブサイトにアクセスしたりする必要がなく、WhatsAppで作業を迅速に完了できるようになります。
APIレベルでインタラクティブメッセージを設定するには、メッセージのtype
をinteractive
に指定し、interactive
オブジェクトを追加します。通常、このようなメッセージには主にheader
、body
、footer
、action
の4つの部分が含まれています。
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive" "interactive":{ "type": "list" | "button" | ..., "header": {}, "body": {}, "footer": {}, "action": {} } }
こうしたメッセージの送信方法については後述します。
各メッセージを送信する前に、/contacts
ノードを呼び出して受信者のWhatsApp IDを取得する必要があります。
Webhooksを設定して、メッセージステータスと着信メッセージの通知を受け取ることをおすすめします。そうすれば、メッセージが送信されたかどうかや、ユーザーからの回答をトラッキングすることができます。詳しくは、Webhooksをご覧ください。
interactive
オブジェクトを構成するリストメッセージを送信するには、list
タイプのinteractive
オブジェクトに以下の要素を指定します。
オブジェクト | 説明 |
---|---|
| 任意。 これを含める場合は、ヘッダーのタイプをテキストに設定し、任意のコンテンツを指定したテキストフィールドを追加する必要があります。最大60文字。 |
| 必須。 メッセージ本文。最大1024文字。 |
| 任意。 メッセージのフッター。 |
| 必須。 アクション内に以下をネストする必要があります。
|
最終的に、interactive
オブジェクトは次のようになるはずです。
"interactive":{ "type": "list", "header": { "type": "text", "text": "your-header-content" }, "body": { "text": "your-text-message-content" }, "footer": { "text": "your-footer-content" }, "action": { "button": "cta-button-content", "sections":[ { "title":"your-section-title-content", "rows": [ { "id":"unique-row-identifier", "title": "row-title-content", "description": "row-description-content", } ] }, { "title":"your-section-title-content", "rows": [ { "id":"unique-row-identifier", "title": "row-title-content", "description": "row-description-content", } ] }, ... ] } }
返信ボタンメッセージを送信するには、button
タイプのinteractive
オブジェクトに以下の要素を指定します。
オブジェクト | 説明 |
---|---|
| 任意。
例: "header": { "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } } |
| 必須。 |
| 任意。 |
| 必須。
IDを設定するときには、前後にスペースがあってはなりません。 例: "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } |
最終的に、interactive
オブジェクトは次のようになるはずです。
"interactive": { "type": "button", "header": { # optional "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, # end header "body": { "text": "your-text-body-content" }, "footer": { # optional "text": "your-text-footer-content" }, "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } # end action } # end interactive
位置情報リクエストメッセージには、本文と、ユーザーがタップできる[位置情報を送信する]ボタンが含まれます。ボタンをタップすると位置情報の共有画面が表示され、ユーザーは位置情報を共有することができます。
位置情報リクエストメッセージを送信するには、メッセージに表示するテキストを、interactive
オブジェクトに次のように指定します。
{ "type": "location_request_message", "body": { "type": "text", "text": "<TEXT>" }, "action": { "name": "send_location" } }
プロパティ | 説明 |
---|---|
|
|
|
|
| [位置情報を送信する]ボタンの上に表示するテキストを指定します。 |
|
|
Flowsメッセージには、ユーザーがタップできるCTAボタンが含まれています。ボタンをタップするとカスタムフローが表示されます。
Flowsメッセージを送信するには、flow
タイプのinteractive
オブジェクトをアセンブルする必要があります。詳しくは、こちらをご覧ください。
インタラクティブオブジェクトが完成したら、メッセージを構成するその他のパラメーターとして、recipient_type
、to
、type
を追加します。type
を必ずinteractive
に設定してください。
{ "recipient_type": "individual", "to" : "whatsapp-id", // WhatsApp ID of your recipient "type": "interactive", "interactive":{ // Your interactive object } }
すべてのメッセージタイプに共通するパラメーターについては、こちらをご覧ください。
/messages
に対してPOST
呼び出しを行うステップ1と2でアセンブルしたJSON
オブジェクトを使って、/messages
エンドポイントに対してPOST
呼び出しを発行します。メッセージが正常に送信されると、次の応答を受け取ります。
{ "messages": [{ "id": "{message-id}" }] }
Webhooksを設定した場合、メッセージステータスの変化とユーザーからの返信をチェックします。
インタラクティブメッセージに応答するユーザーのWebhooksには、interactive
という新しいコンポーネントがあり、ユーザーの選択に関する情報が含まれています。詳しくは、Webhooks、コンポーネントをご覧ください。
以下は、位置情報をシェアしたユーザーに関するWebhooksリクエストの例です。
{ "object": "whatsapp_business_account", "entry": [ { "id": "12345", "changes": [ { "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "12345", "phone_number_id": "12345" }, "contacts": [ { "profile": { "name": "John Doe" }, "wa_id": "12345" } ], "messages": [ { "context": { "from": "12345", "id": "test-id" }, "from": "123450", "id": "test-id", "timestamp": "16632", "location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 37.421996751527, "longitude": -122.08407156636, "name": "Solomon R. Guggenheim Museum" #Optional }, "type": "location" } ] }, "field": "messages" } ] } ] }
ペイロード内のlocation
コンポーネントには、ユーザーの緯度と経度が含まれています。address
とname
を含めるかはユーザーが任意に選択できるため、含まれていない場合があります。
"location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 40.782910059774, "longitude": -73.959075808525, "name": "Solomon R. Guggenheim Museum" #Optional }