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:
- 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").
- Ú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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:
- 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.
- 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.
- 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'").
- 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
- SMPP API kliens kapcsolat beállítása az SMSC-vel
- SMPP API szerver beállítása több alkalmazás SMS küldéséhez és fogadásához
- A megfelelő SMPP API szolgáltató kiválasztása vállalkozásához
- SMS küldése SMPP API-val protokoll szinten
- SMS küldése SMPP API-val Python használatával
- SMS küldése SMPP API-val Javascript használatával
- SMS küldése SMPP API-val Java használatával
- SMS küldése SMPP API-val PHP használatával
- Hogyan küldjünk SMS-t az SMPP API-n keresztül C# használatával
- SMS küldése SMPP API-val C/Cpp használatával
- SMS fogadása SMPP API-val
- SMS kézbesítési jelentés fogadása SMPP API-val
- SMPP API GYIK