WhatsApp

Quelle est la différence entre whatsapp.failed et whatsapp.rejected ?

Un événement whatsapp.rejected signifie que Bird a arrêté le message avant facturation ; whatsapp.failed enregistre un échec pendant l'envoi ou la livraison.

Lorsqu'un message se termine, examinez son événement terminal et son code d'erreur avant de décider s'il faut réessayer ou investiguer la livraison.

Que signifie whatsapp.rejected ?

Bird a arrêté le message avant l'expédition et ne l'a pas facturé.

Les vérifications du destinataire et la facturation peuvent produire un résultat de rejet. Utilisez le code associé pour choisir l'action suivante :

CodeCauseAction suivante
undeliverableAucune adresse de destinataire utilisableCorrigez le destinataire
recipient_suppressedLe destinataire est suppriméRespectez le désabonnement et examinez les enregistrements de consentement
price_not_foundBird ne peut pas tarifer l'envoiContactez le support avec l'identifiant du message
insufficient_balanceLe portefeuille ne peut pas financer l'envoi ou l'organisation ne peut pas être facturéeRésolvez la facturation avant de renvoyer

Un envoi non tarifé est refusé plutôt que traité comme gratuit. Répéter la requête inchangée ne fournit pas le prix manquant.

L'horodatage du rejet utilise l'heure d'acceptation initiale. Utilisez-le de manière cohérente dans vos rapports afin que le délai de file d'attente ne déplace pas le rejet dans une période de rapport ultérieure.

Que signifie whatsapp.failed ?

Le message a échoué pendant l'envoi ou la livraison, et sa cause est enregistrée dans les détails de l'erreur.

Meta peut signaler un échec via un callback de livraison. Il peut aussi refuser la requête d'envoi de Bird avant d'accepter le message pour livraison.

Bird enregistre internal_error lorsque le numéro d'envoi n'a pas d'identifiant utilisable ou que le traitement épuise ses tentatives. meta_error_code est le code d'erreur enregistré par Meta. Ce code Bird n'en contient pas.

Un épuisement des tentatives peut inclure des erreurs de transport ou des échecs en amont. Ne déduisez pas de internal_error seul que Meta n'a jamais reçu de requête.

Vérifiez la description et la connexion du numéro d'envoi. Transmettez l'identifiant du message au support lorsque la cause reste incertaine.

Un échec peut survenir après facturation. Examinez le cost du message au lieu de supposer que chaque envoi infructueux était gratuit.

Pourquoi undeliverable apparaît-il sur les deux événements ?

Lors d'un rejet, Bird n'a pas pu adresser le destinataire. Lors d'un échec, c'est le résultat normalisé de Bird pour un refus Meta.

Le code d'erreur est plus large qu'un constat d'impossibilité de réception par le téléphone. Bird utilise aussi undeliverable lorsqu'un code Meta n'a pas de correspondance plus spécifique.

Consultez meta_error_code pour le code enregistré par Meta et description pour l'explication associée. Un échec signalé sans détails d'erreur reçoit quand même undeliverable.

D'autres codes d'échec normalisés identifient des problèmes plus spécifiques :

CodeQue faut-il investiguer
service_window_expiredSi du contenu libre a été envoyé en dehors de la fenêtre de service
rate_limitedLes limites d'envoi ou de destinataire de Meta
media_rejectedLe média refusé par Meta
internal_errorL'échec de traitement ou d'envoi enregistré par Bird

Conservez les codes inconnus dans vos journaux. Le jeu de codes peut évoluer, et une valeur inconnue ne doit pas invalider un événement par ailleurs exploitable.

Comment mon gestionnaire d'événements doit-il interpréter le résultat ?

Branchez sur le type d'événement et son code d'erreur ensemble.

Un message rejeté ne progresse pas vers un événement sent. Un message échoué nécessite ses détails d'erreur pour distinguer un échec interne de la réponse de Meta.

Séparez le statut de livraison de l'engagement. Un événement whatsapp.read enregistre une lecture sans remplacer le statut de livraison du message.

Bird émet son propre whatsapp.sent après la réussite de l'envoi. Il ne crée pas d'autre événement à partir du callback de statut d'envoi distinct de Meta.

La revue de template utilise un ensemble de statuts différent. Examinez la langue du template lorsque l'approbation est le problème, plutôt que ces résultats de message.

Que dois-je faire avant un nouvel envoi ?

Corrigez la cause enregistrée avant d'envoyer un autre message.

Pour service_window_expired, utilisez un template approuvé ou attendez que le message du client rouvre la fenêtre de service.

En cas de suppression, respectez le choix du destinataire. Retirer un désabonnement reviendrait à ignorer la préférence du destinataire et créerait un risque de conformité.

En cas de problème de facturation ou de connexion de l'expéditeur, résolvez d'abord cette condition de compte. Conservez l'identifiant du message original afin que le support puisse examiner la tentative infructueuse.

Si le numéro ou le Business Account est restreint ou banni, suivez les étapes de restriction et d'appel du compte avant de réessayer.

En cas d'échec de transport incertain, investiguez avant de créer un autre message. Un nouvel envoi peut dupliquer une requête dont le résultat n'a pas été observé.

En bref

  1. Un rejet n'est pas facturé.

    Bird arrête le message avant l'expédition lorsque les vérifications du destinataire ou la facturation empêchent l'envoi.

  2. Un échec peut provenir de Bird ou de Meta.

    Examinez l'erreur enregistrée avant de décider où investiguer. internal_error ne contient pas de code d'erreur Meta.

  3. Interprétez l'événement et le code ensemble.

    undeliverable apparaît sur les deux événements. Sa signification dépend de l'endroit où le message s'est arrêté.

  4. Choisissez la correction à partir de la cause.

    Corrigez le problème de destinataire, de compte, de contenu ou de timing avant de tenter un nouvel envoi. Conservez les codes inconnus pour investigation.

Développez sur le même réseau.

Une clé API de test est disponible immédiatement. La production est activée dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Votre prochaine idée.
Prête à se connecter.