Kako poslati SMS putem SMPP API-ja koristeći Javascript/Node.js
Short Message Peer-to-Peer (SMPP) API je robustan i široko korišten protokol za slanje i primanje SMS poruka između Short Message Service Centara (SMSC) i External Short Messaging Entities (ESME). Za programere koji koriste JavaScript i Node.js, integracija SMPP API-ja s alatima poput Ozeki SMS Gateway-a omogućuje nesmetanu SMS komunikaciju. Ovaj vodič pruža korak-po-korak tutorial o postavljanju SMPP klijenta, upravljanju vezama, slanju SMS-a i rukovanju izvješćima o isporuci koristeći JavaScript i Node.js, zajedno s praktičnim primjerima koda.
Zašto koristiti SMPP API s JavaScript-om?
SMPP protokol je moćan izbor za SMS komunikaciju zbog svoje pouzdanosti,
skalabilnosti i podrške za velike količine poruka. Korištenjem JavaScript-a
i Node.js-a, programeri mogu stvoriti učinkovite, događajima vođene aplikacije koje se besprijekorno integriraju
s SMPP API-jem. Paket smpp
, dostupan
putem npm-a, pojednostavljuje interakcije s niskorazinskim protokolom, omogućujući programerima
da se usredotoče na izgradnju robusnih SMS aplikacija.
Postavljanje SMPP API klijenta u JavaScript-u (Node.js) za slanje SMS-a
Prije nego što možete slati SMS poruke koristeći SMPP API, morate konfigurirati SMPP korisnički račun i spojiti se na SMPP poslužitelj, kao što je onaj koji nudi Ozeki SMS Gateway. Ovaj odjeljak objašnjava kako postaviti okruženje i uspostaviti vezu koristeći JavaScript.
Korak 1: Instalirajte SMPP paket
Za interakciju s SMPP protokolom, instalirajte paket smpp
iz
npm-a, koji pruža jednostavno sučelje za operacije SMPP API-ja
u JavaScript-u.
npm install smpp
Korak 2: Uspostavite vezu
Ispod je primjer kako se spojiti na SMPP poslužitelj koristeći Node.js i
paket smpp
. Zamijenite your.ozeki.server
, your_username
,
i your_password
svojim stvarnim podacima poslužitelja i vjerodajnicama.
const smpp = require('smpp'); const session = smpp.connect({ host: 'your.ozeki.server', port: 2775 }); session.on('connect', () => { console.log('Spojeno na SMPP poslužitelj'); session.bind_transceiver({ system_id: 'your_username', password: 'your_password' }, (pdu) => { if (pdu.command_status === 0) { console.log('Uspješno povezano s SMPP poslužiteljem'); } else { console.error('Povezivanje nije uspjelo:', pdu.command_status); } }); }); session.on('error', (error) => { console.error('Greška u SMPP vezi:', error); });
Osigurajte da je vaš SMPP poslužitelj dostupan i da su vaše vjerodajnice točne kako biste izbjegli
probleme s vezom. Metoda bind_transceiver
uspostavlja dvosmjernu
vezu za slanje i primanje SMS-a.
Upravljanje SMPP API vezama u Node.js-u za SMS poruke
Održavanje aktivne SMPP sesije zahtijeva slanje periodičnih keep-alive poruka
koristeći enquire_link
PDU. Ovo osigurava da veza ostane otvorena
i responzivna, posebno za dugotrajne aplikacije.
const keepAliveInterval = setInterval(() => { session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive nije uspio:', pdu.command_status); } }); }, 30000); session.on('close', () => { clearInterval(keepAliveInterval); console.log('SMPP veza zatvorena'); });
Ovaj kod šalje enquire_link
svakih 30 sekundi kako bi održao sesiju
aktivnom i briše interval kada se veza zatvori.
Slanje SMS-a s JavaScript-om putem SMPP API-ja (Node.js primjer)
Nakon što ste spojeni, možete slati SMS poruke koristeći submit_sm
PDU.
Sljedeća JavaScript funkcija pokazuje kako poslati SMS s
SMPP API-jem.
function sendSMS(from, to, message) { session.submit_sm({ source_addr: from, destination_addr: to, short_message: message, data_coding: 0, // GSM 7-bit kodiranje source_addr_ton: 1, // Međunarodni format source_addr_npi: 1, // ISDN plan numeriranja dest_addr_ton: 1, // Međunarodni format dest_addr_npi: 1 // ISDN plan numeriranja }, (pdu) => { if (pdu.command_status === 0) { console.log(`Poruka uspješno poslana, message_id: ${pdu.message_id}`); } else { console.error('Slanje poruke nije uspjelo:', pdu.command_status); } }); } sendSMS('12345', '+1234567890', 'Pozdrav iz Node.js SMPP klijenta!');
Parametri data_coding
, source_addr_ton
i dest_addr_ton
osiguravaju pravilno kodiranje poruke i formatiranje telefonskog broja.
Prilagodite ove parametre prema svojim zahtjevima.
Rukovanje izvješćima o isporuci SMS-a u JavaScript-u koristeći SMPP API
SMPP API podržava izvješća o isporuci kako bi potvrdio je li SMS
isporučen. Sljedeći kod obrađuje dolazne deliver_sm
PDU-e kako bi obradio obavijesti o isporuci.
session.on('pdu', (pdu) => { if (pdu.command === 'deliver_sm') { const messageId = pdu.receipted_message_id; const status = pdu.message_state; console.log(`Izvješće o isporuci za ${messageId}: ${status}`); session.deliver_sm_resp({ sequence_number: pdu.sequence_number }); } });
Ovaj kod bilježi status isporuke i odgovara poslužitelju kako bi potvrdio primljeno izvješće.
Kompletna implementacija SMPP API klijenta u JavaScriptu (Node.js) za slanje SMS-aZa produkcijsko rješenje, sljedeća JavaScript klasa obuhvaća upravljanje vezom, slanje poruka i logiku ponovnog povezivanja za SMPP API.
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('Povezan s SMPP serverom'); this.bind(); }); this.session.on('error', (error) => { console.error('Greška u vezi:', error); this.reconnect(); }); this.session.on('close', () => { console.log('Veza zatvorena'); 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('Uspješno povezan s SMPP serverom'); this.startKeepAlive(); } else { console.error('Povezivanje nije uspjelo:', pdu.command_status); this.session.close(); } }); } startKeepAlive() { this.keepAliveInterval = setInterval(() => { this.session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive nije uspio:', 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 greška: ${pdu.command_status}`)); } }); }); } cleanup() { if (this.keepAliveInterval) { clearInterval(this.keepAliveInterval); this.keepAliveInterval = null; } } reconnect() { this.cleanup(); setTimeout(() => { console.log('Pokušaj ponovnog povezivanja...'); this.connect(); }, 5000); } } const client = new SMPPClient({ host: 'your.ozeki.server', port: 2775, system_id: 'your_username', password: 'your_password' }); client.sendSMS('12345', '+1234567890', 'Pozdrav iz kompletnog SMPP klijenta!') .then(messageId => console.log('ID poruke:', messageId)) .catch(err => console.error('Greška:', err));
Ova implementacija uključuje rukovanje greškama, automatsko ponovno povezivanje i slanje poruka temeljeno na obećanjima, što je čini prikladnom za produkcijska okruženja.
Najbolje prakse za korištenje SMPP API-ja s JavaScriptom
- Rukovanje greškama: Implementirajte robusno rukovanje greškama za upravljanje mrežnim problemima i greškama servera.
- Async/Await: Koristite obećanja ili async/await za bolji tok upravljanja u asinkronim operacijama.
- Red poruka: Za slanje velikog broja SMS-ova, implementirajte red za upravljanje propusnošću poruka.
- Praćenje veze: Kontinuirano pratite stanje veze i implementirajte logiku automatskog ponovnog povezivanja.
- Kodiranje znakova: Rukujte različitim kodiranjima znakova (npr. GSM 7-bit, UCS-2) kako biste podržali međunarodne SMS-ove.
Zaključak
Ovaj opsežan vodič pokazao je kako implementirati robustan SMPP klijent koristeći
JavaScript i Node.js za interakciju s SMPP API-jem
i Ozeki SMS Gatewayom. Od postavljanja veze do slanja SMS-ova i rukovanja izvješćima o isporuci,
navedeni primjeri demonstriraju praktične primjene paketa smpp
. Za napredne slučajeve korištenja,
razmotrite istraživanje značajki kao što su spajanje poruka, napredne sheme kodiranja i bilježenje za aplikacije produkcijske razine.
Za dodatne pojedinosti o SMPP protokolu ili Ozeki SMS Gatewayu, posjetite službenu dokumentaciju ili kontaktirajte svog pružatelja SMS gateway usluga.
More information
- Kako postaviti SMPP API klijentsku vezu s Vašim SMSC
- Kako postaviti SMPP API poslužitelj za slanje i primanje SMS-a iz više aplikacija
- Kako odabrati pravog SMPP API pružatelja za vaš posao
- Kako poslati SMS koristeći SMPP API na razini protokola
- Kako poslati SMS putem SMPP API-a koristeći Python
- Kako poslati SMS putem SMPP API-a koristeći Javascript
- Kako poslati SMS putem SMPP API-a koristeći Java
- Kako poslati SMS putem SMPP API-a koristeći PHP
- Kako poslati SMS putem SMPP API-ja koristeći C#
- Kako poslati SMS putem SMPP API-a koristeći C/Cpp
- Kako primiti SMS koristeći SMPP API
- Kako primiti izvješće o isporuci SMS-a koristeći SMPP API
- SMPP API FAQ