Ako vypočítať pole SM Length v SMPP
V protokole SMPP pole sm_length
určuje dĺžku obsahu krátkej správy v bytoch, ktorý sa nachádza v poli short_message
PDU, ako sú submit_sm
, deliver_sm
a data_sm
.
Detaily poľa
- Názov poľa: sm_length
- Veľkosť: 1 bajt (nezáporné celé číslo)
- Rozsah: 0–254 (maximálne povolené v SMPP 3.4)
- Umiestnenie: Priamo pred pole
short_message
- Účel: Určuje počet bajtov v náplni
short_message
Kľúčové správanie
Hodnota sm_length
závisí od použitého kódovania:
Kódovanie | Znaky na SMS | Veľkosť v bytoch | Poznámky |
---|---|---|---|
GSM 7-bit | Až 160 | Až 140 | Zbalené bity; skutočná veľkosť v bytoch závisí od obsahu |
UCS2 | Až 70 | 2 × počet znakov | Každý znak má 2 bajty |
8-bit binárne | N/A | Až 140 | Surová dĺžka v bytoch |
Príklad: Správa v ASCII
Jednoduchá správa s predvoleným 7-bitovým kódovaním:
Text: "Hello" Kódovanie: GSM 7-bit Zbalené bajty (Hex): C8 32 9B FD 06 Dĺžka v bytoch: 5 sm_length: 5
Príklad: Správa kódovaná v UCS2
Unicode správa s kódovaním UCS2 (data_coding = 0x08):
Text: "Hi" UCS2 Hex: 0048 0069 Bajtové pole: 00 48 00 69 Dĺžka v bytoch: 4 sm_length: 4
Príklad PDU v SMPP (submit_sm)
0000003B // Dĺžka príkazu (59 bajtov) 00000004 // ID príkazu: submit_sm 00000000 // Stav príkazu 00000001 // Poradové číslo 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
Dôležité poznámky
sm_length
sa vzťahuje na dĺžku v bytoch, nie na počet znakov.- Ak je obsah správy rozdelený do viacerých častí (zreťazenie), každá časť má svoje vlastné
sm_length
. - Nezamieňajte
sm_length
s celkovou dĺžkou správy (dĺžka PDU).
Rozdelenie a zreťazenie správ
Keď správa prekročí maximálnu veľkosť náplne, je rozdelená na časti pomocou UDH (User Data Header). V takýchto prípadoch sm_length
zahŕňa aj UDH:
Príklad: UDH (6 bajtov) + 67 bajtov UCS2 = 73 sm_length = 73
Záver
Pole sm_length
je kritické v SMPP komunikácii, pretože definuje, koľko bajtov má SMSC prečítať pre skutočný obsah správy. Pochopenie toho, ako kódovanie ovplyvňuje toto pole, zaisťuje presné a úspešné doručenie správ.
Referencie
- Špecifikácia SMPP 3.4
- Znaková sada GSM 03.38
- Kódovanie Unicode UCS2
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field