Un accusé de réception SMS (DLR, delivery report) vous indique l'état final d'un message : DELIVRD (arrivé sur le téléphone), UNDELIV (échec), EXPIRED (période de validité écoulée), REJECTD (refusé par le réseau), DELETED, UNKNOWN, ou ACCEPTD et ENROUTE comme états intermédiaires. Le statut s'accompagne d'un code d'erreur qui explique les échecs, mais ces codes sont propres à chaque opérateur ou plateforme.
Comment un DLR vous parvient
En SMPP, vous demandez un accusé en renseignant le champ registered_delivery du submit_sm (la valeur 1 demande un accusé en cas de succès et d'échec, la valeur 2 uniquement en cas d'échec). Le fournisseur répond par un submit_sm_resp avec un message ID, qui signifie seulement que le message a été accepté, pas livré. Plus tard, l'accusé arrive sous forme de deliver_sm, dont l'esm_class le désigne comme accusé de réception. Avec une API HTTP, la même information est envoyée à votre webhook. Les deux interfaces sont comparées dans SMPP vs API HTTP pour le SMS A2P.
La spécification SMPP 3.4 propose un format texte pour l'accusé, que la plupart des plateformes suivent :
id:1234567890 sub:001 dlvrd:001 submit date:2610201015 done date:2610201015 stat:DELIVRD err:000 text:Your code is
L'id correspond au message ID du submit_sm_resp. Les dates sont en général au format YYMMDDhhmm. Beaucoup de plateformes envoient aussi les mêmes données dans les paramètres optionnels receipted_message_id et message_state.
Valeurs de statut
| Statut | Signification | Final ? |
|---|---|---|
| DELIVRD | Livré sur le téléphone | Oui |
| UNDELIV | Livraison impossible (numéro invalide, abonné absent, interdit, bloqué) | Oui |
| EXPIRED | Période de validité écoulée avant la livraison, souvent parce que le téléphone était éteint ou hors couverture | Oui |
| REJECTD | Rejeté par le réseau ou un pare-feu SMS, souvent pour des raisons de sender ID ou de contenu | Oui |
| DELETED | Supprimé du SMSC avant la livraison | Oui |
| UNKNOWN | État final inconnu ou non rapporté | À traiter comme un échec jusqu'à preuve du contraire |
| ACCEPTD | Accepté par le SMSC pour le compte de l'abonné, sans confirmation du téléphone | Intermédiaire |
| ENROUTE | En transit, livraison toujours en cours | Intermédiaire |
Certaines plateformes envoient des accusés intermédiaires puis un accusé final. Votre système doit mettre à jour l'état du message à chaque fois et ne retenir que l'état final comme résultat.
Codes d'erreur
Le champ err porte un code à trois chiffres, en général 000 en cas de succès. En cas d'échec, son sens dépend de l'opérateur et de chaque plateforme de la chaîne : il n'existe donc pas de liste universelle. Les catégories courantes derrière ces codes sont : abonné inconnu ou non attribué, abonné absent, mémoire du téléphone pleine, appel interdit, panne réseau, et blocage par un filtre anti-spam ou un pare-feu. Demandez à chaque fournisseur sa table de codes d'erreur et faites-la correspondre à vos propres catégories. Ne confondez pas les codes d'erreur DLR avec les codes command_status SMPP renvoyés à la soumission : ceux-là sont traités dans les codes d'erreur SMPP courants.
Bien lire les DLR
- Un DLR manquant n'est pas un échec par défaut. Certaines destinations ou routes ne renvoient pas d'accusés. Sachez lesquelles avant de construire vos alertes.
- Le timing compte. Un statut EXPIRED peut arriver des heures ou des jours plus tard, selon la période de validité fixée. Une période de validité courte convient aux OTP, pour lesquels un code en retard est inutile.
- Les messages concaténés peuvent produire un accusé par partie. Comptez un message long comme livré uniquement quand toutes ses parties le sont. Voir les SMS longs concaténés.
- Trop beau pour être vrai est un signal. Une route avec 100% de DELIVRD et des accusés instantanés envoie peut-être de faux DLR.
Utiliser les DLR pour gérer les routes
Agrégez les statuts par pays, par réseau et par route chaque heure. Une hausse des UNDELIV ou des REJECTD sur un réseau signale souvent un changement de pare-feu ou un problème de sender ID ; une hausse des EXPIRED peut signaler une congestion. C'est la base du suivi de la livraison, expliquée dans taux de livraison et latence des SMS. Quand une route se dégrade, une route de secours vous permet de déplacer le trafic rapidement.
VoIPMatcher source auprès de ses carriers des routes SMS A2P avec accusés de réception. Demandez une route SMS et indiquez-nous quelles destinations ont besoin d'une prise en charge complète des DLR.
Questions fréquentes
Que signifie DLR pour un SMS ?
DLR signifie delivery report, aussi appelé delivery receipt : l'accusé de réception. C'est le message de statut renvoyé après qu'un réseau a tenté de livrer un SMS, qui indique à l'expéditeur si le message a atteint le téléphone, a échoué, a expiré ou a été rejeté. Les plateformes A2P le renvoient à l'expéditeur en SMPP ou vers un webhook.
Comment activer les accusés de réception SMS sur mon téléphone ?
Dans la plupart des applications de messagerie Android, les accusés de réception sont une option des réglages SMS de l'application, souvent dans les réglages avancés. L'iPhone ne propose pas d'accusés de réception pour les SMS classiques. Les accusés du téléphone sont distincts des DLR A2P que les entreprises reçoivent de leur fournisseur SMS, demandés à la soumission de chaque message.
Qu'est-ce qu'un DLR SMSC ?
Un DLR SMSC est l'accusé de réception généré par le Short Message Service Centre de l'opérateur après sa tentative de livraison. C'est le seul accusé qui reflète ce qui s'est passé sur le réseau. Les accusés créés par des plateformes intermédiaires sans confirmation de l'opérateur ne sont pas de vrais DLR SMSC et peuvent masquer du trafic non livré.
Pourquoi n'ai-je aucun accusé de réception pour certains SMS ?
Certaines destinations, certains réseaux et certaines routes ne renvoient aucun accusé, et d'autres seulement en cas d'échec. L'absence de DLR ne prouve donc pas qu'un message a échoué. Demandez à votre fournisseur quelles destinations ont une prise en charge complète des DLR, rapportez les accusés manquants à part des échecs, et confirmez par des tests sur téléphones.
Combien de temps prend un accusé de réception ?
Sur de bonnes routes, un accusé DELIVRD suit en général la livraison de quelques secondes. Les statuts d'échec peuvent prendre bien plus longtemps : un accusé EXPIRED n'arrive qu'à la fin de la période de validité, parfois des heures ou des jours plus tard. Des accusés qui arrivent toujours moins d'une seconde après la soumission, même pour les échecs, laissent penser qu'ils sont générés et non réels.
Besoin d'une route ?
Indiquez la destination, le type de route et le tarif cible. Nous vous répondons avec ce que nous pouvons fournir.