Kako izračunati SMPP SM Length polje
U SMPP protokolu, polje sm_length određuje duljinu u bajtima sadržaja kratke poruke koji se nalazi u polju short_message PDU-ova kao što su submit_sm, deliver_sm i data_sm.
Detalji polja
- Naziv polja: sm_length
- Veličina: 1 bajt (neoznačeni cijeli broj)
- Raspon: 0–254 (maksimalno dopušteno u SMPP 3.4)
- Lokacija: Neposredno ispred polja
short_message - Svrha: Označava broj bajtova u teretu
short_message
Ključno ponašanje
Vrijednost sm_length ovisi o korištenom kodiranju:
| Kodiranje | Znakova po SMS-u | Veličina u bajtovima | Napomene |
|---|---|---|---|
| GSM 7-bit | Do 160 | Do 140 | Pakirani bitovi; stvarna veličina u bajtovima ovisi o sadržaju |
| UCS2 | Do 70 | 2 × broj znakova | Svaki znak je 2 bajta |
| 8-bitni binarni | N/A | Do 140 | Sirova duljina u bajtovima |
Primjer: ASCII poruka
Jednostavna poruka koristeći zadano 7-bitno kodiranje:
Tekst: "Hello" Kodiranje: GSM 7-bit Pakirani bajtovi (Hex): C8 32 9B FD 06 Duljina u bajtovima: 5 sm_length: 5
Primjer: UCS2 kodirana poruka
Unicode poruka koristeći UCS2 kodiranje (data_coding = 0x08):
Tekst: "Hi" UCS2 Hex: 0048 0069 Bajtni niz: 00 48 00 69 Duljina u bajtovima: 4 sm_length: 4
Primjer SMPP PDU-a (submit_sm)
0000003B // Duljina naredbe (59 bajtova)
00000004 // ID naredbe: submit_sm
00000000 // Status naredbe
00000001 // Redni broj
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" u UCS2
Važne napomene
sm_lengthse odnosi na duljinu u bajtovima, a ne na broj znakova.- Ako je sadržaj poruke podijeljen na više poruka (spajanje), svaki dio ima svoj
sm_length. - Ne brkajte
sm_lengths ukupnom duljinom poruke (PDU duljina).
Dijeljenje i spajanje poruka
Kada poruka premašuje maksimalnu veličinu tereta, dijeli se na dijelove koristeći UDH (User Data Header). sm_length u takvim slučajevima uključuje i UDH:
Primjer: UDH (6 bajtova) + 67 UCS2 bajtova = 73 sm_length = 73
Zaključak
Polje sm_length je ključno u SMPP porukama jer definira koliko bajtova SMSC treba pročitati za stvarno tijelo poruke. Razumijevanje kako kodiranje utječe na ovo polje osigurava točnu i uspješnu isporuku poruka.
Reference
- SMPP 3.4 Specifikacija
- GSM 03.38 Skup znakova
- Unicode UCS2 Kodiranje