WhatsApp-serviceberichten
Een servicebericht is alles wat je stuurt dat geen vooraf goedgekeurd template is: de vrije inhoud die een bedrijf verstuurt binnen een open gesprek. POST /v1/whatsapp/messages bevat precies één van negen inhoudstypen voor serviceberichten, of een template. Deze pagina behandelt wat de negen typen gemeen hebben; de eigen pagina van elk type behandelt de berichtstructuur en specifieke limieten.
De inhoudstypen
| Type | Veld | Wat het bevat | Gebruik het wanneer |
|---|---|---|---|
| Platte tekst | text | Een body van maximaal 4096 tekens, met een optionele linkpreview | je een bericht zonder bijlage stuurt |
| Afbeeldingen | image | Een publieke afbeeldings-URL en een optioneel bijschrift | je een foto of afbeelding stuurt |
| Video | video | Een publieke video-URL en een optioneel bijschrift | je een videoclip stuurt |
| Audio | audio | Een publieke audio-URL, optioneel weergegeven als spraakbericht | je een spraakbericht of audioclip stuurt |
| Stickers | sticker | Een publieke WebP-afbeeldings-URL | je een sticker stuurt |
| Documenten | document | Een publieke bestands-URL, een optioneel bijschrift en een optionele bestandsnaam | je een PDF, spreadsheet of ander bestand stuurt |
| Locatie | location | Een breedte- en lengtegraad, met een optionele naam en adres | je een pin stuurt, zoals een ophaallocatie |
| Contactkaarten | contact_cards | Eén tot vijf contactkaarten, elk met een naam en eventuele nummers, e-mailadressen, websites of adressen | je iemands gegevens deelt, zoals het nummer van een collega |
| Interactieve berichten | interactive | Bodytekst plus een knop, een menu, een link, een kaart, of een verzoek om locatie of contact | je wilt dat de ontvanger ergens op tikt in plaats van een vrij antwoord te typen |
Een request bevat precies één van template of één van deze negen velden. Een request dat geen van beide bevat, of meer dan één, wordt geweigerd met een 422.
Het klantenservicevenster
Een servicebericht, oftewel een van de negen bovenstaande typen, wordt alleen bezorgd binnen een open 24-uurs klantenservicevenster. Het contact opent dat venster door je zakelijke nummer te berichten of te bellen, en elk volgend bericht van hen reset het naar 24 uur.
Een servicebericht dat naar een gesloten venster wordt gestuurd, wordt direct geweigerd: het request retourneert een 422 E15044 WhatsAppServiceWindowClosed, en er wordt niets aangemaakt of in rekening gebracht. Stuur in plaats daarvan een goedgekeurd template; dat bereikt het contact ongeacht het venster, en hun antwoord heropent het. Een venster dat sluit op het moment tussen accepteren en verzenden mislukt alsnog, maar asynchroon: het bericht bereikt failed met service_window_expired op last_error.
De controle bij acceptatie is best effort, geen garantie: de poort faalt open, dus een cachemiss of een leesfout laat de verzending door in plaats van te blokkeren. Een 202 is daarom geen bewijs dat het venster open was toen de verzending plaatsvond; het definitieve signaal is de status van het bericht zelf, niet het acceptatieantwoord.
Elk servicebericht vereist ook from, een nummer dat je werkruimte bezit. De beheerde nummers van Bird kunnen dat niet dragen, dus een servicebericht heeft eerst een eigen gekoppeld nummer nodig; zie Telefoonnummer instellen.
Zie het klantenservicevenster voor de volledige levenscyclus: hoe het venster opent, wat het reset en hoe het wordt bijgehouden.
Media versturen via URL
image, video, audio, sticker en document nemen allemaal een url die naar een bestand wijst dat WhatsApp op het moment van verzending ophaalt, in plaats van een bestand dat je uploadt naar Bird. Bird controleert de vorm van de URL bij acceptatie, voordat er iets in de wachtrij wordt geplaatst:
- Niet leeg en parseerbaar, met een host en zonder ruwe spaties
- Schema is https
Een http-URL wordt bij acceptatie geweigerd met een 422, ook al zou WhatsApp deze prima ophalen. Dat is beleid van Bird, niet een beperking die WhatsApp oplegt.
Bird controleert niet de bestandsgrootte, het MIME-type of of de URL bereikbaar is. WhatsApp haalt de URL zelf op zodra het bericht wordt verzonden, dus een ondertekende URL moet geldig blijven voorbij dat moment, niet alleen op het moment dat je het request verstuurt; een privé- of verlopen URL mislukt zodra WhatsApp probeert deze op te halen. WhatsApp cachet een opgehaalde URL ook voor ongeveer 10 minuten, dus als je dezelfde URL binnen dat venster opnieuw verstuurt, wordt de eerste fetch opnieuw geserveerd in plaats van opnieuw opgehaald.
Wanneer media mislukt
Een mediaverzending volgt hetzelfde asynchrone pad als elk WhatsApp-bericht: Bird retourneert 202 en accepteert het bericht, waarna WhatsApp de URL ophaalt bij verzending. Als die fetch mislukt, bereikt het bericht failed met media_rejected op last_error, wat onderliggend Meta's 131053 is.
media_rejected is een overkoepelende code voor een te groot bestand, een 404, een DNS-fout en een verkeerd MIME-type; Bird splitst het niet verder op, dus verwacht geen aparte code per oorzaak.
Een asynchroon mislukte mediaverzending wordt toch in rekening gebracht. De afrekening vindt plaats wanneer Bird de geaccepteerde verzending verwerkt, voordat WhatsApp ooit de URL ophaalt, en er is geen restitutiepad zodra die afrekening is geboekt. Houd daar rekening mee: een bericht dat later mislukt in media_rejected kost evenveel als een bericht dat is bezorgd.
Lezen wat een contact heeft gestuurd
Een inkomend bericht bevat een van dezelfde negen typen, dus het veld dat je leest komt overeen met het type dat het contact heeft gebruikt. Contactkaarten worden via hetzelfde contact_cards-veld teruggelezen, ongeacht of het contact er een deelde of jij er een stuurde. WhatsApp-berichten ontvangen behandelt het lezen van inkomende berichten via de API, het ophalen van media die een contact heeft gestuurd, en de whatsapp.received-webhook.
Volgende stappen
- WhatsApp-berichten versturen: de request-envelope, het 202-model en veilig opnieuw proberen
- Interactieve berichten: de zes typen waarop een ontvanger kan tikken
- WhatsApp-berichten ontvangen: inkomende berichten, media en de whatsapp.received-webhook
- WhatsApp-templates: de berichten die je nog kunt sturen als het venster gesloten is
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