Az SMPP SM Length mező kiszámítása
Az SMPP protokollban a sm_length mező a short_message mezőben található rövid üzenet tartalmának hosszát adja meg bájtban, olyan PDU-kban, mint a submit_sm, deliver_sm és data_sm.
Mező részletei
- Mező neve: sm_length
- Méret: 1 bájt (előjel nélküli egész szám)
- Tartomány: 0–254 (az SMPP 3.4 által megengedett maximum)
- Hely: Közvetlenül a
short_messagemező előtt - Cél: A
short_messageadattartalom bájtjainak számát jelzi
Kulcsfontosságú viselkedés
A sm_length értéke a használt kódolástól függ:
| Kódolás | Karakterek száma SMS-enként | Bájt méret | Megjegyzések |
|---|---|---|---|
| GSM 7-bit | Legfeljebb 160 | Legfeljebb 140 | Csomagolt bitek; a tényleges bájtméret a tartalomtól függ |
| UCS2 | Legfeljebb 70 | 2 × a karakterek száma | Minden karakter 2 bájt |
| 8-bit bináris | N/A | Legfeljebb 140 | Nyers bájthossz |
Példa: ASCII üzenet
Egy egyszerű üzenet alapértelmezett 7 bites kódolással:
Szöveg: "Hello" Kódolás: GSM 7-bit Csomagolt bájtok (Hex): C8 32 9B FD 06 Bájthossz: 5 sm_length: 5
Példa: UCS2 kódolt üzenet
Egy Unicode üzenet UCS2 kódolással (data_coding = 0x08):
Szöveg: "Hi" UCS2 Hex: 0048 0069 Bájt tömb: 00 48 00 69 Bájthossz: 4 sm_length: 4
SMPP PDU példa (submit_sm)
0000003B // Parancs hossza (59 bájt)
00000004 // Parancs azonosító: submit_sm
00000000 // Parancs állapot
00000001 // Sorszám
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" UCS2-ben
Fontos megjegyzések
- A
sm_lengtha bájthosszra utal, nem a karakterek számára. - Ha az üzenet tartalma több üzenetre van felosztva (összefűzés), minden résznek saját
sm_lengthértéke van. - Ne keverjük össze a
sm_lengthértékét a teljes üzenet hosszával (PDU hossz).
Üzenet felosztás és összefűzés
Ha egy üzenet meghaladja a maximális adattartalom méretét, akkor UDH (User Data Header) segítségével részekre osztják. Az ilyen esetekben a sm_length magában foglalja az UDH-t is:
Példa: UDH (6 bájt) + 67 UCS2 bájt = 73 sm_length = 73
Összegzés
A sm_length mező kritikus fontosságú az SMPP üzenetküldésben, mert meghatározza, hogy az SMSC hány bájtot olvasson az üzenet törzséhez. A kódolás hatásának megértése biztosítja a pontos és sikeres üzenetkézbesítést.
Hivatkozások
- SMPP 3.4 specifikáció
- GSM 03.38 karakterkészlet
- Unicode UCS2 kódolás