BroadNet
SMPPOperazioni

Formato delle ricevute di consegna SMPP (DLR)

Aggiornato il 3 min di letturaBasato su standard
Risposta diretta

Una ricevuta di consegna (DLR) è una deliver_sm il cui esm_class la contrassegna come ricevuta. short_message trasporta un testo a formato fisso — id, sub, dlvrd, submit date, done date, stat, err, Text — definito nell'Appendice B della v3.4 di SMPP. Il campo stat (DELIVRD, EXPIRED, UNDELIV, REJECTD…) è lo stato terminale del messaggio.

DiagrammaUna sessione SMPP tra la vostra piattaforma e BroadNet
La vostra piattaforma (ESME)
BroadNet SMSC
Una connessione TCP/TLS persistente
  1. bind_transceiverAprire e autenticare la sessione
  2. bind_transceiver_respSessione accettata
  3. submit_smInviare un messaggio
  4. submit_sm_respAccettato, ID messaggio restituito
  5. deliver_smRicevuta di consegna o messaggio in entrata
  6. deliver_sm_respConfermato
  7. enquire_linkKeepalive durante l'inattività
§01

Il testo della ricevuta dell'Appendice B

Quando l'SMSC riporta l'esito di un messaggio, invia una deliver_sm con il bit di ricevuta impostato in esm_class (0x04) e inserisce una stringa di testo strutturata in short_message. Il formato è definito nell'Appendice B della specifica v3.4. Ogni campo è una chiave seguita da un valore; il campo id ricollega la ricevuta al message_id del vostro submit_sm_resp.

Una ricevuta di consegna avvenuta (contenuto di short_message)text
id:0a1b2c3d4e sub:001 dlvrd:001 submit date:2607181432 done date:2607181433 stat:DELIVRD err:000 Text:Your code is 4
§02

Campo per campo

La ricevuta è compatta ma ogni campo conta per la riconciliazione. Le date usano il formato YYMMDDhhmm. sub e dlvrd contano i segmenti inviati e consegnati. stat è lo stato terminale di sette caratteri. err è un codice di errore specifico della rete/SMSC (000 in caso di successo). Text è composto dai primi 20 caratteri del messaggio originale.

Campi della ricevuta di consegna (Appendice B)
CampoSignificato
idSMSC message_id del submit_sm originale
subNumero di messaggi brevi inviati (segmenti)
dlvrdNumero di messaggi brevi consegnati
data di invioQuando il messaggio è stato inviato (YYMMDDhhmm)
data di completamentoQuando il messaggio ha raggiunto lo stato finale (YYMMDDhhmm)
statStato finale del messaggio: parola chiave di 7 caratteri (vedi sotto)
errCodice errore specifico della rete/SMSC (000 = nessuno)
TestoPrimi 20 caratteri del messaggio originale
§03

Parole chiave stat e numeri message_state

La parola chiave stat è lo stato terminale in forma leggibile; il TLV message_state (0x0427) trasporta la stessa informazione come numero. Considerate DELIVRD l'unico successo inequivocabile; EXPIRED, UNDELIV, REJECTD, DELETED e UNKNOWN sono fallimenti terminali. ACCEPTD e ENROUTE non sono finali e non dovrebbero chiudere un messaggio.

Parole chiave stat ↔ message_state
statmessage_stateFinale?Significato
ENROUTE1NoIn transito
DELIVRD2SìConsegnato al terminale
EXPIRED3SìPeriodo di validità scaduto
DELETED4SìMessaggio eliminato
UNDELIV5SìNon consegnabile
ACCEPTD6NoAccettato / letto manualmente
UNKNOWN7SìStato sconosciuto
REJECTD8SìRifiutato dalla rete
§04

Parsing sicuro

Interpretate la ricevuta dal short_message della deliver_sm, ma correlate sul TLV receipted_message_id (0x001E) anziché solo sul testo id, e normalizzate i formati id esadecimale e decimale. Distinguete le ricevute intermedie (bit di notifica intermedia di esm_class) dagli stati finali e mappate il codice err su una tassonomia normalizzata — abbonato assente, terminale occupato, bloccato come spam, numero non valido — poiché i valori grezzi di err variano per rotta. Rispondete sempre con deliver_sm_resp.

FAQ

Domande frequenti

Cosa significa stat:DELIVRD?

DELIVRD è lo stato terminale che indica che il messaggio ha raggiunto il terminale del destinatario. Corrisponde a message_state 2 ed è l'unico valore di stat che rappresenta inequivocabilmente un successo.

Dove si trova nella PDU il testo della ricevuta di consegna?

Nel campo short_message di una deliver_sm il cui esm_class ha impostato il bit di ricevuta di consegna (0x04). Il testo segue il formato dell'Appendice B: id, sub, dlvrd, submit date, done date, stat, err, Text.

Che cos'è il campo err in un DLR?

err è un codice di errore specifico della rete o dell'SMSC che indica il motivo di una mancata consegna (000 significa nessuno). Poiché i valori differiscono per rotta, mappateli su una tassonomia interna normalizzata per un reporting di qualità coerente.

Perché l'id del mio DLR non corrisponde al message_id di submit_sm_resp?

Di solito è una discrepanza di formato: alcuni SMSC restituiscono il message_id in esadecimale in submit_sm_resp ma in decimale nella ricevuta (o viceversa). Normalizzate entrambi in un'unica rappresentazione prima del confronto e preferite il TLV receipted_message_id.

Tutte le ricevute di consegna sono finali?

No. ENROUTE e ACCEPTD sono stati intermedi e alcune reti inviano notifiche intermedie. Chiudete un messaggio solo su uno stat finale come DELIVRD, EXPIRED, UNDELIV, REJECTD, DELETED o UNKNOWN.

Riferimenti

Specifiche della fonte

Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.

BNGestito dal team di ingegneri BroadNet·Servizi di messaggistica di livello carrier dal 2003
Mettilo sul filo

Realizzato con un vero binding SMPP e un'API REST.

Richiedi l'accesso di prova con chiavi di test reali: invia prima al tuo numero verificato, poi passa alla produzione in oltre 200 paesi una volta approvata l'identità del mittente e i percorsi.