SMPP-PDU-Decoder.
Fügen Sie den Hex-Wert eines SMPP-v3.4-PDU ein, um dessen 16-Byte-Header zu dekodieren — command_length, command_id (mit Namen), command_status und sequence_number — und das verpflichtende Body-Feldlayout für submit_sm und deliver_sm zu sehen. Nichts verlässt Ihr Gerät.
ESME_ROK — No error
Nur-Header-PDU — kein Body (typisch für enquire_link, unbind und die meisten _resp-Bestätigungen).
Kurz gesagt
Was ist ein SMPP-PDU?
Ein PDU (Protocol Data Unit) ist eine einzelne SMPP-Nachricht auf der Leitung. Jedes PDU — ein Bind, ein submit_sm, ein Zustellbericht, ein enquire_link — beginnt mit demselben 16-Byte-Header aus vier 32-Bit-Big-Endian-Ganzzahlen: command_length (die Gesamtbytelänge einschließlich Header), command_id (welche Operation es ist), command_status (das Ergebnis, das bei einer erfolgreichen Antwort 0 / ESME_ROK ist) und sequence_number (dient dem Abgleich einer Antwort mit ihrer Anfrage). Etwaige Body-Felder folgen dem Header.
Das 16-Byte-Header-Layout
| Bytes | Feld | Bedeutung |
|---|---|---|
| 0–3 | command_length | Gesamtlänge des PDU in Oktetten, Header eingeschlossen. |
| 4–7 | command_id | Identifiziert die Operation (z. B. 0x00000004 = submit_sm). |
| 8–11 | command_status | Ergebniscode; 0 = ESME_ROK. Nur bei Antworten bedeutsam. |
| 12–15 | sequence_number | Verknüpft eine Anfrage mit ihrer Antwort. |
submit_sm-/deliver_sm-Body-Felder
Nach dem Header trägt ein submit_sm oder deliver_sm seine verpflichtenden Felder in fester Reihenfolge, optional gefolgt von TLV-Parametern (optional). Dieses Tool listet die Reihenfolge auf; es parst die variabel langen C-Octet-Strings nicht vollständig, da deren Grenzen von Null-Terminierungen und dem sm_length-Feld abhängen.
| Feld | Typ | Bedeutung |
|---|---|---|
| service_type | C-Octet String | Gibt den SMS-Anwendungsdienst an (null = Standard). |
| source_addr_ton | Integer (1) | Nummerntyp des Absenders. |
| source_addr_npi | Integer (1) | Nummerierungsplan-Indikator des Absenders. |
| source_addr | C-Octet String | Adresse des Nachrichtenurhebers. |
| dest_addr_ton | Integer (1) | Nummerntyp des Empfängers. |
| dest_addr_npi | Integer (1) | Nummerierungsplan-Indikator des Empfängers. |
| destination_addr | C-Octet String | Ziel-MSISDN / Kurzwahl. |
| esm_class | Integer (1) | Nachrichtenmodus & -typ (z. B. 0x04 = Zustellbericht). |
| protocol_id | Integer (1) | Protokollkennung (netzwerkspezifisch). |
| priority_flag | Integer (1) | Prioritätsstufe der Nachricht. |
| schedule_delivery_time | C-Octet String | Geplante Zustellzeit (null = sofort). |
| validity_period | C-Octet String | Gültigkeitsdauer der Nachricht (null = Standard). |
| registered_delivery | Integer (1) | Ob ein Zustellbericht (DLR) angefordert wird. |
| replace_if_present_flag | Integer (1) | Eine vorhandene Nachricht ersetzen, falls vorhanden. |
| data_coding | Integer (1) | Kodierungsschema (0 = GSM-7, 8 = UCS-2). |
| sm_default_msg_id | Integer (1) | Vordefinierte Nachrichtenkennung. |
| sm_length | Integer (1) | Länge des short_message-Felds in Oktetten. |
| short_message | Octet String | Die Nachrichten-Payload (bis zu 254 Oktette). |
Häufig gestellte Fragen
Welche vier Felder enthält der SMPP-Header?
Jedes SMPP-PDU beginnt mit einem 16-Byte-Header aus vier 32-Bit-Big-Endian-Ganzzahlen: command_length (Gesamt-PDU-Länge in Oktetten einschließlich Header), command_id (die Operation, z. B. 0x00000004 für submit_sm), command_status (der Ergebniscode, 0 = ESME_ROK) und sequence_number (verknüpft eine Antwort mit ihrer ursprünglichen Anfrage).
Warum ist command_status bei meinen Anfragen meist 0?
command_status ist nur bei Antwort- und generic_nack-PDUs bedeutsam. Bei Anfrage-PDUs (submit_sm, bind, enquire_link) ist es reserviert und sollte auf 0 gesetzt werden. Ein Wert ungleich null bei einem _resp weist auf einen Fehler hin — 0x00000058 ist beispielsweise ESME_RTHROTTLED.
Sind SMPP-Ganzzahlen Big-Endian?
Ja. SMPP kodiert mehr-oktettige Ganzzahlen in Netzwerk-Byte-Reihenfolge (Big-Endian, höchstwertiges Byte zuerst). Dieser Decoder liest jedes 4-Byte-Header-Feld als vorzeichenlose 32-Bit-Big-Endian-Ganzzahl.
Dekodiert dieses Tool den Nachrichtentext?
Es dekodiert den festen 16-Byte-Header und listet die Body-Feldreihenfolge für submit_sm und deliver_sm auf, parst aber den variabel langen Body nicht in Einzelwerte. C-Octet-Strings sind null-terminiert, und die short_message-Länge wird in sm_length geführt — eine vollständige Body-Analyse hängt daher von diesen Grenzen ab; dieses Tool beschränkt sich auf das standardbasierte Header-Layout.
Wo kann ich einen unbekannten command_status nachschlagen?
Nutzen Sie die SMPP-Fehlercode-Referenz, die jeden command_status-Wert von SMPP v3.4 nach Hex- und symbolischem Namen mit einer klaren Bedeutung sowie der wahrscheinlichen Ursache und Behebung auflistet.
Benötigen Sie einen echten SMPP-Bind?
BroadNet bietet direkte SMPP-3.4-Binds neben einer REST-API und Zustell-Webhooks in 200+ Ländern. Sprechen Sie mit unserem Team über Durchsatz und Routing.