SMS

Qu'est-ce qu'un accusé de réception de livraison (DLR) et quelle est sa fiabilité ?

Un accusé de réception de livraison (DLR) signale le résultat de livraison d'un SMS sur le réseau, mais n'établit pas que quelqu'un l'a lu.

Votre requête d'envoi peut réussir avant que le téléphone du destinataire ne reçoive quoi que ce soit. Un rapport ultérieur de l'opérateur fournit un autre résultat, que votre application doit traiter séparément de l'acceptation de la requête.

Que m'indique un accusé de réception de livraison ?

Un accusé de réception signale le succès de la livraison ou un problème de livraison du point de vue du réseau.

Un résultat de livraison SMS peut arriver alors que le téléphone reste non consulté dans un tiroir. Il ne prouve pas que le destinataire a vu l'identité de l'expéditeur. Il n'établit pas non plus qu'il a lu l'intégralité du texte.

Le réseau envoie les accusés de réception indépendamment de sa réponse à une requête d'envoi. Il peut aussi supprimer certains rapports. La référence des accusés de réception SMPP documente ces contrôles pour les connexions opérateur.

Quels accusés de réception opérateur Bird expose-t-il ?

Vous recevez des événements publics pour les résultats de livraison reconnus. Les accusés de réception mis en mémoire tampon restent internes.

Un accusé de réception mis en mémoire tampon indique que l'opérateur retient le message. Bird l'enregistre dans son journal d'événements interne sans modifier le statut public du message. Vous ne voyez aucune mise à jour dans la chronologie publique ni dans vos webhooks.

Statut de l'accusé de réception opérateurÉvénement Bird
deliveredsms.delivered
expiredsms.expired
rejectedsms.rejected
delivery_failed avec une raison récupérablesms.undelivered
delivery_failed avec une raison permanente ou non classéesms.failed
bufferedAucun événement public

Un statut opérateur non reconnu ne produit aucun événement. L'absence de mise à jour publique n'établit donc pas que l'opérateur n'a envoyé aucun accusé de réception.

Pourquoi un même statut d'échec produit-il des événements différents ?

Bird utilise la raison d'échec de l'opérateur pour déterminer si le problème sous-jacent peut se résoudre.

Raison opérateurCode d'erreur BirdClassification
unavailable_subscriberunreachableRécupérable
received_network_errorprovider_unavailableRécupérable
capacity_limit_reachedprovider_unavailableRécupérable
unknown_subscriberinvalid_destinationPermanent
opted_outrecipient_opted_outPermanent
carrier_rejectedcontent_rejectedPermanent

Un échec récupérable produit sms.undelivered. Le message reste final : Bird ne le réessaye pas automatiquement. Atteindre le destinataire nécessite un nouvel envoi une fois le problème sous-jacent résolu.

Un échec permanent produit sms.failed. Une raison non classée produit aussi cet événement avec le code d'erreur unknown. Ce résultat signifie que Bird n'a pas pu classifier la raison de l'opérateur. Il ne prouve pas de manière indépendante que la destination est définitivement injoignable.

Puis-je définir quand l'opérateur cesse ses tentatives ?

Vous ne pouvez pas définir le délai de livraison de l'opérateur via le point de terminaison d'envoi de Bird.

Bird rejette tout validity_period fourni avec HTTP 422 SMSUnsupportedFeature. Ce champ contrôlerait la durée pendant laquelle l'opérateur continue de tenter la livraison du message.

Le champ de réponse correspondant n'est pas renvoyé. Bird produit sms.expired lorsqu'un opérateur signale une expiration. Votre application ne peut pas déduire le délai d'attente de l'opérateur à partir d'un champ absent.

Comment gérer les accusés de réception dans mon application ?

Vous devez suivre les résultats de livraison séparément de l'acceptation de la requête et de toute action du destinataire.

Traitez un message sans résultat de livraison final comme en attente. Lisez le code d'erreur associé à un événement d'échec pour pouvoir en investiguer la cause. Conservez les codes inconnus dans vos journaux, car l'ensemble des codes d'erreur est extensible.

Utilisez les événements de livraison pour une métrique de livraison. Pour un flux de code de vérification ou de confirmation, enregistrez le succès lorsque le destinataire complète l'action. Un accusé de réception de livraison seul ne peut pas fournir cette mesure.

Événements SMS documente les charges utiles des événements publics et la chronologie des messages.

En bref

  1. La livraison n'établit pas la lecture.

    Un accusé de réception signale le résultat de livraison du réseau sans confirmer qu'une personne a vu le message.

  2. Certains accusés de réception n'ont pas d'événement public.

    Bird enregistre les accusés de réception mis en mémoire tampon en interne sans modifier le statut public, la chronologie ni le flux de webhooks.

  3. La raison détermine l'événement d'échec.

    Les raisons opérateur récupérables produisent sms.undelivered ; les raisons permanentes ou non classées produisent sms.failed.

  4. Une raison récupérable ne déclenche pas un nouvel envoi.

    Un message non distribué est final, donc une nouvelle tentative nécessite un envoi séparé.

Mettez-le en pratique.

Poursuivez avec la documentation, les guides et les exemples sur ce sujet. Les ressources sont en anglais.

Obtenir un guide d'implémentation

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.