Kako primiti SMPP izvješća o isporuci putem SMPP API-ja

Short Message Peer-to-Peer (SMPP) protokol je temelj moderne SMS komunikacije, omogućujući External Short Message Entities (ESMEs) razmjenu poruka i izvješća o isporuci sa Short Message Service Centers (SMSCs). Za programere koji koriste SMPP API s Ozeki SMS Gateway-om, razumijevanje kako primiti izvješća o isporuci ključno je za praćenje statusa poslanih SMS poruka. Ovaj članak pruža sveobuhvatan vodič o primanju SMPP izvješća o isporuci na razini protokola, fokusirajući se na potrebne SMPP Protocol Data Units (PDUs) za postavljanje veze, održavanje i primanje izvješća o isporuci koristeći Ozeki SMS Gateway kao primarnu SMPP API serversku platformu.

Uvod u SMPP izvješća o isporuci i Ozeki SMS Gateway

SMPP izvješća o isporuci su obavijesti koje šalje SMSC kako bi obavijestio ESME o statusu prethodno poslanog SMS-a, kao što je je li isporučen, nije uspio ili je odbijen. Ova izvješća su ključna za aplikacije koje zahtijevaju potvrdu isporuke poruke, kao što su transakcijske obavijesti ili marketinške kampanje. Ozeki SMS Gateway, robusni SMPP softver koji podržava verzije 3.3, 3.4 i 5.0, pojednostavljuje proces rukovanja SMPP izvješćima o isporuci kroz svoje intuitivno sučelje i moćne opcije konfiguracije. Ovaj članak detaljno opisuje SMPP PDU-e uključene u postavljanje veze SMPP API klijenta, njegovo održavanje i primanje izvješća o isporuci, s praktičnim uputama za korisnike Ozeki SMS Gateway-a.

Razumijevanje SMPP PDU-a za izvješća o isporuci

SMPP protokol oslanja se na Protocol Data Units (PDUs) za upravljanje komunikacijom između SMPP klijenta (npr. Ozeki SMS Gateway) i SMSC-a. Da bi primio izvješća o isporuci, klijent mora uspostaviti vezu, održavati je i obraditi dolazna izvješća o isporuci. Ključni PDU-i uključeni su:

  • bind_transceiver: Uspostavlja vezu za slanje i primanje SMS-a i izvješća o isporuci.
  • enquire_link: Održava vezu kako bi osigurao kontinuirano primanje izvješća o isporuci.
  • deliver_sm: Isporučuje dolazna izvješća o isporuci (i SMS poruke) od SMSC-a klijentu.
  • unbind: Prekida SMPP sesiju.

U nastavku istražujemo svaki PDU, njihovu strukturu i ulogu u primanju SMPP izvješća o isporuci koristeći SMPP API s Ozeki SMS Gateway-om.

Postavljanje SMPP API klijentske veze

Primanje SMPP izvješća o isporuci zahtijeva stabilnu SMPP API klijentsku vezu s SMSC-om. Ozeki SMS Gateway pojednostavljuje ovaj proces, ali razumijevanje operacija na razini protokola ključno je za napredne korisnike i rješavanje problema.

1. Konfiguriranje SMPP klijenta u Ozeki SMS Gatewayu

Za postavljanje SMPP API klijentske veze u Ozeki SMS Gatewayu za primanje izvješća o isporuci, slijedite ove korake:

  1. Pristup upravljačkoj konzoli: Prijavite se u web sučelje Ozeki SMS Gatewaya koristeći administratorski račun (zadano korisničko ime: "admin").
  2. Stvaranje nove veze: U panelu "Veze", kliknite "Dodaj novu vezu" i odaberite "SMPP klijent" iz odjeljka "IP SMS veze".
  3. Unos SMPP postavki: Navedite sljedeće detalje, koje obično daje vaš pružatelj SMS usluga:
    • Naziv hosta: IP adresa ili naziv hosta SMSC-a (npr. "192.168.1.1").
    • Broj porta: TCP/IP port za SMPP komunikaciju (zadani je 9500, provjerite kod pružatelja).
    • Korisničko ime (ID sustava): Identifikator vašeg SMSC računa (npr. "smppuser").
    • Lozinka: Lozinka za ID sustava (npr. "password123").
    • SMPP verzija: Odaberite v3.4 za podršku transceivera, što je optimalno za slanje i primanje.
    • Vrsta sustava: Opcionalno, često "SMPP", kako je navedeno od strane pružatelja.
    • Adresa pošiljatelja: Zadani telefonski broj za odlazne SMS poruke (npr. "+1234567890").
    • Raspon adresa: Opcionalno, koristi se za primanje poruka ili izvješća za određene brojeve.
  4. Način povezivanja: Odaberite "Transceiver" kako biste omogućili i slanje SMS poruka i primanje izvješća o isporuci preko jedne veze.
  5. Omogućavanje izvješća o isporuci: Na kartici "Napredno", označite "Zahtijevaj izvješće o isporuci" kako biste osigurali da SMSC šalje izvješća o isporuci za poslane poruke.
  6. Postavke održavanja veze: Omogućite "Šalji keepalive pakete" kako biste održali vezu za kontinuirano primanje izvješća.
  7. Omogućavanje bilježenja: Na kartici "Napredno", omogućite "Bilježi događaje komunikacije" kako biste snimili SMPP PDU-e za otklanjanje grešaka.
  8. Spremanje i povezivanje: Kliknite "OK" za spremanje, zatim "Poveži" za pokretanje SMPP API veze.

Ove postavke pripremaju Ozeki SMS Gateway za uspostavu SMPP API veze koristeći bind_transceiver PDU, omogućujući primanje izvješća o isporuci.

2. bind_transceiver PDU

bind_transceiver PDU autentificira SMPP klijenta kod SMSC-a i uspostavlja vezu za slanje SMS poruka i primanje izvješća o isporuci. To je prvi korak u omogućavanju SMPP API funkcionalnosti.

Struktura bind_transceiver PDU-a

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
ID sustava: 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 ili izvješća

Primjer bind_transceiver PDU-a (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.
  • ID sustava (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.

SMSC odgovara s bind_transceiver_resp PDU-om. Status naredbe 0x00000000 označava uspješnu vezu. Ozeki SMS Gateway bilježi ovu interakciju u "Događajima komunikacije", što je korisno za provjeru veze.

Održavanje SMPP API veze

Stabilna veza ključna je za primanje SMPP izvješća o isporuci, jer prekidi mogu rezultirati propuštenim ažuriranjima statusa. enquire_link PDU koristi se za održavanje veze aktivnom.

enquire_link PDU

enquire_link PDU se periodično šalje od strane SMPP klijenta kako bi se potvrdio status veze, sprječavajući prekid zbog neaktivnosti.

Struktura enquire_link PDU-a

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-a (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 kako bi potvrdio status veze. U Ozeki SMS Gatewayu, omogućavanje "Šalji keepalive pakete" na kartici "Komunikacija" osigurava da se enquire_link PDU-i šalju automatski (npr. svakih 30 sekundi). Ovo je ključno za održavanje pouzdane SMPP API veze za primanje izvješća o isporuci.

Primanje SMPP izvješća o isporuci

SMPP izvješća o isporuci primaju se putem deliver_sm PDU-a, koji SMSC šalje klijentu kako bi izvijestio o statusu prethodno poslanog SMS-a. PDU sadrži detalje poput ID-a poruke, statusa isporuke i vremenske oznake.

deliver_sm PDU za izvješća o isporuci

deliver_sm PDU koristi se i za dolazne SMS poruke i za izvješća o isporuci. Za izvješća o isporuci, polje ESM Class PDU-a postavljeno je tako da označava potvrdu o isporuci (obično 0x04), a sadržaj poruke uključuje strukturirano izvješće s informacijama o statusu.

Struktura deliver_sm PDU-a (Izvješće o isporuci)

Command Length: Varijabilna (ovisno o duljini izvješća)
Command ID: 0x00000005 (deliver_sm)
Command Status: 0x00000000 (postavljeno na 0 za zahtjeve)
Sequence Number: Jedinstveni identifikator za PDU
Service Type: Opcionalno, često null
Source Address TON: Vrsta broja za pošiljatelja (SMSC ili primatelj)
Source Address NPI: Indikator plana numeracije za pošiljatelja
Source Address: Broj telefona pošiljatelja ili identifikator SMSC-a
Destination Address TON: Vrsta broja za primatelja (ESME)
Destination Address NPI: Indikator plana numeracije za primatelja
Destination Address: Broj telefona primatelja (npr. virtualni broj ESME-a)
ESM Class: 0x04 (označava potvrdu o isporuci)
Data Coding: Kodiranje znakova (npr. 0x00 za GSM 7-bitno)
Short Message: Tekst izvješća o isporuci (npr. "id:12345 sub:001 dlvrd:001 submit date:2505270415 done date:2505270416 stat:DELIVRD err:000")
Optional Parameters: TLV polja poput receipted_message_id i message_state

Primjer deliver_sm PDU-a (heksadecimalno):

0000007A 00000005 00000000 00000003 00 01 01 2B3938373635343332313000 01 01 2B3132333435363738393000 04 00 00 00 00 69643A3132333435207375623A30303120646C7672643A303031207375626D697420646174653A3235303532373034313520646F6E6520646174653A3235303532373034313620737461743A44454C49565244206572723A303030

Objašnjenje:

  • Command Length (0000007A): Ukupna duljina (122 bajta).
  • Command ID (00000005): Identificira PDU kao deliver_sm.
  • Command Status (00000000): Postavljeno na 0 za zahtjev.
  • Sequence Number (00000003): Jedinstveni ID za praćenje PDU-a.
  • Service Type (00): Null, jer je opcionalno.
  • Source Address TON (01): Međunarodni broj.
  • Source Address NPI (01): ISDN/telefonski plan numeracije.
  • Source Address (2B3938373635343332313000): ASCII za "+9876543210" (broj primatelja).
  • Destination Address TON (01): Međunarodni broj.
  • Destination Address NPI (01): ISDN/telefonski plan numeracije.
  • Destination Address (2B3132333435363738393000): ASCII za "+1234567890" (broj ESME-a).
  • ESM Class (04): Označava potvrdu o isporuci.
  • Data Coding (00): GSM 7-bitno kodiranje.
  • Short Message: ASCII za "id:12345 sub:001 dlvrd:001 submit date:2505270415 done date:2505270416 stat:DELIVRD err:000".

Polja izvješća o isporuci:

  • id: ID poruke koji je dodijelio SMSC (npr. "12345").
  • sub: Broj primatelja (npr. "001").
  • dlvrd: Broj isporučenih poruka (npr. "001").
  • submit date: Vremenska oznaka slanja (npr. "2505270415" za 27. svibnja 2025., 04:15).
  • done date: Vremenska oznaka isporuke (npr. "2505270416").
  • stat: Status isporuke (npr. "DELIVRD" za isporučeno, "UNDELIV" za neisporučivo).
  • err: Šifra greške (npr. "000" za nema greške).

Klijent mora odgovoriti s deliver_sm_resp PDU-om kako bi potvrdio primitak. Ozeki SMS Gateway to automatski obrađuje i usmjerava izvješće o isporuci na konfiguriranu aplikaciju ili bazu podataka, bilježeći ga u panelu "Poruke".

Konfiguriranje Ozeki SMS Gatewaya za primanje izvješća o isporuci

Kako biste osigurali da Ozeki SMS Gateway ispravno obrađuje SMPP izvješća o isporuci:

  1. Omogućite izvješća o isporuci: U konfiguraciji SMPP klijenta, označite "Request delivery report" na kartici "Advanced" kako biste uputili SMSC da šalje izvješća o isporuci.
  2. Postavka virtualnog broja: Osigurajte da je SMSC konfiguriran da šalje izvješća o isporuci na virtualni broj ili raspon adresa naveden u postavkama SMPP klijenta.
  3. Integracija baze podataka: Konfigurirajte Ozeki da pohranjuje izvješća o isporuci u bazu podataka modificiranjem SQL SELECT izraza u konfiguraciji "Database user" (npr. "SELECT id, sender, receiver, msg, msgtype, status FROM ozekimessagein WHERE msgtype='DLR'").
  4. Bilježenje: Omogućite bilježenje SMPP PDU-a kako biste pratili dolazne deliver_sm PDU-e za otklanjanje grešaka.

S ovim postavkama, Ozeki SMS Gateway će obrađivati i pohranjivati izvješća o isporuci, čineći ih dostupnima za aplikacije ili daljnju analizu.

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

Command Length: 0x00000010 (16 bajtova)
Command ID: 0x00000006 (unbind)
Command Status: 0x00000000 (postavljeno na 0 za zahtjeve)
Sequence Number: Jedinstveni identifikator za PDU

Primjer unbind PDU-a (heksadecimalno):

00000010 00000006 00000000 00000004

Objašnjenje:

  • Command Length (00000010): Ukupna duljina (16 bajtova).
  • Command ID (00000006): Identificira PDU kao unbind.
  • Command Status (00000000): Postavljeno na 0 za zahtjev.
  • Sequence Number (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 se može pokrenuti klikom na "Disconnect" u panelu "Connections".

Najbolje prakse za rukovanje izvješćima o isporuci SMPP API-ja

Kako biste optimizirali svoju implementaciju SMPP API-ja za primanje izvješća o isporuci s Ozeki SMS Gateway-om:

  • Zatražite izvješća o isporuci: Uvijek omogućite opciju "Zatraži izvješće o isporuci" prilikom slanja SMS-a kako biste osigurali da SMSC generira izvješća.
  • Nadzirati zapisnike: Koristite SMPP PDU zapisnike za rješavanje problema s deliver_sm PDU-ima, posebno za izvješća o isporuci.
  • Koristite transceiver način rada: Preferirajte transceiver način rada radi učinkovitosti, jer podržava i slanje SMS-ova i primanje izvješća o isporuci.
  • Sigurne veze: Koristite SMPPS (SMPP preko SSL/TLS) ako ga vaš pružatelj usluga podržava kako biste osigurali siguran prijenos izvješća o isporuci.
  • Analizirajte izvješća o isporuci: Konfigurirajte aplikacije za analizu polja Short Message u deliver_sm PDU-u kako biste izdvojili informacije o statusu (npr. "DELIVRD" ili "UNDELIV") za korisne uvide.

Zaključak

Primanje SMPP izvješća o isporuci pomoću SMPP API-ja s Ozeki SMS Gateway-om uključuje uspostavljanje veze s bind_transceiver PDU-om, održavanje veze s enquire_link PDU-ima i obradu izvješća o isporuci putem deliver_sm PDU-a. Ispravnom konfiguracijom Ozeki SMS Gateway-a i razumijevanjem temeljnog SMPP protokola, programeri mogu izgraditi pouzdane sustave za praćenje statusa isporuke SMS-ova. Robusnost SMPP API-ja i fleksibilna konfiguracija Ozeki-ja čine ga izvrsnim izborom za upravljanje izvješćima o isporuci u aplikacijama za masovno slanje SMS-ova. Za više pojedinosti, pogledajte dokumentaciju Ozeki SMS Gateway-a ili kontaktirajte svog pružatelja SMS usluga za specifične zahtjeve konfiguracije.

More information