SMPP-Lieferberichtsformat
SMPP-Lieferberichte werden vom smpp submit_sm-Anfrage übermittelt. Wenn der submit_sm vom SMPP-Server akzeptiert wird, gibt er eine submit_sm_resp-Antwort mit einer SMS-Referenz-ID zurück. Der Lieferbericht kommt zu einem späteren Zeitpunkt. Er enthält den Zeitpunkt der Zustellung und die SMS-Referenz-ID, die die SMS identifiziert. Das folgende Dokument erklärt den Inhalt eines SMPP-Lieferbericht-PDUs und gibt Ihnen ein Beispiel für einen Lieferbericht.
Was ist das SMPP-Lieferberichtsformat?
Ein SMPP-Lieferbericht wird als Standard-Textnachricht empfangen. Der Nachrichtentext hat ein spezielles Format, das verschiedene Felder über die ursprünglich übermittelte SMS enthält. Diese Felder können verwendet werden, um den Zustellungsstatus der SMS zu bestimmen.
Beispiel für einen Lieferbericht
Lieferbericht erhalten. +44251234567->+0000000 'Delivered; To: +44251234567; At: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 submit date:2210031207 done date:2210031207 stat:DELIVRD err: text:' Erfolgreiche Zustellung an admin@localhost gemeldet. Task-ID: cdfd66e1-880e-4ead-a559-7ca46d9ec669. Delivered; To: +44251234567; At: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 submit date:2210031207 done date:2210031207 stat:DELIVRD err: text:
Wie man einen SMPP-Lieferbericht empfängt
Um einen SMPP-Lieferbericht zu empfangen
- Verbinden Sie den SMPP-Client
- Binden Sie als Transceiver
- Senden Sie die SMS mit dem submit_sm-PDU
- Notieren Sie die SMS-ID der submit_sm_resp
- Warten Sie, bis die SMS beim Mobiltelefon ankommt
- Empfangen Sie den SMS-Lieferbericht-PDU
- Vergleichen Sie die SMS-ID mit der gesendeten Nachricht
- Notieren Sie den Zeitstempel der SMS-Zustellung
SMPP-Lieferberichtsparameter
SMPP unterstützt Zustellbestätigungen/-berichte (DLRs) für SMS-Nachrichten, damit Ihre Anwendung den Zustellungsstatus ermitteln kann.
Die Rückgabe einer Nachrichtenzustellbestätigung/-bericht (DLR) hängt vom Wert im registered_delivery-Feld der ursprünglich vom ESME an den MC in einer submit_sm-Operation gesendeten Nachricht ab. Dies kann für Nicht-Zustellungs- und Nur-Zustellungsszenarien konfiguriert werden, was dazu führen kann, dass die Bestätigung nicht zurückgegeben wird. Nachrichtenzustellbestätigungen werden in den deliver_sm- und data_sm-Operationen zurückgegeben.
Die folgenden Felder sind in den deliver_sm- und data_sm-Operationen relevant, wenn sie für die Übermittlung von Zustellbestätigungen verwendet werden.
- Quelladresse (d.h. source_addr_ton, source_addr_npi, source_addr) - Die Quelladresse wird von der Zieladresse der ursprünglichen Kurznachricht übernommen, die die Zustellbestätigung generiert hat. Die Bestätigung erscheint so, als ob sie vom Empfänger der ursprünglichen registrierten Nachricht stammt.
- Zieladresse (d.h. dest_addr_ton, dest_addr_npi, destination_addr) - Die Zieladresse wird von der Quelladresse der ursprünglichen Kurznachricht übernommen, die die Zustellbestätigung generiert hat. Die Bestätigung ist an das SME gerichtet, das ursprünglich die registrierte Nachricht gesendet hat.
- esm_class - Bit 2 des esm_class ist auf 1 gesetzt, um anzuzeigen, dass die Nachricht eine MC-Zustellbestätigung ist. Wenn Bit 5 gesetzt ist, handelt es sich um eine Zwischenbenachrichtigung.
- message_state TLV - Gibt den endgültigen Status der ursprünglichen Nachricht an. Siehe Nachrichtenstatus unten.
- network_error_code TLV - Siehe Fehlercodes unten.
- receipted_message_id TLV - Nachrichten-ID, die dem ESME vom MC im submit_sm_resp-PDU zurückgegeben wurde.
MC-Zustellbestätigung
Dieser Nachrichtentyp wird verwendet, um eine MC-Zustellbestätigung zu transportieren. Der MC generiert normalerweise eine neue Bestätigungsnachricht, die an den Absender der ersten Nachricht gerichtet ist, wenn er den endgültigen Status einer registrierten Nachricht erkennt. Die MC-Zustellbestätigung wird dann dem ESME in einer deliver_sm- oder data_sm-Operation übermittelt.
ESME-zu-MC: Setzen Sie die Bits 0 und 1 im registered_delivery-Feld einer submit_sm-Operation, um eine MC-Zustellbestätigung anzufordern.
Bit 1 | Bit 0 | Bedeutung |
---|---|---|
0 | 0 | keine Bestätigung |
0 | 1 | Bestätigung angefordert, wenn das endgültige Ergebnis eine erfolgreiche oder fehlgeschlagene Zustellung ist |
1 | 0 | Bestätigung angefordert, wenn das endgültige Ergebnis eine fehlgeschlagene Zustellung ist |
1 | 1 | Bestätigung angefordert, wenn das endgültige Ergebnis eine erfolgreiche Zustellung ist (nur SMPP v5) |
MC-zu-ESME: Bit 2 im esm_class-Feld eines deliver_sm zeigt an, dass die Bestätigung eine MC-Zustellbestätigung ist.
Zwischenbenachrichtigung
Eine Zwischenbenachrichtigung ist eine spezielle Form einer Nachricht, die der MC an einen ESME für eine mobile Terminierungsnachrichtenzustellung senden kann. Sie gibt einen Zwischenstatus eines Nachrichtenzustellversuchs an.
Typische Anwendungen sind die Berichterstattung über das Ergebnis von Zustellversuchen während der Wiederholungslebensdauer einer Nachricht innerhalb des MC. Dies könnte verwendet werden, um die verschiedenen Gründe zu verfolgen, warum eine Nachricht nicht an ihr Ziel geliefert wird, und dies zu nutzen, um die Verfügbarkeit des Teilnehmers zu profilieren.
Die Unterstützung für Zwischenbenachrichtigungsfunktionen ist spezifisch für die MC-Implementierung und den MC-Service-Provider und geht über den Rahmen dieser Spezifikation hinaus.
ESME-zu-MC: Setzen Sie Bit 4 im registered_delivery-Feld eines submit_sm-PDU, um eine Zwischenbenachrichtigung anzufordern.
MC-zu-ESME: Bit 5 im esm_class-Feld eines deliver_sm zeigt an, dass die Bestätigung eine Zwischenbenachrichtigung ist.
Quittung im short_message-FeldViele APIs vor Version 3.4 und Message Center, die v3.3 unterstützen, haben wahrscheinlich eine Möglichkeit, Quittungsinformationen im short_message-Feld zu übermitteln. Dies gilt für MC-Lieferquittungen und Zwischenbenachrichtigungen. Die genauen Formate dieser Informationen sind SMS-Gateway- und SMSC-Plattform-spezifisch und gehen über den Rahmen der Spezifikation hinaus. Dennoch zeigt das Folgende den typischerweise gewählten Ansatz:
id:123A456B sub:1 dlvrd:1 submit date:1702281424 done date:1702281424 stat:DELIVRD err:0 text:
Die Felder sind wie folgt spezifiziert:
Feld | Größe (Oktetten) | Beschreibung |
---|---|---|
id | Variabel | Die vom SMSC bei der ursprünglichen Übermittlung zugewiesene Nachrichten-ID. |
sub | 3 | Anzahl der ursprünglich übermittelten Kurznachrichten. Der Wert kann mit führenden Nullen aufgefüllt sein. |
dlvrd | 3 | Anzahl der zugestellten Kurznachrichten. Der Wert kann mit führenden Nullen aufgefüllt sein. |
submit date
|
10 |
Der Zeitpunkt und das Datum, zu dem die Kurznachricht übermittelt wurde. Im Falle einer ersetzten Nachricht ist dies das Datum, an dem die ursprüngliche Nachricht ersetzt wurde. Das Format ist wie folgt: YYMMDDhhmm wobei: |
done date
|
10 | Der Zeitpunkt und das Datum, zu dem die Kurznachricht ihren endgültigen Zustand erreicht hat. Das Format ist das gleiche wie für das submit date. |
stat | 7 | Der endgültige Status der Nachricht. Siehe Nachrichtenzustände unten. Der Statustext kann abgekürzt sein. |
err | 3 | Ein Netzwerk- oder SMSC-Fehlercode für die Nachricht. Siehe Fehlercodes unten. |
text | 20 | Unbenutztes Feld, das Ergebnis ist leer. |
Ozeki SMPP-Verbesserungen
Da wir eine sehr große Anzahl von SMPP-Verbindungen implementiert haben, sind wir auf die folgenden Probleme in verschiedenen Implementierungen gestoßen:
Erkenntnis 1:Der Wert des ID-Feldes im Lieferbericht (den wir in Ozeki als Submit Reference bezeichnen) unterscheidet sich oft von der ID, die wir vom SMS-Dienstleister erhalten. Der häufigste Unterschied ist, dass die ursprüngliche ID als Standard-Ganzzahl zurückgegeben wird und die ID im Lieferbericht als Hexadezimalzahl. Dies kann auch umgekehrt der Fall sein. Das Gute ist, dass in dieser Situation, wenn man sie zurückkonvertiert, die beiden Zahlen übereinstimmen, sodass die Lieferberichte übereinstimmen können. Die Ozeki-SMS-Implementierungen führen verschiedene Prüfungen durch und können die beschriebene Situation ordnungsgemäß handhaben.
Erkenntnis 2:Der Wert der Datumsfelder kommt oft in einem nicht standardmäßigen Format. Ozeki analysiert derzeit die Datumsfelder mit den folgenden Mustern. Sie können auch ein benutzerdefiniertes Datumsfeldmuster auf dem Konfigurationsformular der Software definieren.
- "yyMMddHHmm",
- "yyMMddHHmmss",
- "dd-MMM-yyHH:mm",
- "dd-MMM-yyHH:mm:ss",
- "dd-MMM-yy HH:mm",
- "dd-MMM-yy HH:mm:ss",
- "yyyyMMddHHmmss",
- "yyyyMMddHHmm",
- benutzerdefiniert
Nachrichtenstatus
Die folgende Liste zeigt die zulässigen Zustände für eine Kurznachricht. Der MC gibt den message_state-Wert als Teil des query_sm_resp, query_broadcast_sm_resp oder deliver_sm-Zustellungsbestätigungs-PDUs an das ESME zurück.
Zwischenzustände sind Zustände, die sich ändern können. Endzustände sind Zustände, die einen Endzustand für eine Nachricht darstellen.
Beispielsweise kann eine Nachricht im Wiederholungsmodus einen ENROUTE-Zustand zurückgeben. Zu einem späteren Zeitpunkt wird diese Nachricht entweder ablaufen oder zugestellt werden. Der Zustand wird dann zu EXPIRED oder DELIVERED fortschreiten. Somit befindet sich eine Nachricht im ENROUTE-Zustand in einem Zwischenzustand.
Eine Nachricht im DELIVERED- oder EXPIRED-Zustand kann nicht in einen anderen Zustand übergehen. Diese Zustände sind daher Endzustände.
Nachrichtenstatus | Wert | Typ |
---|---|---|
SCHEDULED | 0 | Zwischenzustand |
Die Nachricht ist geplant. Die Zustellung wurde noch nicht eingeleitet. Eine Nachricht mit geplantem Zustellungszeitpunkt kann diesen Zustand zurückgeben, wenn sie abgefragt wird. Dieser Wert wurde für SMPP v5.0 hinzugefügt. MCs, die frühere Versionen von SMPP v3.3 und SMPP v3.4 unterstützen, geben wahrscheinlich ENROUTE für geplante Nachrichten zurück. | ||
ENROUTE oder EN_ROUTE |
1 | Zwischenzustand |
Die Nachricht befindet sich im Zustand "unterwegs". Dies ist ein allgemeiner Zustand, der eine Nachricht als aktiv innerhalb des MC beschreibt. Die Nachricht kann sich im Wiederholungsmodus befinden oder an ein Mobilfunknetz zur Zustellung an das Mobilgerät gesendet worden sein. | ||
DELIVERED | 2 | Endzustand |
Nachricht wurde an den Empfänger zugestellt. Die Nachricht wurde an den Empfänger zugestellt. Es erfolgen keine weiteren Zustellversuche. | ||
EXPIRED | 3 | Endzustand |
Die Gültigkeitsdauer der Nachricht ist abgelaufen. Die Nachricht konnte innerhalb ihrer Gültigkeitsdauer und/oder Wiederholungsperiode nicht zugestellt werden. Es werden keine weiteren Zustellversuche unternommen. | ||
DELETED | 4 | Endzustand |
Nachricht wurde gelöscht. Die Nachricht wurde im MC storniert oder gelöscht. Es erfolgen keine weiteren Zustellversuche. | ||
UNDELIVERABLE | 5 | Endzustand |
Nachricht ist nicht zustellbar. Die Nachricht ist auf einen Zustellungsfehler gestoßen und wird als dauerhaft nicht zustellbar eingestuft. Es werden keine weiteren Zustellversuche unternommen. Bestimmte Netzwerk- oder MC-interne Fehler führen zur dauerhaften Nichtzustellung einer Nachricht. Beispiele für solche Fehler wären ein unbekannter Teilnehmer oder ein Netzwerkfehler, der darauf hinweist, dass das angegebene Zielmobilgerät keinen SMS-Dienst erhalten kann oder SMS nicht unterstützt. |