# WhatsApp contact-info-verzoeken

Een contact-info-verzoek plaatst één knop onder een WhatsApp-bericht die de ontvanger vraagt een telefoonnummer te delen. Gebruik het als je een nummer nodig hebt om iemand op te bereiken, zoals voor een terugbelverzoek of een boekingsbevestiging, en niet voor een opgeslagen adres. Gebruik voor een locatie in plaats daarvan [locatieverzoeken](/docs/guides/whatsapp/message-types/interactive/location-requests).

## Een contact-info-verzoek versturen

Stel `interactive.type` in op `request_contact_info`, met een `body_text` en verder niets. WhatsApp rendert de knop zelf, dus er is niets om als label te gebruiken:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  interactive: {
    type: "request_contact_info",
    body_text:
      "To confirm your booking we need a number to reach you on. Tap below to share yours.",
  },
});
console.log(msg.id, msg.status);
```

Examples: [TypeScript](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.ts.md) · [Python](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.py.md) · [Go](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.go.md) · [PHP](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.php.md) · [CLI](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.cli.md) · [MCP](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.mcp.md) · [cURL](/nl-nl/documentatie/guides/whatsapp/message-types/interactive/contact-info-requests.curl.md)

`from` is verplicht bij elk servicebericht: een nummer dat je werkruimte bezit, niet een door Bird beheerd nummer. Dit type definieert geen eigen veld, en het schema verbiedt een `header`, een `footer_text` en elk veld van andere types (`buttons`, `list`, `cta_url`, `cards`) expliciet, dus `body_text` is het volledige bericht, beperkt tot 1024 tekens. Meta specificeert geen limiet voor de body-lengte van dit type; Bird past de limiet van 1024 tekens toe die elk ander interactief type behalve een lijstmenu heeft.

`in_reply_to_message_id` werkt ook bij dit type, om een eerder bericht in hetzelfde gesprek te citeren. Zie in de hub [een bericht citeren om een antwoord te correleren](/docs/guides/whatsapp/message-types/interactive#quoting-a-message-to-correlate-a-reply) voor hoe resolutie werkt en wat het kan missen.

## Het gedeelde contact lezen

Een tik levert geen `interactive_reply` op. Het komt binnen als een gewoon inkomend bericht met een `contact_cards`-array:

```json
{
  "id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
  "direction": "inbound",
  "from": { "phone_number": "+16505551234", "bsuid": "US.13491208655302741918" },
  "to": { "phone_number": "+13124495648" },
  "status": "received",
  "contact_cards": [
    {
      "origin": "contact_request",
      "phone_numbers": [{ "phone_number": "+14155550829", "type": "cell" }]
    }
  ],
  "created_at": "2026-08-26T10:00:00Z"
}
```

`contact_cards` is een array, en een `contacts`-bericht dat geen kaart bevatte wordt teruggelezen als `[]` in plaats van als een afwezig veld. Hetzelfde veld bevat [een kaart die je verstuurt](/docs/guides/whatsapp/message-types/contact-cards), dus een kaart die op dit verzoek antwoordt wordt onderscheiden door `origin`, niet door het veld waarop het binnenkomt. **Controleer `origin` voordat je een kaart als je antwoord behandelt.** `origin` is `contact_request` als de kaart op dit verzoek antwoordt, of `other` als het contact ongevraagd een kaart deelde, die mogelijk een derde partij betreft en helemaal niet het contact zelf. Een tik bevat alleen `phone_numbers[].{phone_number, type}` en laat `vcard` weg; het volledige contactobject, met `name`, `org`, `birthday` en de rest, komt alleen binnen via `origin: "other"`. Je ziet dit antwoord via de berichtenlijst of `GET /v1/whatsapp/messages/{id}`; zie in de hub [een antwoord lezen](/docs/guides/whatsapp/message-types/interactive#reading-a-reply) voor het volledige pad.

## Het antwoord correleren met de vraag

Anders dan bij een locatieverzoek plaatst Meta geen `context` op het antwoord van dit type, dus `in_reply_to_message_id` wordt weggelaten in plaats van opgelost. Correleer op `from` in combinatie met een recent eigen verzonden bericht, of accepteer dat het niet kan. **Twee openstaande verzoeken aan hetzelfde contact zijn niet te onderscheiden:** niets op het antwoord vermeldt op welk verzoek het reageert, dus een werkruimte die een tweede contact-info-verzoek stuurt voordat het eerste is beantwoord, kan niet bepalen welke kaart bij welk verzoek hoort.

Dit is het bewuste verschil met [locatieverzoeken](/docs/guides/whatsapp/message-types/interactive/location-requests): het antwoord van dat type bevat Meta's eigen `context`, dus `in_reply_to_message_id` wordt opgelost en het mechanisme [een bericht citeren om een antwoord te correleren](/docs/guides/whatsapp/message-types/interactive#quoting-a-message-to-correlate-a-reply) in de hub koppelt het antwoord automatisch terug. Het antwoord op een contact-info-verzoek heeft geen dergelijk mechanisme om op te steunen.

## In plaats daarvan vragen via een template

Het interactieve `request_contact_info`-bericht is het vrije-vorm-equivalent van de `REQUEST_CONTACT_INFO`-templateknop, die dezelfde contactkaart opvraagt maar ook een ontvanger kan bereiken van wie het klantenservicevenster gesloten is. Gebruik het interactieve bericht als de ontvanger je onlangs een bericht heeft gestuurd en je het verzoek wilt formuleren voor dit gesprek; gebruik de templateknop als het venster gesloten is, of als het verzoek meerijdt op een bericht dat je al als template verstuurt. Zie [WhatsApp-templates](/docs/guides/whatsapp/templates) voor het versturen met een template.

## Aandachtspunten

- **Het klantenservicevenster moet open zijn.** Een contact-info-verzoek is een servicebericht dat alleen binnen een open venster kan worden afgeleverd; zie in de hub [klantenservicevenster](/docs/guides/whatsapp/message-types#the-customer-service-window). De venstercontrole faalt open, dus een `202` is geen bewijs dat het venster daadwerkelijk open was op het moment van verzenden.
- **`from` moet een nummer zijn dat je werkruimte bezit**, en het venster dat open moet zijn is gekoppeld aan dat nummer, niet aan je werkruimte als geheel.
- **Het antwoord kan niet op id aan het verzoek worden gekoppeld.** Geen `context` aan Meta's kant betekent dat `in_reply_to_message_id` op het antwoord wordt weggelaten; correleer op `from` in combinatie met een recent eigen verzonden bericht.
- **Een weigering is stil.** WhatsApp toont de ontvanger een deelscherm, en het wegklikken ervan produceert geen bericht en geen webhook. De afwezigheid van een `contact_cards`-bericht is het enige signaal, dus elke flow die op een antwoord wacht heeft een eigen timeout nodig in plaats van een weigeringsevent om op te letten.
- **Geen header, geen footer en geen knoplabel.** Het schema verbiedt een `header` en `footer_text` bij dit type expliciet, en er is geen veld om de knop mee te labelen. Alles wat de ontvanger leest moet in `body_text` staan.
- **Het gedeelde nummer is niet gegarandeerd het nummer waarmee het contact chat.** Meta waarschuwt dat de ID en het telefoonnummer van een gebruiker niet altijd overeen hoeven te komen, dus neem niet aan dat het gedeelde nummer gelijk is aan `from.phone_number`. Het is ook niet gegarandeerd E.164: Bird normaliseert het waar het te parsen is en geeft het anders ongewijzigd door.
- **Het antwoord is een `contact_cards`-bericht, geen `interactive_reply`.** Een integratie die alleen `interactive_reply` controleert op een tik mist dit type volledig, net als een integratie die alleen inkomende `location` controleert voor het andere verzoektype.

Alles wat het schema hier kan uitdrukken, een te lange `body_text`, een `header`, een `footer_text`, of elk van `buttons`, `list`, `cta_url`, `cards`, is een gewone validatiefout op het verzoek zonder cataloguscode. Een citaat dat niet opgelost kan worden laat het verzoek falen voordat er iets wordt aangemaakt of in rekening gebracht: `404` [`E15071`](/docs/api/errors/E15071) als de id geen bericht noemt dat deze werkruimte heeft, `422` [`E15072`](/docs/api/errors/E15072) als het er een noemt dat niet geciteerd kan worden. Zie in de hub [fouten](/docs/guides/whatsapp/message-types/interactive#errors) voor de volledige interactieve fouttabel en [WhatsApp-berichten versturen](/docs/guides/whatsapp/sending-whatsapp) voor de fouten die elk WhatsApp-verzending kan opleveren.

## Vervolgstappen

- [Interactieve WhatsApp-berichten](/docs/guides/whatsapp/message-types/interactive): wat alle zes interactieve types gemeen hebben
- [Locatieverzoeken](/docs/guides/whatsapp/message-types/interactive/location-requests): vraag om een locatie in plaats van een telefoonnummer
- [WhatsApp-templates](/docs/guides/whatsapp/templates): bereik een ontvanger van wie het klantenservicevenster gesloten is
- [WhatsApp-berichten versturen](/docs/guides/whatsapp/sending-whatsapp): de request-envelope, het `202`-model en veilig opnieuw proberen

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
