Types de messages WhatsApp non pris en charge
WhatsApp transporte du contenu que le API de Bird ne modélise pas, des commandes catalogue aux notifications système relatives à la conversation. Plutôt que d'ignorer un tel message ou de le livrer vide, Bird l'enregistre avec une branche unsupported qui nomme le type de contenu WhatsApp. Le message est visible dans le journal WhatsApp et parvient à votre webhook comme n'importe quel autre.
Ce que contient un message non pris en charge
unsupported.type transporte la chaîne de type propre à WhatsApp pour ce qui est arrivé, et c'est le seul contenu du message. L'enveloppe qui l'entoure reste inchangée :
Exemple de code
{
"id": "wam_01kyh0w4ujnz2x8p1s5dci0vlg",
"direction": "inbound",
"from": { "phone_number": "+14155550100" },
"to": { "phone_number": "+13124495569" },
"status": "received",
"unsupported": { "type": "order" },
"created_at": "2026-08-25T09:31:20Z"
}| type | Ce que le contact a envoyé |
|---|---|
| interactive | Contenu interactif dont la forme de réponse n'a pas pu être lue comme un appui par le API |
| button | Un appui sur un bouton que le API n'a pas pu lire comme une réponse |
| order | Un panier ou une commande passée depuis un catalogue de produits |
| system | Une notification système relative à la conversation, par exemple un contact qui change de numéro de téléphone |
| unsupported | Le type unsupported propre à WhatsApp, pour un message que ses propres clients ne peuvent pas afficher |
unsupported n'est pas un espace réservé dans ce tableau. WhatsApp signale un type de contenu qui lui est propre sous ce nom lorsqu'un de ses clients envoie quelque chose que les autres ne peuvent pas afficher, et cela arrive sous cette valeur.
La liste est ouverte. WhatsApp ajoute des types de contenu au fil du temps ; traitez donc un type que vous ne reconnaissez pas comme un type futur plutôt que comme une erreur : journalisez-le et passez à la suite au lieu d'échouer la lecture.
La charge utile du webhook
whatsapp.received se déclenche aussi pour un message non pris en charge, avec la même branche :
Exemple de code
{
"type": "whatsapp.received",
"timestamp": "2026-08-25T09:31:20.774Z",
"data": {
"whatsapp_id": "wam_01kyh0w4ujnz2x8p1s5dci0vlg",
"workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
"direction": "inbound",
"from": { "phone_number": "+14155550100" },
"to": { "phone_number": "+13124495569" },
"unsupported": { "type": "order" },
"tags": null,
"metadata": null
}
}Un endpoint qui aiguille selon le champ de contenu trouvé doit avoir une branche par défaut, et cette branche est celle où atterrit ce cas. Accusez réception du webhook avec un 2xx dans tous les cas : réessayer ne change rien, car le contenu ne deviendra pas modélisé entre deux tentatives.
Ce que fait encore un message non pris en charge
Le message compte comme un message entrant à tous égards qui ne dépendent pas de son contenu :
- Il réinitialise la fenêtre de service client à 24 heures pleines ; ainsi, une commande passée depuis votre catalogue rouvre les réponses en texte libre.
- Il apparaît dans la liste des messages et dans le journal WhatsApp, avec son type affiché plutôt qu'une ligne vide.
- Il n'est jamais facturé. Aucun message entrant n'est tarifé.
Ce que vous ne pouvez pas faire, c'est lire le contenu. Une commande ne contient pas le panier, et une notification système ne précise pas ce qui a changé. Lorsque ce détail est important, interrogez le contact par écrit, ou utilisez un bouton de réponse ou un menu liste pour que la réponse arrive sur une branche modélisée sur laquelle vous pouvez agir.
Points de vigilance
- Ne traitez pas la branche comme une erreur. Le message a bien été reçu ; seul son contenu n'est pas modélisé. Déclencher une alerte dessus revient à alerter chaque fois qu'un contact passe une commande.
- Un type system peut signifier que le contact a changé de numéro. Meta documente un changement de numéro de téléphone comme l'un des événements qui génèrent un message système, et il régénère en même temps l'identifiant utilisateur limité à l'entreprise du contact. La branche nomme le type et rien d'autre ; traitez-la comme une invitation à rétablir l'identité de votre interlocuteur.
- Une réaction emoji n'est pas un message non pris en charge. Ce n'est pas du tout un message entrant ; elle n'atteint aucun webhook et n'apparaît dans aucune liste de messages : chaque changement est enregistré dans le journal de réactions du message concerné, décrit dans événements WhatsApp.
- Stockez le type tel quel. Un type futur se résout en un nom pour lequel vous n'avez pas encore de code, et conserver la valeur brute est ce qui vous permettra de retrouver ces messages le moment venu.
Étapes suivantes
- Fonctionnement de la réception : l'enveloppe entrante, la récupération des médias et le webhook whatsapp.received
- Recevoir des réponses interactives : les appuis qui arrivent bien en tant que contenu modélisé
- Journal WhatsApp : parcourir la conversation dans le tableau de bord
- Événements WhatsApp : la liste complète des événements, via le API ou les webhooks
Ressources associées
Poursuivez avec la documentation, les guides et les exemples sur ce sujet. Les ressources sont en anglais.
Regarder le guideConnecting WhatsApp to Bird: from buying a number to a live channelComprendre le conceptWhat is the 24-hour customer service window on WhatsApp?Utiliser l'outilWhatsApp message builderExplorer la fonctionnalitéWhatsApp
Essayez la pratique et obtenez un guide d'implémentation