Berechnung des SMPP SM Length-Felds
Im SMPP-Protokoll gibt das Feld sm_length
die Länge des Kurznachrichteninhalts in Bytes an, der im Feld short_message
von PDUs wie submit_sm
, deliver_sm
und data_sm
enthalten ist.
Felddetails
- Feldname: sm_length
- Größe: 1 Byte (vorzeichenlose Ganzzahl)
- Bereich: 0–254 (maximal erlaubt durch SMPP 3.4)
- Position: Direkt vor dem Feld
short_message
- Zweck: Gibt die Anzahl der Bytes in der
short_message
-Nutzlast an
Wichtiges Verhalten
Der Wert von sm_length
hängt von der verwendeten Kodierung ab:
Kodierung | Zeichen pro SMS | Byte-Größe | Hinweise |
---|---|---|---|
GSM 7-bit | Bis zu 160 | Bis zu 140 | Gepackte Bits; tatsächliche Byte-Größe hängt vom Inhalt ab |
UCS2 | Bis zu 70 | 2 × Anzahl der Zeichen | Jedes Zeichen ist 2 Bytes |
8-bit binär | N/A | Bis zu 140 | Roh-Byte-Länge |
Beispiel: ASCII-Nachricht
Eine einfache Nachricht mit Standard-7-bit-Kodierung:
Text: "Hello" Kodierung: GSM 7-bit Gepackte Bytes (Hex): C8 32 9B FD 06 Byte-Länge: 5 sm_length: 5
Beispiel: UCS2-kodierte Nachricht
Eine Unicode-Nachricht mit UCS2-Kodierung (data_coding = 0x08):
Text: "Hi" UCS2 Hex: 0048 0069 Byte-Array: 00 48 00 69 Byte-Länge: 4 sm_length: 4
SMPP PDU-Beispiel (submit_sm)
0000003B // Befehlslänge (59 Bytes) 00000004 // Befehls-ID: submit_sm 00000000 // Befehlsstatus 00000001 // Sequenznummer 00 // service_type 01 // source_addr_ton 01 // source_addr_npi 31323334 // source_addr ("1234") 00 01 // dest_addr_ton 01 // dest_addr_npi 35363738 // destination_addr ("5678") 00 00 // esm_class 00 // protocol_id 00 // priority_flag 00 // schedule_delivery_time 00 // validity_period 00 // registered_delivery 00 // replace_if_present_flag 08 // data_coding: UCS2 00 // sm_default_msg_id 04 // sm_length: 4 00480069 // short_message: "Hi" in UCS2
Wichtige Hinweise
sm_length
bezieht sich auf die Byte-Länge, nicht auf die Zeichenanzahl.- Wenn der Nachrichteninhalt über mehrere Nachrichten aufgeteilt wird (Verkettung), hat jeder Teil seine eigene
sm_length
. - Verwechseln Sie
sm_length
nicht mit der Gesamtlänge der Nachricht (PDU-Länge).
Nachrichtenteilung & Verkettung
Wenn eine Nachricht die maximale Nutzlastgröße überschreitet, wird sie mithilfe eines UDH (User Data Header) in Teile aufgeteilt. Die sm_length
beinhaltet in solchen Fällen auch den UDH:
Beispiel: UDH (6 Bytes) + 67 UCS2 Bytes = 73 sm_length = 73
Fazit
Das Feld sm_length
ist entscheidend für die SMPP-Nachrichtenübermittlung, da es definiert, wie viele Bytes die SMSC für den eigentlichen Nachrichtenkörper lesen soll. Das Verständnis, wie die Kodierung dieses Feld beeinflusst, gewährleistet eine genaue und erfolgreiche Nachrichtenübermittlung.
Referenzen
- SMPP 3.4 Spezifikation
- GSM 03.38 Zeichensatz
- Unicode UCS2-Kodierung
More information
- Wie man das SMPP Service Typ Feld konfiguriert
- Wie man die SMPP Telefonnummer Felder konfiguriert
- Wie man das SMPP ESM Class Feld konfiguriert
- Wie man das SMPP PID Feld konfiguriert
- Wie man das SMPP Prioritätsfeld konfiguriert
- Wie man das SMPP Geplante Zeit Feld konfiguriert
- Wie man das SMPP Gültigkeitsdauer Feld konfiguriert
- Wie man das SMPP Registrierte Zustellung Feld konfiguriert
- Wie man das SMPP Ersetzen falls vorhanden Feld konfiguriert
- Wie man das sm_default_msg_id Feld konfiguriert
- Wie man das SMPP DCS Feld konfiguriert
- Wie man das SMPP SM Länge Feld berechnet
- Wie man Daten in das SMPP SM Feld einfügt