"dlr": "yes" et un dlr_url sur
l’envoi.
json — le défaut
Un POST avec Content-Type: application/json :
Champs
Les champs à null sont omis plutôt qu’envoyés comme null, donc un accusé pour un message qui
n’a jamais atteint un vendor n’arrive pas rempli de clés vides.
Chaque appel porte
User-Agent: FireFlo/<version>.
kannel — substitution de placeholders
Un simple GET sur l’URL enregistrée avec deux placeholders substitués. Rien n’est ajouté.
smsg.dlr.forward.format, pas par vous.
dlr-method est accepté sur un envoi mais ne le sélectionne pas.
Livraison et retries
La livraison est at-least-once. Rendez votre handler idempotent sur
id plus level, pas
sur id seul, puisqu’un message peut légitimement produire un niveau 1 puis un niveau 2.
Quels accusés vous recevez
dlr_level sur l’envoi : 1 progression uniquement, 2 l’issue (défaut), 3 les deux.
En SMPP, le même choix est l’octet registered_delivery. 0x11 est l’écriture SMPP de
dlr_level: 3.
Chaque accusé est enregistré
Qu’il soit transféré ou non. Supprimer un accusé est une décision sur ce qui vous est dit, jamais sur ce qui est enregistré. Donc “je n’ai jamais reçu d’accusé” a toujours une réponse côté fournisseur.Voir aussi
Accusés de livraison
Construire contre ceci, avec le piège du niveau expliqué.
Callbacks qui n'arrivent pas
Diagnostiquer le silence.