BroadNet
SMPPOperationen

SMPP-Zustellberichte (DLR): Format

Aktualisiert am 2 Min. LesezeitStandardsbasiert
Direkte Antwort

Ein Zustellbericht (DLR) ist ein deliver_sm, dessen esm_class ihn als Bericht kennzeichnet. Die short_message trägt einen Text mit festem Format — id, sub, dlvrd, submit date, done date, stat, err, Text — definiert in SMPP v3.4 Appendix B. Das Feld stat (DELIVRD, EXPIRED, UNDELIV, REJECTD …) ist der Endstatus der Nachricht.

DiagrammEine SMPP-Sitzung zwischen Ihrer Plattform und BroadNet
Ihre Plattform (ESME)
BroadNet SMSC
Eine dauerhafte TCP/TLS-Verbindung
  1. bind_transceiverSitzung öffnen und authentifizieren
  2. bind_transceiver_respSitzung akzeptiert
  3. submit_smNachricht senden
  4. submit_sm_respAkzeptiert, Nachrichten-ID zurückgegeben
  5. deliver_smZustellungsbericht oder eingehende Nachricht
  6. deliver_sm_respBestätigt
  7. enquire_linkKeepalive im Leerlauf
§01

Der Berichtstext gemäß Appendix B

Wenn das SMSC das Ergebnis einer Nachricht meldet, sendet es ein deliver_sm mit gesetztem Bericht-Bit in esm_class (0x04) und legt einen strukturierten Text-String in short_message ab. Das Format ist in Appendix B der v3.4-Spezifikation definiert. Jedes Feld ist ein Schlüssel gefolgt von einem Wert; das Feld id verknüpft den Bericht mit der message_id aus Ihrem submit_sm_resp.

Ein zugestellter Bericht (Inhalt von 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

Feld für Feld

Der Bericht ist kompakt, aber jedes Feld zählt für die Abstimmung. Datumsangaben verwenden das Format YYMMDDhhmm. sub und dlvrd zählen eingereichte und zugestellte Segmente. stat ist der siebenstellige Endzustand. err ist ein netz-/SMSC-spezifischer Fehlercode (000 bei Erfolg). Text sind die ersten 20 Zeichen der ursprünglichen Nachricht.

Zustellbericht-Felder (Appendix B)
FeldBedeutung
idSMSC message_id des ursprünglichen submit_sm
subAnzahl der übermittelten Kurznachrichten (Segmente)
dlvrdAnzahl der zugestellten Kurznachrichten
ÜbermittlungsdatumZeitpunkt der Nachrichtenübermittlung (YYMMDDhhmm)
AbschlussdatumZeitpunkt, zu dem die Nachricht ihren Endstatus erreichte (YYMMDDhhmm)
statEndgültiger Nachrichtenstatus – 7-Zeichen-Schlüsselwort (siehe unten)
errNetzwerk-/SMSC-spezifischer Fehlercode (000 = keiner)
TextDie ersten 20 Zeichen der Originalnachricht
§03

stat-Schlüsselwörter und message_state-Nummern

Das stat-Schlüsselwort ist der menschenlesbare Endstatus; das message_state-TLV (0x0427) trägt dieselbe Information als Zahl. Behandeln Sie DELIVRD als den einzigen eindeutigen Erfolg; EXPIRED, UNDELIV, REJECTD, DELETED und UNKNOWN sind endgültige Fehlschläge. ACCEPTD und ENROUTE sind nicht endgültig und sollten eine Nachricht nicht abschließen.

stat-Schlüsselwörter ↔ message_state
statmessage_stateFinal?Bedeutung
ENROUTE1NoUnterwegs
DELIVRD2JaAn Mobiltelefon zugestellt
EXPIRED3JaGültigkeitszeitraum abgelaufen
DELETED4JaNachricht gelöscht
UNDELIV5JaNicht zustellbar
ACCEPTD6NoAkzeptiert / manuell gelesen
UNKNOWN7JaZustand unbekannt
REJECTD8JaVom Netz abgelehnt
§04

Sicheres Parsen

Parsen Sie den Bericht aus der short_message des deliver_sm, korrelieren Sie aber über das receipted_message_id-TLV (0x001E) statt nur über den id-Text, und normalisieren Sie Hex- gegenüber Dezimal-ID-Formaten. Unterscheiden Sie Zwischenberichte (esm_class-Bit für Zwischenbenachrichtigung) von Endzuständen und bilden Sie den err-Code auf eine normalisierte Taxonomie ab — abwesender Teilnehmer, Endgerät belegt, als Spam blockiert, ungültige Nummer — da rohe err-Werte je Route variieren. Antworten Sie stets mit deliver_sm_resp.

Häufig gestellte Fragen

Häufig gestellte Fragen

Was bedeutet stat:DELIVRD?

DELIVRD ist der Endstatus, der bedeutet, dass die Nachricht das Endgerät des Empfängers erreicht hat. Er entspricht message_state 2 und ist der einzige stat-Wert, der eindeutig Erfolg darstellt.

Wo in der PDU steht der Zustellbericht-Text?

Im Feld short_message eines deliver_sm, dessen esm_class das Zustellbericht-Bit (0x04) gesetzt hat. Der Text folgt dem Format aus Appendix B: id, sub, dlvrd, submit date, done date, stat, err, Text.

Was ist das err-Feld in einem DLR?

err ist ein netz- oder SMSC-spezifischer Fehlercode, der den Grund einer Nichtzustellung angibt (000 bedeutet keiner). Da die Werte je Route unterschiedlich sind, bilden Sie sie für eine einheitliche Qualitätsberichterstattung auf eine normalisierte interne Taxonomie ab.

Warum stimmt meine DLR-id nicht mit meiner submit_sm_resp-message_id überein?

Meist eine Formatabweichung: Manche SMSCs geben die message_id im submit_sm_resp hexadezimal, im Bericht aber dezimal zurück (oder umgekehrt). Normalisieren Sie beide auf eine Darstellung, bevor Sie vergleichen, und bevorzugen Sie das receipted_message_id-TLV.

Sind alle Zustellberichte endgültig?

Nein. ENROUTE und ACCEPTD sind Zwischenzustände, und manche Netze senden Zwischenbenachrichtigungen. Schließen Sie eine Nachricht nur bei einem endgültigen stat wie DELIVRD, EXPIRED, UNDELIV, REJECTD, DELETED oder UNKNOWN ab.

Referenzen

Quellenspezifikationen

Diese Seite basiert auf den veröffentlichten Standards. (Wird in einem neuen Tab geöffnet.)

BNWird vom BroadNet -Entwicklungsteam betreut.·Messaging in Carrier-Qualität seit 2003
Hänge es an den Draht

Entwicklung mit echtem SMPP Binding und REST-API.

Fordern Sie Testzugriff mit echten Testschlüsseln an: Senden Sie zunächst an Ihre eigene verifizierte Nummer und gehen Sie dann in über 200 Ländern zum Produktivbetrieb über, sobald Ihre Absenderidentität und die Routen genehmigt wurden.