Kako primiti SMS koristeći SMPP API
Short Message Peer-to-Peer (SMPP) protokol je moćan, industrijski standardni protokol dizajniran za olakšavanje razmjene SMS poruka između External Short Message Entities (ESMEs) i Short Message Service Centers (SMSCs). Za programere i tvrtke koji koriste SMPP API s Ozeki SMS Gatewayom kao svojom primarnom platformom, razumijevanje niskonivo operacija protokola ključno je za izgradnju robusnih SMS rješenja. Ovaj članak pruža sveobuhvatan vodič o tome kako primiti SMS poruke koristeći SMPP API, fokusirajući se na interakcije na razini protokola i specifične Protocol Data Units (PDUs) uključene u postavljanje, održavanje i korištenje SMPP API klijentske veze s Ozeki SMS Gatewayom.
Uvod u SMPP API i Ozeki SMS Gateway
SMPP API se široko koristi u telekomunikacijskoj industriji zbog svoje učinkovitosti u rukovanju masovnim SMS porukama preko TCP/IP veza. Ozeki SMS Gateway, svestrani SMPP softver, služi i kao SMPP klijent i poslužitelj, što ga čini idealnom platformom za slanje i primanje SMS poruka. Implementacijom SMPP protokola (verzije 3.3 i 3.4, s podrškom za 5.0 u Ozeki 10 SMS Gatewayu), Ozeki omogućuje besprijekornu povezanost s SMSC-ovima, podržavajući aplikacije kao što su marketinške kampanje, dvofaktorska autentifikacija i sustavi obavijesti. Ovaj članak se fokusira na primanje SMS poruka, detaljno opisujući SMPP PDU-e potrebne za postavljanje veze, održavanje i primanje poruka.
Razumijevanje SMPP PDU-a
SMPP radi razmjenom Protocol Data Units (PDUs) između SMPP klijenta (npr. Ozeki SMS Gateway) i SMPP poslužitelja (npr. SMSC). Svaki PDU je strukturirana poruka koja nosi specifične upute ili podatke, kao što su autentifikacijski podaci, sadržaj SMS-a ili upiti o statusu veze. Da bi primio SMS poruke koristeći SMPP API, klijent mora uspostaviti vezu, održavati je i obraditi dolazne poruke. Ključni PDU-i uključeni su:
- bind_transceiver: Uspostavlja vezu za slanje i primanje SMS-a.
- enquire_link: Održava vezu provjeravanjem njenog statusa.
- deliver_sm: Dostavlja dolazne SMS poruke od SMSC-a klijentu.
- unbind: Prekida SMPP sesiju.
U nastavku ćemo detaljno istražiti svaki PDU, uključujući njihovu strukturu, konfiguraciju u Ozeki SMS Gatewayu i njihovu ulogu u primanju SMS poruka putem SMPP API-ja.
Postavljanje SMPP API klijentske veze
Za primanje SMS poruka, prvi korak je uspostava stabilne SMPP API klijentske veze s SMSC-om. Ozeki SMS Gateway pojednostavljuje ovaj proces svojim intuitivnim sučeljem, ali razumijevanje operacija na razini protokola ključno je za napredne korisnike.
1. Konfiguriranje SMPP klijenta u Ozeki SMS Gateway
Za postavljanje SMPP API klijentske veze u Ozeki SMS Gateway, slijedite ove korake:
- Prijava u Upravljačku konzolu: Pristupite web sučelju Ozeki SMS Gateway koristeći administratorski račun (zadano korisničko ime: "admin").
- Dodavanje nove veze: Idite na panel "Veze", kliknite "Dodaj novu vezu" i odaberite "SMPP klijent" iz odjeljka "IP SMS veze".
- Konfiguriranje SMPP postavki: Unesite sljedeće podatke, koje obično daje vaš SMS usluga davatelj:
- Naziv hosta: IP adresa ili naziv hosta SMSC-a (npr. "192.168.1.1").
- Broj porta: TCP/IP port za SMPP komunikaciju (zadano je 9500, ali provjerite kod svog davatelja).
- Korisničko ime (System ID): Vaš identifikator računa za SMSC.
- Lozinka: Lozinka povezana s System ID-om.
- SMPP verzija: Odaberite v3.4 za transceiver podršku (preporučeno za slanje i primanje).
- Vrsta sustava: Opcionalno, često "SMPP", kako je navedeno od strane davatelja.
- Adresa pošiljatelja: Zadani telefonski broj za odlazne SMS poruke (npr. "+1234567890").
- Raspon adresa: Opcionalno, koristi se za primanje poruka s više brojeva.
- Način povezivanja: Odaberite "Transceiver" kako biste omogućili i slanje i primanje SMS poruka preko jedne veze.
- Napredne postavke: Omogućite "Automatsko povezivanje pri pokretanju" za bezprobleman ponovni spoj i označite "Slanje keepalive paketa" za održavanje veze.
- Omogućavanje bilježenja: Na kartici "Napredno", omogućite "Bilježenje komunikacijskih događaja" za snimanje SMPP PDU-ova za otklanjanje grešaka.
- Spremanje i povezivanje: Kliknite "OK" za spremanje konfiguracije, zatim "Poveži" za pokretanje veze.
Ove postavke pripremaju Ozeki SMS Gateway za uspostavu SMPP API veze koristeći bind_transceiver PDU.
2. bind_transceiver PDU
bind_transceiver PDU je prvi PDU koji šalje SMPP klijent za autentifikaciju i uspostavu veze s SMSC-om. Omogućuje i slanje i primanje SMS poruka preko jedne TCP/IP veze, što ga čini idealnim za većinu SMPP API aplikacija.
Struktura bind_transceiver PDU
Duljina naredbe: 4 bajta (ukupna duljina PDU-a) ID naredbe: 0x00000009 (bind_transceiver) Status naredbe: 0x00000000 (postavljeno na 0 za zahtjeve) Broj sekvence: Jedinstveni identifikator za PDU System ID: Korisničko ime za autentifikaciju (npr. "smppuser") Lozinka: Lozinka za autentifikaciju (npr. "password123") Vrsta sustava: Opcionalno, često "SMPP" Verzija sučelja: SMPP verzija (npr. 0x34 za v3.4) Raspon adresa: Opcionalno, za primanje poruka s određenih brojeva
Primjer bind_transceiver PDU (heksadecimalno):
0000002F 00000009 00000000 00000001 736D70707573657200 70617373776F726431323300 534D505000 34 00
Objašnjenje:
- Duljina naredbe (0000002F): Ukupna duljina PDU-a (47 bajtova).
- ID naredbe (00000009): Identificira PDU kao bind_transceiver.
- Status naredbe (00000000): Postavljeno na 0 za zahtjev.
- Broj sekvence (00000001): Jedinstveni ID za praćenje PDU-a.
- System ID (736D70707573657200): ASCII za "smppuser" s null terminatorom.
- Lozinka (70617373776F726431323300): ASCII za "password123" s null terminatorom.
- Vrsta sustava (534D505000): ASCII za "SMPP" s null terminatorom.
- Verzija sučelja (34): Označava SMPP v3.4.
- Raspon adresa (00): Null, jer je opcionalno.
Nakon primanja bind_transceiver PDU-a, SMSC provjerava vjerodajnice. Ako je uspješno, odgovara s bind_transceiver_resp PDU-om sa statusom naredbe 0x00000000, što označava uspješnu vezu. Ozeki SMS Gateway bilježi ovu interakciju, koja se može pregledati u "Komunikacijskim događajima".
Održavanje SMPP API veze
Nakon uspostave veze, ona se mora održavati kako bi se osigurao kontinuirani primitak SMS poruka. SMPP protokol koristi enquire_link PDU za provjeru statusa veze i sprječavanje prekida zbog neaktivnosti.
enquire_link PDU
enquire_link PDU je lagana poruka koja se periodično šalje od SMPP klijenta SMSC-u kako bi se potvrdilo da je veza aktivna. Ovo je posebno važno za održavanje dugotrajnih veza, jer proxy poslužitelji ili SMSC-ovi mogu prekinuti neaktivne veze.
Struktura enquire_link PDU
Duljina naredbe: 0x00000010 (16 bajtova) ID naredbe: 0x00000015 (enquire_link) Status naredbe: 0x00000000 (postavljeno na 0 za zahtjeve) Broj sekvence: Jedinstveni identifikator za PDU
Primjer enquire_link PDU (heksadecimalno):
00000010 00000015 00000000 00000002
Objašnjenje:
- Duljina naredbe (00000010): Ukupna duljina (16 bajtova).
- ID naredbe (00000015): Identificira PDU kao enquire_link.
- Status naredbe (00000000): Postavljeno na 0 za zahtjev.
- Broj sekvence (00000002): Jedinstveni ID za praćenje PDU-a.
SMSC odgovara s enquire_link_resp PDU-om, potvrđujući status veze. U Ozeki SMS Gateway, omogućavanje opcije "Slanje keepalive paketa" na kartici "Komunikacija" osigurava da se enquire_link PDU-ovi automatski šalju u redovitim intervalima (npr. svakih 30 sekundi). Ova postavka je ključna za održavanje stabilne SMPP API veze, posebno prilikom povremenog primanja SMS poruka.
Primanje SMS poruka putem SMPP API-ja
Nakon što je veza uspostavljena i održana, SMPP API klijent može primati SMS poruke putem deliver_sm PDU-a. Ovaj PDU šalje SMSC klijentu kada je dostupna dolazna SMS poruka ili izvješće o isporuci.
deliver_sm PDU
deliver_sm PDU nosi sadržaj dolazne SMS poruke ili izvješća o isporuci. Za primanje SMS-a, PDU sadrži telefonski broj pošiljatelja, broj primatelja (virtualni broj dodijeljen od strane pružatelja usluge) i tekst poruke.
Struktura deliver_sm PDU-a
Duljina naredbe: Varijabilna (ovisno o duljini poruke) ID naredbe: 0x00000005 (deliver_sm) Status naredbe: 0x00000000 (postavljeno na 0 za zahtjeve) Broj sekvence: Jedinstveni identifikator za PDU Vrsta usluge: Opcionalno, često null TON izvorne adrese: Vrsta broja za pošiljatelja NPI izvorne adrese: Indikator plana numeracije za pošiljatelja Izvorna adresa: Telefonski broj pošiljatelja (npr., "+1234567890") TON odredišne adrese: Vrsta broja za primatelja NPI odredišne adrese: Indikator plana numeracije za primatelja Odredišna adresa: Telefonski broj primatelja (npr., virtualni broj) ESM klasa: Vrsta poruke (npr., 0x04 za SMS) Kodiranje podataka: Kodiranje znakova (npr., 0x00 za GSM 7-bitno) Kratka poruka: Tekst poruke (do 160 znakova za GSM)
Primjer deliver_sm PDU-a (heksadecimalno):
0000005F 00000005 00000000 00000003 00 01 01 2B3132333435363738393000 01 01 2B3938373635343332313000 00 00 00 00 00 48656C6C6F2C207468697320697320616E20534D5321
Objašnjenje:
- Duljina naredbe (0000005F): Ukupna duljina (95 bajtova).
- ID naredbe (00000005): Identificira PDU kao deliver_sm.
- Status naredbe (00000000): Postavljeno na 0 za zahtjev.
- Broj sekvence (00000003): Jedinstveni ID za praćenje PDU-a.
- Vrsta usluge (00): Null, jer je opcionalno.
- TON izvorne adrese (01): Međunarodni broj.
- NPI izvorne adrese (01): ISDN/telefonski plan numeracije.
- Izvorna adresa (2B3132333435363738393000): ASCII za "+1234567890".
- TON odredišne adrese (01): Međunarodni broj.
- NPI odredišne adrese (01): ISDN/telefonski plan numeracije.
- Odredišna adresa (2B3938373635343332313000): ASCII za "+9876543210".
- ESM klasa (00): Označava standardni SMS.
- Kodiranje podataka (00): GSM 7-bitno kodiranje.
- Kratka poruka (48656C6C6F2C207468697320697320616E20534D5321): ASCII za "Hello, this is an SMS!".
Nakon primanja deliver_sm PDU-a, Ozeki SMS Gateway obrađuje poruku i usmjerava je u konfiguriranu aplikaciju ili bazu podataka. Klijent mora odgovoriti s deliver_sm_resp PDU-om kako bi potvrdio primitak, osiguravajući pouzdanu isporuku. U Ozekiju, ovaj odgovor se automatski obrađuje, a poruka se bilježi u panelu "Poruke" ili pohranjuje u bazu podataka ako je konfigurirano.
Konfiguriranje Ozeki SMS Gatewaya za primanje SMS poruka
Kako biste osigurali da Ozeki SMS Gateway može primati SMS poruke:
- Postavljanje virtualnog broja: Surađujte s vašim pružateljem SMS usluga kako biste dodijelili virtualni broj (IMSI) za primanje SMS-a. Ovaj broj se navodi u polju "Raspon adresa" tijekom konfiguracije.
- Integracija baze podataka: Konfigurirajte Ozeki za pohranu dolaznih poruka u bazu podataka izmjenom SQL SELECT izraza u konfiguraciji "Korisnik baze podataka" (npr., "SELECT id, sender, receiver, msg, msgtype FROM ozekimessagein").
- Bilježenje: Omogućite bilježenje SMPP PDU-a kako biste pratili dolazne deliver_sm PDU-e za potrebe otklanjanja grešaka.
Nakon konfiguracije, dolazne SMS poruke se automatski usmjeravaju u navedenu aplikaciju ili bazu podataka, čineći Ozeki SMS Gateway robusnom platformom za primanje SMS-a putem SMPP API-ja.
Prekidanje SMPP API veze
Kada SMPP API sesija više nije potrebna, klijent šalje unbind PDU kako bi graciozno prekinuo vezu.
unbind PDU
unbind PDU signalizira SMSC-u da zatvori SMPP sesiju.
Struktura unbind PDU-a
Duljina naredbe: 0x00000010 (16 bajtova) ID naredbe: 0x00000006 (unbind) Status naredbe: 0x00000000 (postavljeno na 0 za zahtjeve) Broj sekvence: Jedinstveni identifikator za PDU
Primjer unbind PDU-a (heksadecimalno):
00000010 00000006 00000000 00000004
Objašnjenje:
- Duljina naredbe (00000010): Ukupna duljina (16 bajtova).
- ID naredbe (00000006): Identificira PDU kao unbind.
- Status naredbe (00000000): Postavljeno na 0 za zahtjev.
- Broj sekvence (00000004): Jedinstveni ID za praćenje PDU-a.
SMSC odgovara s unbind_resp PDU-om, potvrđujući prekid sesije. U Ozeki SMS Gatewayu, ovo možete pokrenuti klikom na "Prekini vezu" u panelu "Veze".
Najbolje prakse za korisnike SMPP API-ja
Kako biste optimizirali svoju implementaciju SMPP API-ja s Ozeki SMS Gatewayem za primanje SMS-a:
- Omogućite Keepalive pakete: Osigurajte da je opcija "Pošalji keepalive pakete" omogućena kako biste održali stabilnu vezu.
- Pratite zapisnike: Redovito provjeravajte zapisnike SMPP PDU-a kako biste otklonili probleme s bind_transceiver, enquire_link ili deliver_sm PDU-ima.
- Koristite transceiver mod: Preferirajte transceiver mod radi učinkovitosti, jer podržava i slanje i primanje preko jedne veze.
- Sigurne veze: Ako vaš pružatelj podržava, koristite SMPPS (SMPP preko SSL/TLS) za šifriranu komunikaciju.
- Obrada izvješća o isporuci: Konfigurirajte Ozeki za obradu deliver_sm PDU-a koji sadrže izvješća o isporuci kako biste pratili status poruke.
Primanje SMS poruka korištenjem SMPP API-ja s Ozeki SMS Gatewayom uključuje uspostavljanje veze s bind_transceiver PDU-om, održavanje veze s enquire_link PDU-ima i obradu dolaznih poruka putem deliver_sm PDU-a. Razumijevanjem ovih PDU-a i pravilnim konfiguriranjem Ozeki SMS Gatewaya, programeri mogu izgraditi pouzdane SMS aplikacije visokih performansi. Fleksibilnost SMPP API-ja i robusna implementacija Ozeki-ja čine ga izvrsnim izborom za tvrtke koje traže skalabilna SMS rješenja. Za dodatne pojedinosti, pogledajte dokumentaciju Ozeki SMS Gatewaya ili kontaktirajte svog pružatelja SMS usluga za specifične parametre konfiguracije.