Un report di consegna SMS (DLR) ti dice lo stato finale di un messaggio: DELIVRD (ha raggiunto il telefono), UNDELIV (fallito), EXPIRED (periodo di validità scaduto), REJECTD (rifiutato dalla rete), DELETED, UNKNOWN, oppure ACCEPTD ed ENROUTE come stati intermedi. Lo stato arriva con un codice di errore che spiega i fallimenti, ma i codici di errore sono specifici di ogni operatore o piattaforma.
Come ti arriva un DLR
Su SMPP chiedi una conferma impostando il campo registered_delivery nel submit_sm (il valore 1 chiede una conferma sia per successo sia per fallimento, il valore 2 solo per fallimento). Il fornitore risponde con submit_sm_resp e un message ID, che significa solo che il messaggio è stato accettato, non consegnato. Più tardi la conferma arriva come deliver_sm, con l'esm_class che la indica come delivery receipt. Con le HTTP API la stessa informazione viene inviata al tuo webhook. Le due interfacce sono confrontate in SMPP vs HTTP API per gli SMS A2P.
La specifica SMPP 3.4 suggerisce un formato di testo per la conferma, seguito dalla maggior parte delle piattaforme:
id:1234567890 sub:001 dlvrd:001 submit date:2610201015 done date:2610201015 stat:DELIVRD err:000 text:Your code is
L'id corrisponde al message ID del submit_sm_resp. Le date sono di solito nel formato YYMMDDhhmm. Molte piattaforme inviano gli stessi dati anche nei parametri opzionali receipted_message_id e message_state.
Valori di stato
| Stato | Significato | Finale? |
|---|---|---|
| DELIVRD | Consegnato al telefono | Sì |
| UNDELIV | Non è stato possibile consegnarlo (numero non valido, abbonato assente, bloccato, filtrato) | Sì |
| EXPIRED | Periodo di validità finito prima della consegna, spesso perché il telefono era spento o senza copertura | Sì |
| REJECTD | Rifiutato dalla rete o da un firewall SMS, spesso per motivi di sender ID o di contenuto | Sì |
| DELETED | Cancellato dall'SMSC prima della consegna | Sì |
| UNKNOWN | Stato finale non noto o non riportato | Da considerare fallito fino a prova contraria |
| ACCEPTD | Accettato dall'SMSC per conto dell'abbonato, senza conferma dal telefono | Intermedio |
| ENROUTE | In transito, la consegna è ancora in corso | Intermedio |
Alcune piattaforme inviano conferme intermedie e poi una finale. Il tuo sistema deve aggiornare lo stato del messaggio ogni volta e considerare come risultato solo lo stato finale.
Codici di errore
Il campo err contiene un codice a tre cifre, di solito 000 in caso di successo. Nei fallimenti il suo significato dipende dall'operatore e da ogni piattaforma della catena, quindi non esiste un elenco universale. Le categorie comuni dietro i codici sono: abbonato sconosciuto o numero non assegnato, abbonato assente, memoria del telefono piena, chiamate bloccate, guasto di rete e blocco da parte di un filtro antispam o di un firewall. Chiedi a ogni fornitore la sua tabella dei codici di errore e ricollegala alle tue categorie. Non confondere i codici di errore dei DLR con i codici command_status SMPP restituiti all'invio: quelli sono trattati in codici di errore SMPP più comuni.
Leggere correttamente i DLR
- Un DLR mancante non è di per sé un fallimento. Alcune destinazioni o rotte non restituiscono conferme. Sappi quali sono prima di costruire gli allarmi.
- I tempi contano. Uno stato EXPIRED può arrivare ore o giorni dopo, a seconda del periodo di validità impostato. Un periodo di validità breve è adatto agli OTP, dove un codice in ritardo è inutile.
- I messaggi concatenati possono produrre una conferma per ogni parte. Conta un messaggio lungo come consegnato solo quando lo sono tutte le parti. Vedi SMS lunghi concatenati.
- Troppo bello per essere vero è un segnale. Una rotta con il 100% di DELIVRD e conferme istantanee potrebbe inviare fake DLR.
Usare i DLR per gestire le rotte
Aggrega gli stati ogni ora per paese, per rete e per rotta. Un aumento di UNDELIV o REJECTD su una rete spesso significa una modifica del firewall o un problema di sender ID; un aumento di EXPIRED può indicare congestione. È la base del monitoraggio della consegna, spiegato in tasso di consegna e latenza degli SMS. Quando una rotta peggiora, una rotta di backup ti permette di spostare il traffico in fretta.
VoIPMatcher procura dai suoi carrier rotte SMS A2P con DLR. Richiedi una rotta SMS e indicaci quali destinazioni hanno bisogno del supporto completo ai DLR.
Domande frequenti
Cosa significa DLR negli SMS?
DLR sta per delivery report, detto anche delivery receipt o conferma di consegna. È il messaggio di stato che torna indietro dopo che una rete ha provato a consegnare un SMS, e dice al mittente se il messaggio ha raggiunto il telefono, è fallito, è scaduto o è stato rifiutato. Le piattaforme A2P lo restituiscono al mittente via SMPP o su un webhook.
Come attivo i report di consegna SMS sul mio telefono?
Nella maggior parte delle app di messaggistica Android, i report di consegna sono un'opzione nelle impostazioni SMS dell'app, spesso tra le impostazioni avanzate. iPhone non offre report di consegna per i normali SMS. I report di consegna del telefono sono diversi dai DLR A2P che le aziende ricevono dal loro provider SMS, che vengono richiesti al momento dell'invio di ogni messaggio.
Cos'è un DLR dell'SMSC?
Un DLR dell'SMSC è la conferma di consegna generata dallo Short Message Service Centre dell'operatore dopo aver tentato di consegnare il messaggio. È l'unico report che riflette cosa è successo sulla rete. Le conferme create da piattaforme intermedie senza la conferma dell'operatore non sono veri DLR dell'SMSC e possono nascondere traffico non consegnato.
Perché per alcuni SMS non ricevo il report di consegna?
Alcune destinazioni, reti e rotte non restituiscono alcuna conferma, e alcune la restituiscono solo per i fallimenti. Un DLR mancante quindi non prova che il messaggio sia fallito. Chiedi al tuo fornitore quali destinazioni hanno il supporto completo ai DLR, riporta i DLR mancanti separatamente dai fallimenti e conferma con test su telefoni reali.
Quanto tempo ci mette un report di consegna?
Sulle buone rotte un report DELIVRD di solito arriva pochi secondi dopo la consegna. Gli stati di fallimento possono richiedere molto di più: un report EXPIRED arriva solo alla fine del periodo di validità, che può essere ore o giorni dopo. Report che arrivano sempre entro un secondo dall'invio, anche per i fallimenti, fanno pensare che siano generati e non reali.
Ti serve una rotta?
Mandaci destinazione, tipo di rotta e tariffa target. Ti rispondiamo con quello che possiamo offrirti.