Jak nakonfigurovat pole pro telefonní čísla v SMPP
SMPP (Short Message Peer-to-Peer) je protokol používaný telekomunikačními systémy pro výměnu SMS zpráv mezi SMSC (Short Message Service Centers) a ESME (External Short Messaging Entities). Klíčovou součástí protokolu je způsob, jakým kóduje telefonní čísla (zdrojové a cílové adresy) v SMPP PDU (Protocol Data Unit).
Parametry adresy v SMPP
Hlavní pole používaná k definování telefonního čísla v SMPP jsou:
- addr_ton (Type of Number)
- addr_npi (Numbering Plan Indicator)
- address_range nebo source_addr/destination_addr
Type of Number (TON)
Toto pole definuje formát čísla. Běžné hodnoty zahrnují:
| Hodnota | TON | Popis |
|---|---|---|
| 0 | Neznámý | Neznámý formát |
| 1 | Mezinárodní | Číslo obsahuje kód země |
| 2 | Národní | Místní formát čísla |
| 5 | Alfanumerický | Používá se pro jména odesílatelů jako "MojeFirma" |
Numbering Plan Indicator (NPI)
Toto pole určuje formát číslování. Běžné hodnoty:
| Hodnota | NPI | Popis |
|---|---|---|
| 0 | Neznámý | Neznámý formát |
| 1 | ISDN (E.164) | Standardní mezinárodní formát telefonního čísla |
| 3 | Data | Datová síť (X.121) |
Kódování adresy
Při kódování telefonního čísla v SMPP systém odešle číslo jako řetězec ukončený nulou v ASCII, doplněný o příslušné hodnoty TON a NPI.
Příklad:
Telefonní číslo: +14155552671 TON: 1 (Mezinárodní) NPI: 1 (ISDN/E.164) Zakódováno jako: 31 34 31 35 35 35 35 32 36 37 31 00 (ASCII "14155552671" + NULL)
Příklad SMPP PDU
Níže je příklad submit_sm PDU, který obsahuje cílové číslo:
0000003F // Délka příkazu (63 bajtů)
00000004 // ID příkazu (submit_sm)
00000000 // Stav příkazu
00000001 // Pořadové číslo
74657374 // service_type: "test"
01 // source_addr_ton: Mezinárodní
01 // source_addr_npi: ISDN
31323334 // source_addr: "1234" (ASCII)
00 // NULL terminator
01 // dest_addr_ton: Mezinárodní
01 // dest_addr_npi: ISDN
2B393138 // destination_addr: "+918123456789" (ASCII, bez +)
31323334
35363738
3900 // NULL terminator
00 // esm_class
00 // protocol_id
00 // priority_flag
00 // schedule_delivery_time (null)
00 // validity_period (null)
00 // registered_delivery
00 // replace_if_present_flag
00 // data_coding (default GSM)
00 // sm_default_msg_id
0D // sm_length (13)
48656C6C // Krátká zpráva ("Hello, World!")
6F2C2057
6F726C64
2100
Příklad alfanumerického odesílatele
Při použití alfanumerického jména odesílatele (běžné pro jednosměrné hromadné SMS):
Odesílatel: "MojeZnačka" TON: 5 (Alfanumerický) NPI: 0 (Neznámý nebo irelevantní) Zakódováno: ASCII řetězec "MojeZnačka" + NULL terminator
Důležité poznámky
- Alfanumerická ID odesílatele musí mít 11 nebo méně znaků.
- Alfanumerické adresy nejsou podporovány ve všech zemích.
- Vždy správně přiřaďte TON a NPI k formátu adresy, abyste předešli problémům s směrováním.
Závěr
Kódování čísel v SMPP je klíčové pro zajištění správného doručení zpráv. Nastavením správných hodnot TON, NPI a správným kódováním adresy v ASCII (ukončené nulou) mohou vývojáři zajistit kompatibilitu s SMSC a mobilními sítěmi.