Hogyan küldjünk SMS-t az SMPP API-n keresztül Javascript/Node.js segítségével
A Short Message Peer-to-Peer (SMPP) API egy széles körben elterjedt protokoll SMS-üzenetek cseréjére SMS-entitások között. JavaScript/Node.JS fejlesztők számára, akik az Ozeki SMS Gateway-vel dolgoznak, ez az útmutató bemutatja, hogyan implementálható az SMPP protokoll Node.js segítségével, gyakorlati példákkal a kapcsolatkezelésre és az üzenetküldésre.
SMPP API kliens beállítása JavaScriptben (Node.js) SMS küldéshez
Ahhoz, hogy SMS-t küldhess az SMPP API-n keresztül, először Ozeki SMS Gateway SMPP szerverével.
Miután ez megvan, használhatod az smpp
csomagot az npm-ből az SMPP protokoll műveletek kezelésére:
npm install smpp
Alapvető kapcsolat beállítása
Íme, hogyan állíthatsz be egy SMPP kapcsolatot Node.js-ben:
const smpp = require('smpp'); const session = smpp.connect({ host: 'your.ozeki.server', port: 2775 }); session.on('connect', () => { console.log('Csatlakozva az SMPP szerverhez'); session.bind_transceiver({ system_id: 'your_username', password: 'your_password' }, (pdu) => { if (pdu.command_status === 0) { console.log('Sikeresen kötve az SMPP szerverhez'); } else { console.error('A kötés sikertelen:', pdu.command_status); } }); }); session.on('error', (error) => { console.error('SMPP kapcsolati hiba:', error); });
SMPP API kapcsolatok kezelése Node.js-ben SMS üzenetküldéshez
Az SMPP kapcsolatokhoz keep-alive üzenetek szükségesek a munkamenet fenntartásához:
// enquire_link küldése 30 másodpercenként const keepAliveInterval = setInterval(() => { session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive sikertelen:', pdu.command_status); } }); }, 30000); // Munkamenet lezárásának kezelése session.on('close', () => { clearInterval(keepAliveInterval); console.log('SMPP kapcsolat lezárva'); });
SMS küldése JavaScript segítségével az SMPP API-n keresztül (Node.js példa)
Az SMS küldéséhez a submit_sm
PDU használata:
function sendSMS(from, to, message) { session.submit_sm({ source_addr: from, destination_addr: to, short_message: message, data_coding: 0, // GSM 7-bit kódolás source_addr_ton: 1, // Nemzetközi formátum source_addr_npi: 1, // ISDN számozási terv dest_addr_ton: 1, // Nemzetközi formátum dest_addr_npi: 1 // ISDN számozási terv }, (pdu) => { if (pdu.command_status === 0) { console.log(`Üzenet sikeresen elküldve, message_id: ${pdu.message_id}`); } else { console.error('Üzenetküldés sikertelen:', pdu.command_status); } }); } // Példa használatra sendSMS('12345', '+1234567890', 'Helló a Node.js SMPP kliensről!');
SMS kézbesítési jelentések kezelése JavaScriptben az SMPP API segítségével
Kézbesítési értesítések fogadásához:
session.on('pdu', (pdu) => { if (pdu.command === 'deliver_sm') { const messageId = pdu.receipted_message_id; const status = pdu.message_state; console.log(`Kézbesítési jelentés a(z) ${messageId} azonosítójú üzenethez: ${status}`); // Válasz küldése session.deliver_sm_resp({ sequence_number: pdu.sequence_number }); } });
Teljes SMPP API kliens implementáció JavaScriptben (Node.js) SMS küldéshez
Itt egy teljes implementáció hibakezeléssel és újrakapcsolódással:
const smpp = require('smpp'); class SMPPClient { constructor(config) { this.config = config; this.session = null; this.keepAliveInterval = null; this.connect(); } connect() { this.session = smpp.connect(this.config); this.session.on('connect', () => { console.log('Csatlakozva az SMPP szerverhez'); this.bind(); }); this.session.on('error', (error) => { console.error('Kapcsolati hiba:', error); this.reconnect(); }); this.session.on('close', () => { console.log('Kapcsolat lezárva'); this.cleanup(); this.reconnect(); }); } bind() { this.session.bind_transceiver({ system_id: this.config.system_id, password: this.config.password }, (pdu) => { if (pdu.command_status === 0) { console.log('Sikeresen kötve az SMPP szerverhez'); this.startKeepAlive(); } else { console.error('Kötés sikertelen:', pdu.command_status); this.session.close(); } }); } startKeepAlive() { this.keepAliveInterval = setInterval(() => { this.session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive sikertelen:', pdu.command_status); } }); }, 30000); } sendSMS(from, to, message) { return new Promise((resolve, reject) => { this.session.submit_sm({ source_addr: from, destination_addr: to, short_message: message, data_coding: 0 }, (pdu) => { if (pdu.command_status === 0) { resolve(pdu.message_id); } else { reject(new Error(`SMPP hiba: ${pdu.command_status}`)); } }); }); } cleanup() { if (this.keepAliveInterval) { clearInterval(this.keepAliveInterval); this.keepAliveInterval = null; } } reconnect() { this.cleanup(); setTimeout(() => { console.log('Újrakapcsolódás megkísérlése...'); this.connect(); }, 5000); } } // Példa használatra const client = new SMPPClient({ host: 'your.ozeki.server', port: 2775, system_id: 'your_username', password: 'your_password' }); client.sendSMS('12345', '+1234567890', 'Helló a teljes SMPP kliensről!') .then(messageId => console.log('Üzenet azonosító:', messageId)) .catch(err => console.error('Hiba:', err));
Hibakezelés és ajánlott eljárások
- Mindig implementálj megfelelő hibakezelést hálózati problémákra
- Használj promise-okat/async-await-et a jobb folyamatvezérlés érdekében
- Implementálj üzenetsorolást nagy mennyiségű küldéshez
- Figyeld a kapcsolat állapotát és implementálj automatikus újrakapcsolódást
- Kezeld megfelelően a különböző karakterkódolásokat
Összegzés
Ez az útmutató bemutatta, hogyan implementálhatsz egy SMPP klienst JavaScript/Node.JS segítségével az Ozeki SMS Gateway-vel való együttműködéshez. A teljes példa tartalmazza a kapcsolatkezelést, az üzenetküldést és a kézbesítési jelentések kezelését. Az smpp csomag használatával az alkalmazás logikájára koncentrálhatsz, miközben a könyvtár kezeli az alacsony szintű protokoll részleteket.
Éles környezetben érdemes további funkciókat implementálni, mint például üzenetsorolás, megfelelő naplózás és monitorozás. Az SMPP protokoll számos fejlett funkciót támogat, mint például üzenetösszefűzés és különböző kódolási sémák, amelyeket tovább lehet vizsgálni, ahogy az igényeid nőnek.
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