Kako izračunati polje SMPP SM Length
V protokolu SMPP polje sm_length določa dolžino v bajtih vsebine kratkega sporočila, ki je vključena v polje short_message PDU-jev, kot so submit_sm, deliver_sm in data_sm.
Podrobnosti polja
- Ime polja: sm_length
- Velikost: 1 bajt (neznano število)
- Obseg: 0–254 (največ, kar dovoljuje SMPP 3.4)
- Lokacija: Neposredno pred poljem
short_message - Namen: Označuje število bajtov v nosilcu
short_message
Ključno vedenje
Vrednost sm_length je odvisna od uporabljenega kodiranja:
| Kodiranje | Znakov na SMS | Velikost v bajtih | Opombe |
|---|---|---|---|
| GSM 7-bit | Do 160 | Do 140 | Pakirani biti; dejanska velikost v bajtih je odvisna od vsebine |
| UCS2 | Do 70 | 2 × število znakov | Vsak znak je 2 bajta |
| 8-bitno binarno | N/A | Do 140 | Surova dolžina v bajtih |
Primer: Sporočilo v ASCII
Preprost sporočil z uporabo privzetega 7-bitnega kodiranja:
Besedilo: "Hello" Kodiranje: GSM 7-bit Pakirani bajti (Hex): C8 32 9B FD 06 Dolžina v bajtih: 5 sm_length: 5
Primer: Sporočilo kodirano z UCS2
Unicode sporočilo z uporabo kodiranja UCS2 (data_coding = 0x08):
Besedilo: "Hi" UCS2 Hex: 0048 0069 Bajtni niz: 00 48 00 69 Dolžina v bajtih: 4 sm_length: 4
Primer SMPP PDU (submit_sm)
0000003B // Dolžina ukaza (59 bajtov)
00000004 // ID ukaza: submit_sm
00000000 // Status ukaza
00000001 // Zaporedna številka
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" v UCS2
Pomembne opombe
sm_lengthse nanaša na dolžino v bajtih, ne na število znakov.- Če je vsebina sporočila razdeljena na več sporočil (združevanje), ima vsak del svoj
sm_length. - Ne zamenjujte
sm_lengths skupno dolžino sporočila (dolžina PDU).
Razdeljevanje in združevanje sporočil
Ko sporočilo presega največjo dovoljeno velikost nosilca, se razdeli na dele z uporabo UDH (User Data Header). V takih primerih sm_length vključuje tudi UDH:
Primer: UDH (6 bajtov) + 67 UCS2 bajtov = 73 sm_length = 73
Zaključek
Polje sm_length je ključnega pomena pri sporočilih SMPP, saj določa, koliko bajtov naj SMSC prebere za dejansko telo sporočila. Razumevanje, kako kodiranje vpliva na to polje, zagotavlja natančno in uspešno dostavo sporočil.
Reference
- Specifikacija SMPP 3.4
- Nabor znakov GSM 03.38
- Kodiranje Unicode UCS2