Dieses Dokument wurde aktualisiert.
Die Übersetzung ins Deutsche ist noch nicht fertig.
Englisch aktualisiert: Heute

Senden von Nachrichten

Du kannst die API verwenden, um folgende Arten von Nachrichten zu senden:

Alle diese Nachrichten, außer Reaktionsnachrichten, können als Antwort gekennzeichnet werden.

Anfragesyntax

Verwende den Endpunkt POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID/messages, um Nachrichten an WhatsApp-Benutzer*innen zu senden:

POST /<WHATSAPP_BUSINESS_PHONE_NUMBER>/messages

Beitragstext

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>}

}

Parameter für den Beitragstext

PlatzhalterBeschreibungBeispielwert

<TO>

String

Die WhatsApp-ID oder Telefonnummer des*der Kund*in, an die die Nachricht gesendet werden soll. Siehe Formate von Telefonnummern

+16315551234

<TYPE>

String

Gibt den Nachrichtentyp an.

text

<TEXT>

Objekt

Inhalte von Textnachrichten.

Siehe Textnachrichten.

<REACTION>

Objekt

Inhalte von Reaktionsnachrichten.

Siehe Reaktionsnachrichten

<IMAGE>

Objekt

Inhalte von Mediennachrichten. Der Name der Eigenschaft sollte mit der Art der Mediennachricht übereinstimmen, die du senden möchtest (image für eine Bildnachricht, video für eine Videonachricht usw.).

Siehe Mediennachrichten

<LOCATION>

Objekt

Inhalte von Standortnachrichten.

Siehe Standortnachrichten

<CONTACTS>

Objekt

Inhalte von Kontaktnachrichten.

Siehe Kontaktnachrichten.

<INTERACTIVE>

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.

Antwortsyntax

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>"
    }
  ]
}

Antwortparameter

PlaceholderDescriptionSample Value

<WHATSAPP_USER_PHONE_NUMBER>

String

WhatsApp user's WhatsApp phone number. May not match wa_id value.

+16505551234

<WHATSAPP_USER_ID>

String

WhatsApp user's WhatsApp ID. May not match input value.

16505551234

<WHATSAPP_MESSAGE_ID>

String

WhatsApp Message ID.


This ID appears in associated messages webhooks, such as sent, read, and delivered webhooks.

wamid.HBgLMTY0NjcwNDM1OTUVAgARGBI4MjZGRDA0OUE2OTQ3RkEyMzcA

Phone Number Formats

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 RequestNumber Message Delivered ToOutcome

+16315551234

+16315551234

Correct number

+1 (631) 555-1234

+16315551234

Correct number

(631) 555-1234

+916315551234

Potentially wrong number

1 (631) 555-1234

+9116315551234

Potentially wrong number

Textnachrichten

Textnachrichten sind Nachrichten, die nur Textinhalt und eine optionale Linkvorschau enthalten.

Reaktionsnachrichten

Reaktionsnachrichten sind Emoji-Reaktionen, die du auf eine WhatsApp-Nachricht anwenden kannst, die du zuvor erhalten hast.

Mediennachrichten

Du kannst Audio-, Dokument-, Bild-, Sticker- und Videonachrichten an WhatsApp-Benutzer*innen senden.

Audionachrichten

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

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.

Bildnachrichten

Hier siehst du ein Beispiel für eine Bildnachricht mit einer optionalen Bildunterschrift:

Stickernachrichten

Stickernachrichten zeigen animierte oder statische Stickerbilder in einer WhatsApp-Nachricht an.

Videonachrichten

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

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.

Medien-HTTP-Caching

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>

Cache-Control

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.

Last-Modified

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.

ETag

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).

Beispielantwort mit Headern

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>

Standortnachrichten

Mit Standortnachrichten kannst du Koordinaten mit dem Längen- und Breitengrad eines Standorts an WhatsApp-Benutzer*innen senden.

Kontaktnachrichten

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

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.

Interaktive Listennachrichten

Mit interaktiven Listennachrichten kannst du WhatsApp-Benutzer*innen eine Liste mit auswählbaren Optionen zur Verfügung stellen.

Interaktive Standortanfragenachrichten

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

Interaktive Nachrichten mit Antwort-Buttons ermöglichen es dir, bis zu drei vordefinierte Antworten zu senden, aus denen Benutzer*innen wählen können.

Interaktive Call-to-Action-URL-Buttons

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.

Anfragesyntax

POST /<BUSINESS_PHONE_NUMBER_ID>/messages

Beitragstext

{
  "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>"
      }
    }
  }
}

Texteigenschaften


PlatzhalterBeschreibungBeispielwert

<CUSTOMER_PHONE_NUMBER>

String

Erforderlich.


Die WhatsApp-ID oder Telefonnummer des*der Kund*in, an die die Nachricht gesendet wird. Siehe Formate von Telefonnummern.

+15558543153

<HEADER_TEXT>

String

Optional.


Header-Text.

Available Dates

<BODY_TEXT>

String

Erforderlich.


Haupttext der Nachricht.

Tap the button below to see available dates.

<FOOTER_TEXT>

String

Optional.


Fußzeilentext der Nachricht.

Dates subject to change.

<BUTTON_TEXT>

String

Erforderlich.


Button-Text.

See Dates

<BUTTON_URL>

String

Erforderlich.


URL, die im Standard-Webbrowser des Geräts geladen wird, wenn sie von dem*der WhatsApp-Benutzer*in angetippt wird.

https://www.luckyshrub.com?clickID=kqDGWd24Q5TRwoEQTICY7W1JKoXvaZOXWAS7h1P76s0R7Paec4

Beispielanfrage

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"
            }
        }
    }
}'

Beispielantwort

{
  "messaging_product": "whatsapp",
  "contacts": [
    {
      "input": "+16505555555",
      "wa_id": "+16505555555"
    }
  ],
  "messages": [
    {
      "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA"
    }
  ]
}

Flow-Nachrichten

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

interactive.type

String

Der Wert muss flow lauten.

interactive.action.name

String

Der Wert muss flow lauten.

interactive.action.parameters.mode

String

Der Flow kann entweder im Modus draft oder published sein. published ist der Standardwert für dieses Feld.

interactive.action.parameters.flow_message_version

String

Der Wert muss 3 lauten.

interactive.action.parameters.flow_token

String

Ein Flow-Token, der vom Unternehmen als Kennung generiert wird.

interactive.action.parameters.flow_id

String

Individuelle ID des Flows, die von WhatsApp bereitgestellt wird.

interactive.action.parameters.flow_cta

String

Text auf dem CTA-Button. Beispielsweise: „Anmelden“

Zeichenbeschränkung – 20 Zeichen (keine Emojis).

interactive.action.parameters.flow_action

String

navigate oder data_exchange. Der Standardwert ist navigate.

interactive.action.parameters.flow_action_payload

String

Erforderlich, wenn flow_action gleich navigate ist. Sollte andernfalls weggelassen werden.

interactive.action.parameters.flow_action_payload.screen

String

Die id des ersten Bildschirms.

interactive.action.parameters.flow_action_payload.data

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"
    }
  ]
}

Antworten

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:

  • mit einer Nachrichtenvorlage geantwortet wird ("type":"template")
  • mit einer Bild-, Video-, PPT- oder Audiodatei geantwortet wird und der*die Empfänger*in KaiOS verwendet

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",
  }]
}

Adressnachrichten

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

Name

Text

Indien, Singapur

Keine

phone_number

Telefonnummer

Telefonnummer

Indien, Singapur

Nur gültige Telefonnummern

in_pin_code

PIN-Code

Text

Indien

Maximale Länge: 6

sg_post_code

Postleitzahl

Zahl

Singapur

Maximale Länge: 6

house_number

Appartement-/Hausnummer

Text

Indien

Keine

floor_number

Etagennummer

Text

Indien

Keine

tower_number

Tower-Nummer

Text

Indien

Keine

building_name

Name des Gebäudes/Appartements

Text

Indien

Keine

address

Adresse

Text

Indien, Singapur

Keine

landmark_area

Referenzpunkt/Gebiet

Text

Indien

Keine

unit_number

Nummer der Einheit

Text

Singapur

Keine

city

Stadt

Text

Indien, Singapur

Keine

state

Bundesstaat

Text

Indien

Keine

Beispiel-API-Aufruf

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"
                   }
              }
          }
    }' 

Fehlerbehandlung

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.

Schritte für Adressnachrichten

Folgende Schritte sind an einer Adressnachricht beteiligt:

  1. Das Unternehmen sendet eine Adressnachricht mit dem Handlungsnamen address_message an den*die Benutzer*in.
  2. Der*die Benutzer*in interagiert durch Klicken auf den CTA mit der Nachricht. Dadurch wird der Bildschirm „Adressnachricht“ aufgerufen. Der*die Benutzer*in gibt die Adresse ein und sendet das Formular.
  3. Nach dem Senden des Formulars für die Adressnachricht durch den*die Benutzer*in erhält der*die Partner*in eine Webhook-Benachrichtigung. Diese enthält die Details der von dem*der Benutzer*in gesendeten Adresse.
Beispiel für eine Adressnachricht für Indien
Beispiel für eine Adressnachricht für Singapur

Das folgende Ablaufdiagramm zeigt einen typischen Integrationsvorgang für eine Adressnachricht an.

Weitere Handlungsparameter

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

values

Unternehmen füllen diesen Parameter für Adressfelder vorab aus (z. B. geben sie im Adressfeld für die Stadt „Singapur“ an).

saved_addresses

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.

validation_errors

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.

Adressnachricht an eine*n Nutzer*in senden

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.

Indien

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"
              }
           }
        }
      }
   }'

Singapur

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.

Indien

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"
                 }
             }
          ]
       }
    }
  }
}'

Singapur

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"
                }
            }
         ]
      }
    }
  }
}'

Antwort überprüfen

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.

Adressnachricht mit Validierungsfehlern senden

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.

Indien

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."
          }
       }
    }
  }
}'

Singapur

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."
           }
        }
     }
  }
}'

Benachrichtigungen für Adressübermittlungen erhalten

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

interactive

Objekt

Enthält die Antwort vom Client

type

String

Würde nfm_reply lauten, was bedeutet, dass es sich um eine Native Flow Response (NFM) vom Client handelt

nfm_reply

Objekt

Enthält die vom Client erhaltenen Daten

response_json

String

Die Werte der von dem*der Benutzer*in ausgefüllten Adressfelder im JSON-Format, die immer präsent sind

body (Optional)

String

Haupttext vom Client, was Benutzer*innen angezeigt wird

name (Optional)

String

Würde address_message lauten, was die Art der NFM-Handlungsantwort vom Client angibt

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"
                }
            }
        }
    ]
}

Funktion nicht unterstützt

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"
    }
  ]
}

Vorlagennachrichten

Siehe Vorlagennachrichten.

Zustellungsreihenfolge bei mehreren Nachrichten

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.

Problembehebung

Wenn du Probleme mit der Zustellung von Nachrichten hast, findest du unter Nachricht nicht zugestellt weitere Informationen.