Interactieve antwoorden ontvangen via WhatsApp
Een tik op een antwoordknop, een lijstrij of de snelle antwoordknop van een template komt binnen als een eigen inbound bericht met interactive_reply. De arm geeft je de handle terug die je bij het verzenden hebt ingesteld, zodat een flow vertakt op je eigen identifier in plaats van op het label dat het contact zag.
Wat een inbound interactief antwoord bevat
type geeft het type tik aan, en het veld met dezelfde naam bevat het:
Codevoorbeeld
{
"id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
"direction": "inbound",
"from": { "phone_number": "+14155550100" },
"to": { "phone_number": "+13124495569" },
"status": "received",
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"interactive_reply": {
"type": "button",
"button": { "slug": "cancel-booking", "text": "Cancel" }
},
"created_at": "2026-08-25T09:04:11Z"
}| type | Veld | Wat het bevat |
|---|---|---|
| button | button | De slug en text van een antwoordknop, of van de snelle antwoordknop van een template |
| list | list | De slug en text van de rij die het contact koos, plus de description als die er was |
Een lijstrij vervangt button door list en voegt de tweede regel toe die de rij toonde:
Codevoorbeeld
{
"interactive_reply": {
"type": "list",
"list": {
"slug": "priority_express",
"text": "Priority Mail Express",
"description": "Next day to 2 days"
}
}
}slug is de handle die je hebt opgegeven en die het contact nooit zag; text is het label dat ze lazen. Vertakt op slug. Labels worden herformuleerd en vertaald, en bij een tik op de snelle antwoordknop van een template is de slug de payload die dat template heeft opgegeven, die WhatsApp instelt op het eigen label van de knop.
De lijst met typen is open: WhatsApp voegt in de loop van de tijd interactieve typen toe, dus behandel een type die je niet herkent als een toekomstig type in plaats van een fout, en val terug op het loggen van het bericht in plaats van het lezen te laten mislukken.
Een tik koppelen aan wat je verstuurde
in_reply_to_message_id geeft het bericht aan dat de knop of het menu bevatte. Zo weet je bij welke vraag dit antwoord hoort. WhatsApp rapporteert het niet bij elke tik, en de resolutie kan ook missen. In dat geval wordt het veld weggelaten in plaats van leeg gerapporteerd. De hub-pagina geciteerde antwoorden behandelt wat een miss betekent en hoe lang een geciteerd bericht oplosbaar blijft.
Als correlatie betrouwbaar moet zijn, zet je eigen referentie dan in de slug zelf, of in metadata bij het verzenden, in plaats van op het veld te vertrouwen. Zie een bericht citeren voor de verzendzijde.
De twee tikken die elders binnenkomen
Twee interactieve typen beantwoorden zonder enige interactive_reply:
- Een locatieverzoek komt terug als een gewoon inbound locatiebericht.
- Een contactgegevensverzoek komt terug als contactkaarten, met origin ingesteld op contact_request.
Een linkknop stuurt niets terug: het contact vertrekt naar de URL en er wordt geen inbound bericht van de tik vastgelegd. Een integratie die alleen interactive_reply bewaakt, mist alle drie.
De webhook-payload
whatsapp.received bevat de interactive_reply-arm op de event-envelope, zodat een bot een tik kan beantwoorden zonder het bericht terug te lezen:
Codevoorbeeld
{
"type": "whatsapp.received",
"timestamp": "2026-08-25T09:04:11.118Z",
"data": {
"whatsapp_id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
"workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
"direction": "inbound",
"from": { "phone_number": "+14155550100", "display_name": "Alex Rivera" },
"to": { "phone_number": "+13124495569" },
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"interactive_reply": {
"type": "button",
"button": { "slug": "cancel-booking", "text": "Cancel" }
},
"tags": null,
"metadata": null
}
}Aandachtspunten
- interactive en interactive_reply zijn tegengestelde richtingen. interactive is wat je verstuurde en komt nooit inbound binnen; interactive_reply is wat het contact tikte en verschijnt nooit op een outbound bericht.
- Een tik herstelt het servicevenster. Het is een inbound bericht, dus het heropent 24 uur vrije antwoorden op dezelfde manier als een tekstbericht.
- Een contact kan twee keer op dezelfde knop tikken. Tikken worden niet gededupliceerd, dus elke tik is een eigen bericht met een eigen ID. Maak de actie die je op een slug uitvoert idempotent.
- Een tik op een oud menu komt nog steeds binnen. Een contact dat terugscrollt kan op een knop van dagen geleden tikken. Valideer daarom dat de flow nog open is in plaats van aan te nemen dat de tik je laatste bericht beantwoordt.
Volgende stappen
- Hoe ontvangen werkt: de inbound envelope, media ophalen en de whatsapp.received-webhook
- Interactieve WhatsApp-berichten: de zes typen waarop een ontvanger kan tikken
- WhatsApp-antwoordknoppen: de verzendzijde van een knoptik
- WhatsApp-lijstmenu's: de verzendzijde van een rijkeuze
Gerelateerde bronnen
Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.
Bekijk de gidsConnecting WhatsApp to Bird: from buying a number to a live channelBegrijp het conceptWhat is the 24-hour customer service window on WhatsApp?Gebruik de toolWhatsApp message builderOntdek de mogelijkheidWhatsApp
Probeer de oefening en ontvang een implementatieoverzicht