Wir stellen die On-Premises API ein. Weitere Informationen und wie du auf unsere Cloud API der nächsten Generation migrieren kannst, findest du in unserem Dokument zur Einstellung der On-Premises API.
In diesem Leitfaden erfährst du, wie du jede der Optionen von interaktiven Nachrichten sendest. Dank interaktiver Nachrichten können deine Benutzer*innen auf WhatsApp leichter finden, was sie von deinem Unternehmen benötigen. Bei Tests erreichten Chatbots, die interaktive Nachrichten-Features verwendeten, wesentlich höhere Reaktionsraten und Conversions als textbasierte Chats.
Arten von interaktiven Nachrichten:
Textnachrichten im Vergleich zu interaktiven Nachrichten:
Hier ist ein Beispiel, wie du Listennachrichten und Antwort-Buttons im selben Vorgang kombinieren kannst:
Im Vergleich zu textbasierten Listen bieten interaktive Nachrichten ein einfacheres und konsistenteres Format, sodass Benutzer*innen finden und auswählen können, was sie von einem Unternehmen benötigen. Während der Testphase zeigte sich, dass Benutzer*innen die Interaktion mit diesen Features leichter fällt.
Bei Tests erreichten Chatbots, die interaktive Nachrichten-Features verwendeten, wesentlich höhere Reaktionsraten und Conversions als textbasierte Chats.
Sie werden in Echtzeit dynamisch ausgefüllt und können daher für Kund*innen oder Situationen personalisiert werden. Du kannst zum Beispiel eine Listennachricht mit verfügbaren Zeitfenstern für eine Terminbuchung anzeigen oder Antwort-Buttons verwenden, um vorherige Lieferadressen anzuzeigen.
Für interaktive Nachrichten sind keine Vorlagen oder Vorabgenehmigungen erforderlich.
Listennachrichten eignen sich am besten, wenn du mehrere Optionen angeben möchtest, wie dies:
Antwort-Buttons eignen sich hervorragend für schnelle Antworten anhand einer begrenzten Auswahl von Optionen wie diese:
Antwort-Buttons sind besonders nützlich in „personalisierten“ Anwendungsfällen, bei denen eine allgemeine Antwort nicht passend ist.
Flows-Nachrichten eignen sich am besten für eine strukturierte Kommunikation auf einem oder mehreren Bildschirm, wie z. B.:
Flows-Nachrichten ermöglichen es Unternehmen, ein umfassenderes und ansprechenderes Nutzungserlebnis zu bieten, das Kund*innen dabei helfen kann, Sachen auf WhatsApp schneller zu erledigen, ohne zu einer anderen App oder Website wechseln zu müssen.
Auf API-Ebene werden interaktive Nachrichten festgelegt, indem du den type
einer Nachricht auf interactive
setzt und das interactive
-Objekt hinzufügst. Im Allgemeinen umfassen diese Nachrichten vier Hauptteile: header
, body
, footer
und action
:
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive" "interactive":{ "type": "list" | "button" | ..., "header": {}, "body": {}, "footer": {}, "action": {} } }
Weitere Informationen über das Senden dieser Nachrichten findest du unten.
Bevor du eine Nachricht senden kannst, musst du die WhatsApp-ID des*der Empfänger*in mit einem Aufruf an den /contacts
-Node abrufen.
Wir empfehlen dir, deine Webhooks zum Empfangen des Nachrichtenstatus und von Benachrichtigungen über eingehende Nachrichten einzurichten. Auf diese Weise kannst du verfolgen, ob deine Nachricht gesendet wurde und was Kund*innen geantwortet haben. Weitere Informationen findest du unter Webhooks.
interactive
-Objekt zusammenstellenZum Senden einer Listennachricht stelle ein interactive
-Objekt des Typs list
mit den folgenden Komponenten zusammen:
Objekt | Beschreibung |
---|---|
| Optional. Wenn du dieses Objekt verwendest, musst du den Typ des Headers auf „text“ festlegen und ein Textfeld mit dem gewünschten Inhalt hinzufügen. Maximal 60 Zeichen. |
| Erforderlich. Der Text deiner Nachricht. Maximal 1024 Zeichen. |
| Optional. Die Fußzeile deiner Nachricht. |
| Erforderlich. Innerhalb des Aktionsobjekts musst du Folgendes einbetten:
Innerhalb von |
Am Ende sollte dein interactive
-Objekt in etwa wie folgt aussehen:
"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", } ] }, ... ] } }
Zum Senden einer Antwort-Button-Nachricht stelle ein interactive
-Objekt des Typs button
mit den folgenden Komponenten zusammen:
Objekt | Beschreibung |
---|---|
| Optional. Für interaktive Nachdem du den
Beispiel: "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" } } } |
| Erforderlich. |
| Optional. |
| Erforderlich. Du musst mindestens einen Wenn du die ID festlegst, darf sie nicht mit einem Leerzeichen beginnen oder enden. Beispiel: "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" } } ] } |
Am Ende sollte dein interactive
-Objekt in etwa wie folgt aussehen:
"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
Standortabfragenachrichten enthalten einen Nachrichtentext und einen Button Standort senden, auf den Benutzer*innen tippen können. Durch das Tippen auf den Button wird ein Bildschirm für die Standortfreigabe angezeigt, über den Benutzer*innen ihren Standort freigeben können.
Stelle zum Senden einer Standortabfragenachricht zunächst ein interactive
-Objekt mit dem Text zusammen, der in der Nachricht angezeigt werden soll:
{ "type": "location_request_message", "body": { "type": "text", "text": "<TEXT>" }, "action": { "name": "send_location" } }
Eigenschaft | Beschreibung |
---|---|
| Auf |
| Auf |
| Auf den Text festgelegt, der über dem Button Standort senden angezeigt werden soll. |
| Auf |
Flows-Nachrichten enthalten einen Call-to-Action-Button, auf den Benutzer*innen tippen können. Wenn sie auf den Button tippen, sehen sie deinen selbstdefinierten Flow.
Zum Senden einer Flows-Nachricht stelle ein interactive
-Objekt des Typs flow
zusammen. Hier findest du alle Details.
Nachdem du dein interactive-Objekt fertiggestellt hast, füge die anderen Parameter an, die eine Nachricht ausmachen: recipient_type
, to
und type
. Denke daran, type
auf interactive
festzulegen.
{ "recipient_type": "individual", "to" : "whatsapp-id", // WhatsApp ID of your recipient "type": "interactive", "interactive":{ // Your interactive object } }
Hier findest du allgemeine Parameter, die allen Nachrichtentypen gemein sind.
POST
-Aufruf an /messages
sendenSende einen POST
-Aufruf mit dem JSON
-Objekt, das du in den Schritten 1 und 2 erstellt hast, an den /messages
-Endpunkt. Wenn deine Nachricht erfolgreich gesendet wird, erhältst du die folgende Antwort:
{ "messages": [{ "id": "{message-id}" }] }
Wenn du deine Webhooks eingerichtet hast, prüfe sie auf Änderungen deines Nachrichtenstatus und auf eingehende Nachrichten von deinen Benutzer*innen.
Webhooks für Benutzer*innen, die auf interaktive Nachrichten antworten, enthalten eine neue Komponente mit dem Namen interactive
. Diese enthält Informationen über die Auswahl des*der Benutzer*in. Weitere Informationen findest du unter Webhooks, Komponenten.
Dies ist ein Beispiel für eine Webhook-Anfrage, die eine*n Benutzer*in beschriebt, der*die seinen*ihren Standort freigegeben hat.
{ "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" } ] } ] }
Die location
-Komponente in der Payload enthält den Breiten- und Längengrad des*der Benutzer*in. Beachte, dass address
und name
optional für Benutzer*innen sind und möglicherweise nicht enthalten sind.
"location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 40.782910059774, "longitude": -73.959075808525, "name": "Solomon R. Guggenheim Museum" #Optional }