Du kannst die API verwenden, um folgende Arten von Nachrichten zu senden:
Alle diese Nachrichten, außer Reaktionsnachrichten, können als Antwort gekennzeichnet werden.
Verwende den Endpunkt POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID/messages, um Nachrichten an WhatsApp-Benutzer*innen zu senden:
POST /<WHATSAPP_BUSINESS_PHONE_NUMBER>/messages
Alle Anfragen zum Senden von Nachrichten verwenden das folgende allgemeine übergeordnete Objektformat.
{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "<TO>", "type": "<TYPE>", /* TEXT MESSAGES ONLY */ "text": {<TEXT>} /* REACTION MESSAGES ONLY */ "reaction": {<REACTION>} /* MEDIA MESSAGES ONLY. FOR EXAMPLE, FOR IMAGE MEDIA: */ "image": {<IMAGE>} /* LOCATION MESSAGES ONLY */ "location": {<LOCATION>} /* CONTACTS MESSAGES ONLY */ "contacts": {<CONTACTS>} /* INTERACTIVE MESSAGES ONLY */ "interactive": {<INTERACTIVE>} /* TEMPLATE MESSAGES ONLY */ "template": {<TEMPLATE>} }
Platzhalter | Beschreibung | Beispielwert |
---|---|---|
String | Die WhatsApp-ID oder Telefonnummer des*der Kund*in, an die die Nachricht gesendet werden soll. Siehe Formate von Telefonnummern |
|
String | Gibt den Nachrichtentyp an. |
|
Objekt | Inhalte von Textnachrichten. | Siehe Textnachrichten. |
Objekt | Inhalte von Reaktionsnachrichten. | Siehe Reaktionsnachrichten |
Objekt | Inhalte von Mediennachrichten. Der Name der Eigenschaft sollte mit der Art der Mediennachricht übereinstimmen, die du senden möchtest ( | Siehe Mediennachrichten |
Objekt | Inhalte von Standortnachrichten. | Siehe Standortnachrichten |
Objekt | Inhalte von Kontaktnachrichten. | Siehe Kontaktnachrichten. |
Objekt | Inhalte von interaktiven Nachrichten. | Siehe Interaktive Nachrichten |
Die Beispiele in diesem Dokument beschreiben die Payload-Anforderungen des Beitragstexts für jede Art von Nachricht.
Bei Erfolg antwortet die API mit Folgendem:
{ "messaging_product": "whatsapp", "contacts": [ { "input": "<WHATSAPP_USER_PHONE_NUMBER>", "wa_id": "<WHATSAPP_USER_ID>" } ], "messages": [ { "id": "<WHATSAPP_MESSAGE_ID>" } ] }
Placeholder | Description | Sample Value |
---|---|---|
String | WhatsApp user's WhatsApp phone number. May not match |
|
String | WhatsApp user's WhatsApp ID. May not match |
|
String | WhatsApp Message ID. This ID appears in associated messages webhooks, such as sent, read, and delivered webhooks. |
|
Plus signs (+
), hyphens (-
), parenthesis ((
,)
), and spaces are supported in send message requests.
We highly recommend that you include both the plus sign and country calling code when sending a message to a customer. If the plus sign is omitted, your business phone number's country calling code is prepended to the customer's phone number. This can result in undelivered or misdelivered messages.
For example, if your business is in India (country calling code 91
) and you send a message to the following customer phone number in various formats:
Number In Send Message Request | Number Message Delivered To | Outcome |
---|---|---|
|
| Correct number |
|
| Correct number |
|
| Potentially wrong number |
|
| Potentially wrong number |
Textnachrichten sind Nachrichten, die nur Textinhalt und eine optionale Linkvorschau enthalten.
Reaktionsnachrichten sind Emoji-Reaktionen, die du auf eine WhatsApp-Nachricht anwenden kannst, die du zuvor erhalten hast.
Du kannst Audio-, Dokument-, Bild-, Sticker- und Videonachrichten an WhatsApp-Benutzer*innen senden.
Audionachrichten zeigen ein Audiosymbol und einen Link zu einer Audiodatei an. Wenn WhatsApp-Benutzer*innen auf das Symbol tippen, wird der WhatsApp-Client geladen, um die Audiodatei abzuspielen.
Dokumentnachrichten sind Nachrichten, die ein Dokumentsymbol anzeigen, das mit einem Dokument verknüpft ist. Darauf können WhatsApp-Benutzer*innen tippen, um das Dokument herunterzuladen.
Hier siehst du ein Beispiel für eine Bildnachricht mit einer optionalen Bildunterschrift:
Stickernachrichten zeigen animierte oder statische Stickerbilder in einer WhatsApp-Nachricht an.
Videonachrichten zeigen eine Thumbnail-Vorschau eines Videobildes mit einer optionalen Bildunterschrift an. Wenn WhatsApp-Benutzer*innen auf die Vorschau tippen, wird das Video geladen und angezeigt.
Medien-Assets müssen an die geschäftliche Telefonnummer hochgeladen werden, die die Nachricht sendet, oder du musst das Asset auf einem öffentlichen Server hosten und seine URL in die Anfrage zum Senden der Nachricht aufnehmen.
Um das Fehlerrisiko zu verringern und unnötige Anfragen an deinen öffentlichen Server zu vermeiden, empfehlen wir dir, deine Medien-Assets hochzuladen und ihre IDs beim Senden von Nachrichten zu verwenden.
Die WhatsApp Cloud API unterstützt Medien-HTTP-Caching. Wenn du anstelle der ID (id
) eines Assets, das du auf unsere Server hochgeladen hast, einen Link (link
) zu einem Medien-Asset auf deinem Server verwendest, kannst du die unten stehenden Header in deine Serverantwort aufnehmen, wenn wir das Asset anfordern. So weist du uns an, dein Asset für die Wiederverwendung in zukünftigen Nachrichten zu cachen. Wenn du keinen dieser Header angibst, wird dein Asset nicht gecacht.
Cache-Control: <CACHE_CONTROL> Last-Modified: <LAST_MODIFIED> ETag: <ETAG>
Der Cache-Control
-Header teilt uns mit, wie das Asset-Caching erfolgen soll. Wir unterstützen die folgenden Anweisungen:
max-age=n
: Gibt an, wie viele Sekunden (n
) das Asset gecacht werden soll. Wir verwenden das gecachte Asset in nachfolgenden Nachrichten, bis diese Zeitspanne abgelaufen ist. Anschließend fordern wir das Asset bei Bedarf erneut an. Beispiel: Cache-Control: max-age=604800
.no-cache
: Gibt an, dass das Asset gecacht werden kann, aber aktualisiert werden sollte, wenn sich der Wert des Last-Modified
-Headers von dem einer früheren Antwort unterscheidet. Erfordert den Last-Modified
-Header. Beispiel: Cache-Control: no-cache
.no-store
: Gibt an, dass das Asset nicht gecacht werden sollte. Beispiel: Cache-Control: no-store
.private
: Gibt an, dass das Asset für den*die Empfänger*in personalisiert wurde und nicht gecacht werden soll.Gibt den Zeitpunkt der letzten Änderung des Assets an. Wird mit Cache-Control: no-cache
verwendet. Wenn sich der Last-Modified
-Wert von dem einer früheren Antwort unterscheidet und Cache-Control: no-cache
in der Antwort enthalten ist, aktualisieren wir unsere gecachte Version des Assets mit dem Asset in der Antwort. Beispiel: Date: Tue, 22 Feb 2022 22:22:22 GMT
.
Der ETag
-Header ist ein eindeutiger String, der eine bestimmte Version eines Assets identifiziert. Beispiel: ETag: "33a64df5"
. Dieser Header wird ignoriert, sofern nicht sowohl der Header Cache-Control
als auch der Header Last-Modified
in der Antwort enthalten sind. In diesem Fall cachen wir das Asset gemäß unserer eigenen internen Logik (die nicht offengelegt wird).
HTTP/1.1 200 OK Content-Type: image/png Content-Length: 1024 Date: Tue, 22 Feb 2022 22:22:22 GMT ETag: "33a64df5" Cache-Control: max-age=604800 <IMAGE_PAYLOAD>
Mit Standortnachrichten kannst du Koordinaten mit dem Längen- und Breitengrad eines Standorts an WhatsApp-Benutzer*innen senden.
Wenn du Kontaktnachrichten senden möchtest, starte einen POST
-Aufruf an /PHONE_NUMBER_ID/messages
und hänge ein message
-Objekt mit type=contact
an. Füge anschließend ein contacts
-Objekt hinzu.
Beispielanfrage:
curl -X POST \
'https://graph.facebook.com/v19.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "PHONE_NUMBER",
"type": "contacts",
"contacts": [{
"addresses": [{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "HOME"
},
{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "WORK"
}],
"birthday": "YEAR_MONTH_DAY",
"emails": [{
"email": "EMAIL",
"type": "WORK"
},
{
"email": "EMAIL",
"type": "HOME"
}],
"name": {
"formatted_name": "NAME",
"first_name": "FIRST_NAME",
"last_name": "LAST_NAME",
"middle_name": "MIDDLE_NAME",
"suffix": "SUFFIX",
"prefix": "PREFIX"
},
"org": {
"company": "COMPANY",
"department": "DEPARTMENT",
"title": "TITLE"
},
"phones": [{
"phone": "PHONE_NUMBER",
"type": "HOME"
},
{
"phone": "PHONE_NUMBER",
"type": "WORK",
"wa_id": "PHONE_OR_WA_ID"
}],
"urls": [{
"url": "URL",
"type": "WORK"
},
{
"url": "URL",
"type": "HOME"
}]
}]
}'
Eine erfolgreiche Antwort enthält ein Objekt mit einem Identifikator, der mit „wamid“ beginnt. Verwende die nach „wamid“ aufgeführte ID, um deinen Nachrichtenstatus nachzuverfolgen.
{ "messaging_product": "whatsapp", "contacts": [{ "input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID", }] "messages": [{ "id": "wamid.ID", }] }
Interaktive Nachrichten enthalten Listennachrichten, Antwort-Buttons, Click-to-Action-URL-Buttons und Flow-Nachrichten. Wenn du interaktive Nachrichten senden möchtest, starte einen POST
-Aufruf an /PHONE_NUMBER_ID/messages
und hänge ein Nachrichtenobjekt mit type=interactive
an. Füge anschließend ein interactive
-Objekt hinzu.
Mit interaktiven Listennachrichten kannst du WhatsApp-Benutzer*innen eine Liste mit auswählbaren Optionen zur Verfügung stellen.
Standortabfragenachrichten enthalten einen Nachrichtentext und einen Button zum Senden des Standorts. Wenn ein*e WhatsApp-Benutzer*in auf den Button tippt, wird ein Bildschirm zum Teilen des Standorts angezeigt, über den Benutzer*innen ihren Standort teilen können.
Interaktive Nachrichten mit Antwort-Buttons ermöglichen es dir, bis zu drei vordefinierte Antworten zu senden, aus denen Benutzer*innen wählen können.
Deine Kund*innen zögern möglicherweise, in SMS-Nachrichten auf unformatierte URLs mit langen oder unklaren Zeichenfolgen zu tippen. In diesen Situationen solltest du am besten eine interaktive Nachricht mit Haupttext und einem Call-to-Action(CTA)-URL-Button senden.
Mit CTA-URL-Buttons kannst du einem Button eine beliebige URL zuordnen, sodass du die unformatierte URL nicht in den Haupttext der interaktiven Nachrichten angeben musst.
POST /<BUSINESS_PHONE_NUMBER_ID>/messages
{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "<CUSTOMER_PHONE_NUMBER>", "type": "interactive", "interactive": { "type": "cta_url", /* Header optional */ "header": { "type": "text", "text": "<HEADER_TEXT>" }, /* Body optional */ "body": { "text": "<BODY_TEXT>" }, /* Footer optional */ "footer": { "text": "<FOOTER_TEXT>" }, "action": { "name": "cta_url", "parameters": { "display_text": "<BUTTON_TEXT>", "url": "<BUTTON_URL>" } } } }
Platzhalter | Beschreibung | Beispielwert |
---|---|---|
String | Erforderlich. Die WhatsApp-ID oder Telefonnummer des*der Kund*in, an die die Nachricht gesendet wird. Siehe Formate von Telefonnummern. |
|
String | Optional. Header-Text. |
|
String | Erforderlich. Haupttext der Nachricht. |
|
String | Optional. Fußzeilentext der Nachricht. |
|
String | Erforderlich. Button-Text. |
|
String | Erforderlich. URL, die im Standard-Webbrowser des Geräts geladen wird, wenn sie von dem*der WhatsApp-Benutzer*in angetippt wird. |
|
curl 'https://graph.facebook.com/v19.0
/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "+16505555555",
"type": "interactive",
"interactive": {
"type": "cta_url",
"header": {
"text": "Available Dates"
},
"body": {
"text": "Tap the button below to see available dates."
},
"footer": {
"text": "Dates subject to change."
},
"action": {
"name": "cta_url",
"parameters": {
"display_text": "See Dates",
"url": "https://www.luckyshrub.com?clickID=kqDGWd24Q5TRwoEQTICY7W1JKoXvaZOXWAS7h1P76s0R7Paec4"
}
}
}
}'
{ "messaging_product": "whatsapp", "contacts": [ { "input": "+16505555555", "wa_id": "+16505555555" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA" } ] }
Nachdem du einen WhatsApp-Flow erstellt hast, kannst du ihn senden. Um eine Nachricht mit einem Flow zu senden, haben wir einen neue Art von interaktivem Objekt namens flow
eingeführt. Die Eigenschaften des interaktiven Objekts, die für Flows spezifisch sind, sind wie folgt:
Eigenschaft | Typ | Beschreibung |
---|---|---|
| String | Der Wert muss |
| String | Der Wert muss |
| String | Der Flow kann entweder im Modus |
| String | Der Wert muss |
| String | Ein Flow-Token, der vom Unternehmen als Kennung generiert wird. |
| String | Individuelle ID des Flows, die von WhatsApp bereitgestellt wird. |
| String | Text auf dem CTA-Button. Beispielsweise: „Anmelden“ Zeichenbeschränkung – 20 Zeichen (keine Emojis). |
| String |
|
| String | Erforderlich, wenn |
| String | Die |
| String | Optional. Die Eingabedaten für den ersten Bildschirm des Flows. Darf kein leeres Objekt sein. |
Beispielanfrage
curl -X POST \ 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "recipient_type": "individual", "messaging_product": "whatsapp", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { "type": "flow", "header": { "type": "text", "text": "Flow message header" }, "body": { "text": "Flow message body" }, "footer": { "text": "Flow message footer" }, "action": { "name": "flow", "parameters": { "flow_message_version": "3", "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s.", "flow_id": "1", "flow_cta": "Book!", "flow_action": "navigate", "flow_action_payload": { "screen": "<SCREEN_NAME>", "data": { "product_name": "name", "product_description": "description", "product_price": 100 } } } } } }'
Beispielantwort
{ "messaging_product": "whatsapp", "contacts": [ { "Input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID" } ], "messages": [ { "id": "wamid.ID" } ] }
Du kannst jede Nachricht auch als Antwort auf eine vorherige Nachricht in einer Unterhaltung senden, indem du die ID der vorherigen Nachricht in das context
-Objekt einschließt. Der*die Empfänger*in erhält die neue Nachricht zusammen mit einer Kontextsprechblase, in der der Inhalt der vorherigen Nachricht angezeigt wird.
Empfänger*innen sehen keine Kontextsprechblase, wenn:
"type":"template"
)Dies sind bekannte Fehler, an denen wir arbeiten.
Beispielanfrage:
curl -X POST \
'https://graph.facebook.com/v19.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-d '{
"messaging_product": "whatsapp",
"context": {
"message_id": "MESSAGE_ID"
},
"to": "<phone number> or <wa_id>",
"type": "text",
"text": {
"preview_url": False,
"body": "your-text-message-content"
}
}'
Eine erfolgreiche Antwort enthält ein Objekt mit einer ID, die mit „wamid“ beginnt. Verwende die nach „wamid“ aufgeführte ID, um deinen Nachrichtenstatus nachzuverfolgen.
Hinweis: Wenn die vorherige Nachricht älter als 30 Tage ist oder keiner Nachricht in der Unterhaltung angehört, wird die Nachricht ganz normal gesendet und nicht als Antwort.
Beispielantwort:
{ "messaging_product": "whatsapp", "contacts": [{ "input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID", }] "messages": [{ "id": "wamid.ID", }] }
Dieses Feature ist nur für Unternehmen in Singapur und deren Kund*innen in Singapur verfügbar sowie für Unternehmen in Indien und deren Kund*innen in Indien.
Mithilfe von Adressnachrichten können deine Benutzer*innen über WhatsApp die Versandadresse leichter mit dem Unternehmen teilen.
Adressnachrichten sind interaktive Nachrichten, die die vier wesentlichen Teile enthalten: header
, body
, footer
und action
. In der Handlungskomponente gibt das Unternehmen den Namen „address_message“ und relevante Parameter an.
Aktuell werden Adressnachrichten in den beiden folgenden Ländern unterstützt: Indien und Singapur. In der Tabelle unten ist aufgeführt, welche Felder jeweils in welchem Land unterstützt werden.
Name des Feldes | Label | Eingabetyp | Unterstützte Länder | Einschränkungen |
---|---|---|---|---|
| Name | Text | Indien, Singapur | Keine |
| Telefonnummer | Telefonnummer | Indien, Singapur | Nur gültige Telefonnummern |
| PIN-Code | Text | Indien | Maximale Länge: 6 |
| Postleitzahl | Zahl | Singapur | Maximale Länge: 6 |
| Appartement-/Hausnummer | Text | Indien | Keine |
| Etagennummer | Text | Indien | Keine |
| Tower-Nummer | Text | Indien | Keine |
| Name des Gebäudes/Appartements | Text | Indien | Keine |
| Adresse | Text | Indien, Singapur | Keine |
| Referenzpunkt/Gebiet | Text | Indien | Keine |
| Nummer der Einheit | Text | Singapur | Keine |
| Stadt | Text | Indien, Singapur | Keine |
| Bundesstaat | Text | Indien | Keine |
Dies ist ein Beispiel-API-Aufruf für die Adressnachricht. Das Attribut country
ist in den Handlungsparametern ein Pflichtfeld. Wenn es nicht angegeben ist, wird ein Validierungsfehler angezeigt.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country" :"COUNTRY_ISO_CODE" } } } }'
Wenn die Landesvorwahl der Telefonnummer für ein bestimmtes Land falsch ist, können Unternehmen die Adressnachricht nicht von dem*der Empfänger*in anfordern. Beispiel: Von einer Empfängerin, die als Land „Singapur“ angegeben hat, die jedoch eine Telefonnummer mit der Vorwahl „91“ hat, können Unternehmen keine Adressnachricht anfordern.
Adressnachrichten erlauben die zeitgleiche Übergabe von widersprüchlichen Feldern nicht. Beispiel: Es ist nicht möglich, sg_post_code
zu übergeben, wenn country
auf „IN“ gesetzt ist.
Nachdem die Adressnachricht gesendet wurde, wartet das Unternehmen darauf, dass der*die Benutzer*in die Adresse eingibt und zurücksendet. Die von dem*der Nutzer*in eingegebene Adresse wird über den Webhook geteilt, der im Einrichtungsvorgang registriert wurde.
Folgende Schritte sind an einer Adressnachricht beteiligt:
address_message
an den*die Benutzer*in.Das folgende Ablaufdiagramm zeigt einen typischen Integrationsvorgang für eine Adressnachricht an.
Das Unternehmen kann als Bestandteil der interaktiven Handlungsparameter weitere Attribute wie values
, validation_errors
oder saved_addresses
übergeben. Unten findest du Informationen zu ihrer jeweiligen Verwendung.
Handlungsparameter | Nutzung |
---|---|
| Unternehmen füllen diesen Parameter für Adressfelder vorab aus (z. B. geben sie im Adressfeld für die Stadt „Singapur“ an). |
| Bei Unternehmen können sie gespeicherte Adressen übergeben, die bereits mit dem*der Benutzer*in verknüpft sind. Bei Benutzer*innen wird die Option angeboten, die gespeicherte Adresse auszuwählen anstatt sie manuell einzugeben. |
| Unternehmen können Fehler in den Adressfeldern ausgeben. WhatsApp verhindert dann, dass der*die Benutzer*in die Adresse senden kann, bis das Problem behoben wurde. |
Starte mit der WhatsApp-API einen POST
-Aufruf an /PHONE_NUMBER_ID/messages
, um dem*der Benutzer*in eine vollständig verschlüsselte Adressnachricht zu senden:
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d ' { "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": "JSON Payload" } } }'
Wenn ohne gespeicherte Adresse eine Adressnachricht gesendet wird, fordert WhatsApp Benutzer*innen oder Unternehmen mit einem Adressformular auf, eine neue Adresse einzugeben.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+91xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "IN", "values": { "name": "CUSTOMER_NAME", "phone_number": "+91xxxxxxxxxx" } } } } }'
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+65xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "SG", "values": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx" } } } } }'
Wenn eine Adressnachricht mit gespeicherten Adressen gesendet wird, bietet WhatsApp Benutzer*innen oder Unternehmen die Option, unter den gespeicherten Adressen eine auszuwählen oder eine Adresse hinzuzufügen. Nutzer*innen können die gespeicherte Adresse ignorieren und eine neue Adresse eingeben.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "IN", "saved_addresses": [ { "id": "address1", "value": { "name": "CUSTOMER_NAME", "phone_number": "+91xxxxxxxxxx", "in_pin_code": "400063", "floor_number": "8", "building_name": "", "address": "Wing A, Cello Triumph,IB Patel Rd", "landmark_area": "Goregaon", "city": "Mumbai" } } ] } } } }'
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+65xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "SG", "values": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx" }, "saved_addresses": [ { "id": "address1", "value": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx", "sg_post_code": "018937", "address": "9 Straits View, Marina One West Tower", "unit_number": "Suite 29-00", "city": "Singapore" } } ] } } } }'
Bei erfolgreich erstellter Nachricht enthält die Antwort ein messages
-Objekt mit einer ID für die neu erstellte Nachricht.
{ "messaging_product": "whatsapp", "contacts": [{ "input": "PHONE_NUMBER", "wa_id": "WHATSAPP_ID", }] "messages": [{ "id": "wamid.ID", }] }
Wenn der Vorgang fehlgeschlagen ist, enthält die Antwort eine Fehlermeldung. Weitere Informationen dazu findest du unter Fehler- und Statuscodes.
Bei einem Validierungsfehler auf dem Unternehmensserver sollte eine Adressnachricht erneut an den*die Benutzer*in gesendet werden. Für jedes ungültige Feld sollte das Unternehmen die von dem*der Benutzer*in zuvor eingegebenen Werte sowie die jeweiligen Validierungsfehler zurücksenden, wie in den Beispiel-Payloads unten dargestellt.
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxx", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "IN", "values": { "name": "CUSTOMER_NAME", "phone_number": "+91xxxxxxxxxx", "in_pin_code": "666666", "address": "Some other location", "city": "Delhi" }, "validation_errors": { "in_pin_code": "We could not locate this pin code." } } } } }'
curl -X POST \ 'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "12065550107", "type": "interactive", "interactive": { "type": "address_message", "body": { "text": "Thanks for your order! Tell us what address you’d like this order delivered to." }, "action": { "name": "address_message", "parameters": { "country": "SG", "values": { "name": "CUSTOMER_NAME", "phone_number": "+65xxxxxxxxxx", "sg_post_code": "666666", "address": "Some other location", "city": "Singapore" }, "validation_errors": { "sg_post_code": "We could not locate this pin code." } } } } }'
Unternehmen erhalten Benachrichtigungen für Adressübermittlungen über Webhooks, etwa wie den unten abgebildeten.
{ "messages": [ { "id": "gBGGFlAwCWFvAgmrzrKijase8yA", "from": "PHONE_NUMBER", "Interactive": { "type": "nfm_reply", "action": "address_message", "nfm_reply": { "name": "address_message", "response_json": “<response_json from client>”, "body": “<body text from client>”, } "timestamp": "1670394125", "type": "interactive" } ] }
Die Webhook-Benachrichtigung hat die folgenden Werte.
Name des Feldes | Typ | Beschreibung |
---|---|---|
| Objekt | Enthält die Antwort vom Client |
| String | Würde |
| Objekt | Enthält die vom Client erhaltenen Daten |
| String | Die Werte der von dem*der Benutzer*in ausgefüllten Adressfelder im JSON-Format, die immer präsent sind |
| String | Haupttext vom Client, was Benutzer*innen angezeigt wird |
| String | Würde |
Eine Antwort auf eine Adressnachricht als NFM-Antworttyp für eine Adressnachrichtenanfrage in Indien ist unten dargestellt.
{ "messages": [ { "context": { "from": "FROM_PHONE_NUMBER_ID", "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgARGBI3NjNFN0U5QzMzNDlCQjY0M0QA" }, "from": "PHONE_NUMBER", "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgASGCA5RDhBNENEMEQ3RENEOEEzMEI0RUExRDczN0I1NThFQwA=", "timestamp": "1671498855", "type": "interactive", "interactive": { "type": "nfm_reply", "nfm_reply": { "response_json": "{\"saved_address_id\":\"address1\",\"values\":{\"in_pin_code\":\"400063\",\"building_name\":\"\",\"landmark_area\":\"Goregaon\",\"address\":\"Wing A, Cello Triumph, IB Patel Rd\",\"city\":\"Mumbai\",\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+91xxxxxxxxxx\",\"floor_number\":\"8\"}}", "body": "CUSTOMER_NAME\n +91xxxxxxxxxx\n 400063, Goregaon, Wing A, Cello Triumph,IB Patel Rd, Mumbai, 8", "name": "address_message" } } } ] }
Sollte der Client address_message
nicht unterstützen, werden Nachrichten unbemerkt verworfen und in einem Webhook wird eine Fehlermeldung an das Unternehmen zurückgesendet. Die in dem Fall zurückgesendete Webhook-Benachrichtigung ist unten dargestellt:
{ "statuses": [ { "errors": [ { "code": 1026, "href": "https://developers.facebook.com/docs/whatsapp/api/errors/", "title": "Receiver Incapable" } ], "id": "gBGGFlAwCWFvAgkyHMGKnRu4JeA", "message": { "recipient_id": "+91xxxxxxxxxx" }, "recipient_id": "91xxxxxxxxxx", "status": "failed", "timestamp": "1670394125", "type": "message" } ] }
Siehe Vorlagennachrichten.
Wenn du mehrere Nachrichten sendest, kann nicht garantiert werden, dass die Reihenfolge, in der Nachrichten zugestellt werden, mit der Reihenfolge deiner API-Anfragen übereinstimmt. Wenn deine Nachrichten in einer bestimmten Reihenfolge zugestellt werden müssen, stelle sicher, dass du die Statusmeldung delivered
in einer Webhook-Nachricht erhalten hast, bevor du die nächste Nachricht in deiner Nachrichtensequenz sendest.
Wenn du Probleme mit der Zustellung von Nachrichten hast, findest du unter Nachricht nicht zugestellt weitere Informationen.