Hogyan kapjunk SMPP kézbesítési jelentéseket az SMPP API-n keresztül

A Short Message Peer-to-Peer (SMPP) protokoll a modern SMS-kommunikáció alapköve, lehetővé téve a külső rövid üzenetküldő entitások (ESME-k) számára, hogy üzeneteket és kézbesítési jelentéseket cseréljenek ki a Short Message Service Center-ekkel (SMSC-k). A fejlesztők számára, akik az SMPP API-t használják az Ozeki SMS Gateway-vel, elengedhetetlen a kézbesítési jelentések fogadásának megértése a küldött SMS-ek állapotának nyomon követéséhez. Ez a cikk átfogó útmutatást nyújt az SMPP kézbesítési jelentések fogadásáról protokoll szinten, az SMPP Protocol Data Unit-okra (PDU-k) fókuszálva, amelyek szükségesek a kapcsolat létesítéséhez, karbantartásához és a kézbesítési jelentések fogadásához, az Ozeki SMS Gateway-t használva elsődleges SMPP API szerver platformként.

Bevezetés az SMPP kézbesítési jelentésekbe és az Ozeki SMS Gateway-be

Az SMPP kézbesítési jelentések olyan értesítések, amelyeket az SMSC küld az ESME-nek egy korábban küldött SMS állapotáról, például arról, hogy kézbesítették, sikertelen volt vagy elutasították. Ezek a jelentések elengedhetetlenek olyan alkalmazások számára, amelyek az üzenetkézbesítés megerősítését igénylik, mint például a tranzakciós értesítések vagy a marketingkampányok. Az Ozeki SMS Gateway, egy robusztus SMPP szoftver, amely támogatja a 3.3, 3.4 és 5.0 verziókat, leegyszerűsíti az SMPP kézbesítési jelentések kezelését az intuitív felületén és a hatékony konfigurációs lehetőségein keresztül. Ez a cikk részletesen bemutatja az SMPP PDU-kat, amelyek részt vesznek egy SMPP API klienskapcsolat létesítésében, karbantartásában és a kézbesítési jelentések fogadásában, gyakorlati útmutatással az Ozeki SMS Gateway felhasználói számára.

Az SMPP PDU-k megértése a kézbesítési jelentésekhez

Az SMPP protokoll a Protocol Data Unit-okra (PDU-k) támaszkodik az SMPP kliens (pl. Ozeki SMS Gateway) és az SMSC közötti kommunikáció kezeléséhez. A kézbesítési jelentések fogadásához a kliensnek létesítenie kell egy kapcsolatot, karbantartania azt, és feldolgoznia a beérkező kézbesítési jelentéseket. A kulcsfontosságú PDU-k a következők:

  • bind_transceiver: Kapcsolatot létesít az SMS-ek és kézbesítési jelentések küldéséhez és fogadásához.
  • enquire_link: Karbantartja a kapcsolatot a kézbesítési jelentések folyamatos fogadásának biztosításához.
  • deliver_sm: Kézbesíti a beérkező kézbesítési jelentéseket (és SMS üzeneteket) az SMSC-től a kliensnek.
  • unbind: Lezárja az SMPP munkamenetet.

Az alábbiakban minden egyes PDU-t, szerkezetüket és szerepüket vizsgáljuk meg az SMPP kézbesítési jelentések fogadásában az SMPP API-val az Ozeki SMS Gateway használatával.

SMPP API klienskapcsolat beállítása

Az SMPP kézbesítési jelentések fogadásához stabil SMPP API klienskapcsolat szükséges az SMSC-hez. Az Ozeki SMS Gateway leegyszerűsíti ezt a folyamatot, de a protokoll szintű műveletek megértése elengedhetetlen a haladó felhasználók és a hibaelhárítás számára.

1. Az SMPP kliens konfigurálása az Ozeki SMS Gateway-ben

Az SMPP API klienskapcsolat beállításához az Ozeki SMS Gateway-ben a kézbesítési jelentések fogadásához kövesse az alábbi lépéseket:

  1. Hozzáférés a kezelői konzolhoz: Jelentkezzen be az Ozeki SMS Gateway webes felületére az adminisztrátori fiókkal (alapértelmezett felhasználónév: "admin").
  2. Új kapcsolat létrehozása: A "Connections" panelen kattintson az "Add new connection" gombra, és válassza az "SMPP client" lehetőséget az "IP SMS Connections" részben.
  3. SMPP beállítások megadása: Adja meg a következő adatokat, amelyeket általában az SMS szolgáltatója szolgáltat:
    • Host Name: Az SMSC IP-címe vagy hosztneve (pl. "192.168.1.1").
    • Port Number: A TCP/IP port az SMPP kommunikációhoz (alapértelmezett 9500, erősítse meg a szolgáltatónál).
    • Username (System ID): Az SMSC fiók azonosítója (pl. "smppuser").
    • Password: A System ID-hez tartozó jelszó (pl. "password123").
    • SMPP Version: Válassza a v3.4-et a transceiver támogatáshoz, ami optimális a küldéshez és fogadáshoz.
    • System Type: Opcionális, gyakran "SMPP", ahogy a szolgáltató megadja.
    • Sender Address: Az alapértelmezett telefonszám a kimenő SMS-ekhez (pl. "+1234567890").
    • Address Range: Opcionális, specifikus számokhoz tartozó üzenetek vagy jelentések fogadásához.
  4. Bind Mode: Válassza a "Transceiver" lehetőséget, hogy engedélyezze az SMS küldését és a kézbesítési jelentések fogadását egyetlen kapcsolaton keresztül.
  5. Kézbesítési jelentések engedélyezése: Az "Advanced" lapon jelölje be a "Request delivery report" lehetőséget, hogy az SMSC kézbesítési jelentéseket küldjön a küldött üzenetekhez.
  6. Keepalive beállítások: Engedélyezze a "Send keepalive packets" lehetőséget a kapcsolat folyamatos fenntartásához a jelentések folyamatos fogadásához.
  7. Naplózás engedélyezése: Az "Advanced" lapon engedélyezze a "Log Communication Events" lehetőséget az SMPP PDU-k rögzítéséhez a hibakereséshez.
  8. Mentés és kapcsolódás: Kattintson az "OK" gombra a mentéshez, majd a "Connect" gombra az SMPP API kapcsolat indításához.

Ezek a beállítások előkészítik az Ozeki SMS Gateway-t egy SMPP API kapcsolat létesítésére a bind_transceiver PDU használatával, lehetővé téve a kézbesítési jelentések fogadását.

2. A bind_transceiver PDU

A bind_transceiver PDU hitelesíti az SMPP klienst az SMSC-nél, és kapcsolatot létesít mind az SMS küldéséhez, mind a kézbesítési jelentések fogadásához. Ez az első lépés az SMPP API funkcionalitás engedélyezéséhez.

A bind_transceiver PDU szerkezete

Command Length: 4 bájt (a PDU teljes hossza)
Command ID: 0x00000009 (bind_transceiver)
Command Status: 0x00000000 (0-ra állítva a kéréseknél)
Sequence Number: Egyedi azonosító a PDU-hoz
System ID: Felhasználónév a hitelesítéshez (pl. "smppuser")
Password: Jelszó a hitelesítéshez (pl. "password123")
System Type: Opcionális, gyakran "SMPP"
Interface Version: SMPP verzió (pl. 0x34 a v3.4-hez)
Address Range: Opcionális, üzenetek vagy jelentések fogadásához

Példa bind_transceiver PDU (hexadecimális):

0000002F 00000009 00000000 00000001 736D70707573657200 70617373776F726431323300 534D505000 34 00

Magyarázat:

  • Command Length (0000002F): A PDU teljes hossza (47 bájt).
  • Command ID (00000009): Azonosítja a PDU-t bind_transceiver-ként.
  • Command Status (00000000): 0-ra állítva a kéréshez.
  • Sequence Number (00000001): Egyedi azonosító a PDU nyomon követéséhez.
  • System ID (736D70707573657200): ASCII a "smppuser"-hez null lezáróval.
  • Password (70617373776F726431323300): ASCII a "password123"-hoz null lezáróval.
  • System Type (534D505000): ASCII a "SMPP"-hez null lezáróval.
  • Interface Version (34): SMPP v3.4-et jelöl.
  • Address Range (00): Null, mivel opcionális.

Az SMSC válasza egy bind_transceiver_resp PDU. A 0x00000000 parancsstátusz sikeres kapcsolatot jelez. Az Ozeki SMS Gateway naplózza ezt az interakciót a "Communication Events" naplóban, ami hasznos a kapcsolat ellenőrzéséhez.

Az SMPP API kapcsolat karbantartása

A stabil kapcsolat elengedhetetlen az SMPP kézbesítési jelentések fogadásához, mivel a megszakítások hiányzó állapotfrissítéseket eredményezhetnek. A enquire_link PDU-t használják a kapcsolat életben tartásához.

Az enquire_link PDU

A enquire_link PDU-t az SMPP kliens időszakosan küldi a kapcsolat állapotának megerősítéséhez, megelőzve az inaktivitás miatti leválasztást.

Az enquire_link PDU szerkezete

Command Length: 0x00000010 (16 bájt)
Command ID: 0x00000015 (enquire_link)
Command Status: 0x00000000 (0-ra állítva a kéréseknél)
Sequence Number: Egyedi azonosító a PDU-hoz

Példa enquire_link PDU (hexadecimális):

00000010 00000015 00000000 00000002

Magyarázat:

  • Command Length (00000010): Teljes hossz (16 bájt).
  • Command ID (00000015): Azonosítja a PDU-t enquire_link-ként.
  • Command Status (00000000): 0-ra állítva a kéréshez.
  • Sequence Number (00000002): Egyedi azonosító a PDU nyomon követéséhez.

Az SMSC válasza egy enquire_link_resp PDU, amely megerősíti a kapcsolat állapotát. Az Ozeki SMS Gateway-ben a "Send keepalive packets" engedélyezése a "Communication" lapon biztosítja, hogy a enquire_link PDU-k automatikusan legyenek elküldve (pl. 30 másodpercenként). Ez elengedhetetlen a megbízható SMPP API kapcsolat fenntartásához a kézbesítési jelentések fogadásához.

SMPP kézbesítési jelentések fogadása

Az SMPP kézbesítési jelentéseket a deliver_sm PDU-n keresztül kapjuk meg, amelyet az SMSC küld a kliensnek egy korábban küldött SMS állapotáról. A PDU tartalmaz olyan részleteket, mint az üzenetazonosító, a kézbesítési állapot és az időbélyeg.

A deliver_sm PDU a kézbesítési jelentésekhez

A deliver_sm PDU-t mind a bejövő SMS üzenetek, mind a kézbesítési jelentések esetén használják. A kézbesítési jelentések esetén a PDU ESM Class mezője jelzi a kézbesítési visszaigazolást (általában 0x04), és az üzenet tartalma egy strukturált jelentést tartalmaz az állapotinformációkkal.

A deliver_sm PDU szerkezete (Kézbesítési jelentés)

Command Length: Változó (a jelentés hosszától függ)
Command ID: 0x00000005 (deliver_sm)
Command Status: 0x00000000 (0-ra állítva a kéréseknél)
Sequence Number: Egyedi azonosító a PDU-hoz
Service Type: Opcionális, gyakran null
Source Address TON: A feladó számának típusa (SMSC vagy címzett)
Source Address NPI: A feladó számának számozási terve
Source Address: A feladó telefonszáma vagy SMSC azonosítója
Destination Address TON: A címzett számának típusa (ESME)
Destination Address NPI: A címzett számának számozási terve
Destination Address: A címzett telefonszáma (pl. ESME virtuális száma)
ESM Class: 0x04 (kézbesítési visszaigazolást jelöl)
Data Coding: Karakterkódolás (pl. 0x00 GSM 7-bit)
Short Message: Kézbesítési jelentés szövege (pl. "id:12345 sub:001 dlvrd:001 submit date:2505270415 done date:2505270416 stat:DELIVRD err:000")
Optional Parameters: TLV mezők, mint a receipted_message_id és message_state

Példa deliver_sm PDU (hexadecimális):

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

Magyarázat:

  • Command Length (0000007A): Teljes hossz (122 bájt).
  • Command ID (00000005): Azonosítja a PDU-t deliver_sm-ként.
  • Command Status (00000000): 0-ra állítva a kéréshez.
  • Sequence Number (00000003): Egyedi azonosító a PDU nyomon követéséhez.
  • Service Type (00): Null, mivel opcionális.
  • Source Address TON (01): Nemzetközi szám.
  • Source Address NPI (01): ISDN/telefon számozási terv.
  • Source Address (2B3938373635343332313000): ASCII a "+9876543210"-hez (címzett száma).
  • Destination Address TON (01): Nemzetközi szám.
  • Destination Address NPI (01): ISDN/telefon számozási terv.
  • Destination Address (2B3132333435363738393000): ASCII a "+1234567890"-hoz (ESME száma).
  • ESM Class (04): Kézbesítési visszaigazolást jelöl.
  • Data Coding (00): GSM 7-bit kódolás.
  • Short Message: ASCII a "id:12345 sub:001 dlvrd:001 submit date:2505270415 done date:2505270416 stat:DELIVRD err:000"-hoz.

Kézbesítési jelentés mezők:

  • id: Az SMSC által hozzárendelt üzenetazonosító (pl. "12345").
  • sub: A címzettek száma (pl. "001").
  • dlvrd: A kézbesített üzenetek száma (pl. "001").
  • submit date: Beküldési időbélyeg (pl. "2505270415" 2025. május 27., 04:15).
  • done date: Kézbesítési időbélyeg (pl. "2505270416").
  • stat: Kézbesítési állapot (pl. "DELIVRD" kézbesített, "UNDELIV" kézbesíthetetlen).
  • err: Hibakód (pl. "000" nincs hiba).

A kliensnek válaszolnia kell egy deliver_sm_resp PDU-val a fogadás visszaigazolásához. Az Ozeki SMS Gateway ezt automatikusan kezeli, és a kézbesítési jelentést a konfigurált alkalmazásnak vagy adatbázisnak továbbítja, naplózva azt a "Messages" panelen.

Az Ozeki SMS Gateway konfigurálása a kézbesítési jelentések fogadásához

Annak biztosításához, hogy az Ozeki SMS Gateway helyesen dolgozza fel az SMPP kézbesítési jelentéseket:

  1. Kézbesítési jelentések engedélyezése: Az SMPP kliens konfigurációjában jelölje be a "Request delivery report" lehetőséget az "Advanced" lapon, hogy az SMSC kézbesítési jelentéseket küldjön.
  2. Virtuális szám beállítása: Győződjön meg róla, hogy az SMSC a virtuális számra vagy címterületre küldi a kézbesítési jelentéseket, amely az SMPP kliens beállításaiban van megadva.
  3. Adatbázis integráció: Konfigurálja az Ozeki-t, hogy a kézbesítési jelentéseket egy adatbázisban tárolja az SQL SELECT utasítás módosításával a "Database user" konfigurációban (pl. "SELECT id, sender, receiver, msg, msgtype, status FROM ozekimessagein WHERE msgtype='DLR'").
  4. Naplózás: Engedélyezze az SMPP PDU naplózást a bejövő deliver_sm PDU-k monitorozásához a hibakereséshez.

Ezekkel a beállításokkal az Ozeki SMS Gateway feldolgozza és tárolja a kézbesítési jelentéseket, így azok elérhetővé válnak az alkalmazások vagy további elemzések számára.

Az SMPP API kapcsolat megszüntetése

Ha az SMPP API munkamenetre már nincs szükség, a kliens egy unbind PDU-t küld a kapcsolat szabályos lezárásához.

Az unbind PDU

A unbind PDU jelez az SMSC-nek, hogy zárja le az SMPP munkamenetet.

Az unbind PDU szerkezete

Command Length: 0x00000010 (16 bájt)
Command ID: 0x00000006 (unbind)
Command Status: 0x00000000 (0-ra állítva a kéréseknél)
Sequence Number: Egyedi azonosító a PDU-hoz

Példa unbind PDU (hexadecimális):

00000010 00000006 00000000 00000004

Magyarázat:

  • Command Length (00000010): Teljes hossz (16 bájt).
  • Command ID (00000006): Azonosítja a PDU-t unbind-ként.
  • Command Status (00000000): 0-ra állítva a kéréshez.
  • Sequence Number (00000004): Egyedi azonosító a PDU nyomon követéséhez.

Az SMSC válasza egy unbind_resp PDU, amely megerősíti a munkamenet lezárását. Az Ozeki SMS Gateway-ben ezt a "Disconnect" gombra kattintva lehet elindítani a "Connections" panelen.

Ajánlott eljárások az SMPP API kézbesítési jelentések kezeléséhez

Az SMPP API implementáció optimalizálása az Ozeki SMS Gateway-vel történő kézbesítési jelentések fogadásához:

  • Kézbesítési jelentések kérése: Mindig engedélyezze a "Request delivery report" lehetőséget az SMS küldésekor, hogy az SMSC generáljon jelentéseket.
  • Naplók monitorozása: Használja az SMPP PDU naplókat a deliver_sm PDU-kkal kapcsolatos problémák hibaelhárításához, különösen a kézbesítési jelentések esetén.
  • Transceiver mód használata: A hatékonyság érdekében előnyben részesítse a transceiver módot, mivel támogatja mind az SMS küldését, mind a kézbesítési jelentések fogadását.
  • Biztonságos kapcsolatok: Használjon SMPPS-t (SMPP SSL/TLS felett), ha a szolgáltató támogatja, a kézbesítési jelentések biztonságos továbbításához.
  • Kézbesítési jelentések elemzése: Konfigurálja az alkalmazásokat a deliver_sm PDU Short Message mezőjének elemzésére az állapotinformációk kinyeréséhez (pl. "DELIVRD" vagy "UNDELIV") a cselekvési lehetőségekhez.

Összegzés

Az SMPP kézbesítési jelentések fogadása az SMPP API-val az Ozeki SMS Gateway használatával magában foglalja a kapcsolat létesítését a bind_transceiver PDU-val, a karbantartását az enquire_link PDU-kkal, és a kézbesítési jelentések feldolgozását a deliver_sm PDU-n keresztül. Az Ozeki SMS Gateway helyes konfigurálásával és az alapul szolgáló SMPP protokoll megértésével a fejlesztők megbízható rendszereket építhetnek az SMS kézbesítési állapotának nyomon követéséhez. Az SMPP API robusztussága és az Ozeki rugalmas konfigurációja kiváló választást tesz lehetővé a kézbesítési jelentések kezelésére nagy mennyiségű SMS alkalmazásokban. További részletekért tekintse meg az Ozeki SMS Gateway dokumentációját, vagy lépjen kapcsolatba az SMS szolgáltatójával a specifikus konfigurációs követelményekért.

More information