Ako posielať SMS cez SMPP API pomocou Javascriptu/Node.js
Short Message Peer-to-Peer (SMPP) API je robustný a široko používaný protokol na odosielanie a prijímanie SMS správ medzi Short Message Service Centers (SMSCs) a External Short Messaging Entities (ESMEs). Pre vývojárov využívajúcich JavaScript a Node.js, integrácia SMPP API s nástrojmi ako Ozeki SMS Gateway umožňuje bezproblémovú SMS komunikáciu. Tento sprievodca poskytuje podrobný návod na nastavenie SMPP klienta, správu pripojení, odosielanie SMS a spracovanie správ o doručení pomocou JavaScriptu a Node.js, vrátane praktických príkladov kódu.
Prečo používať SMPP API s JavaScriptom?
SMPP protokol je výkonná voľba pre SMS komunikáciu vďaka svojej spoľahlivosti,
škálovateľnosti a podpore pre vysokoobjemové zasielanie správ. Použitím JavaScriptu
a Node.js môžu vývojári vytvárať efektívne, udalosťami riadené aplikácie, ktoré sa bezproblémovo integrujú
s SMPP API. Balík smpp
, dostupný
cez npm, zjednodušuje interakcie s nízkou úrovňou protokolu, čo umožňuje vývojárom sústrediť sa
na vytváranie robustných SMS aplikácií.
Nastavenie SMPP API klienta v JavaScripte (Node.js) na odosielanie SMS
Predtým, ako môžete odosielať SMS správy pomocou SMPP API, musíte nakonfigurovať používateľský účet SMPP a pripojiť sa k SMPP serveru, ako je napríklad ten poskytovaný Ozeki SMS Gateway. Táto časť vysvetľuje, ako nastaviť prostredie a nadviazať pripojenie pomocou JavaScriptu.
Krok 1: Inštalácia balíka SMPP
Pre interakciu s protokolom SMPP nainštalujte balík smpp
z
npm, ktorý poskytuje jednoduché rozhranie pre operácie SMPP API
v JavaScripte.
npm install smpp
Krok 2: Nadviazanie pripojenia
Nižšie je príklad, ako sa pripojiť k SMPP serveru pomocou Node.js a
balíka smpp
. Nahraďte your.ozeki.server
, your_username
,
a your_password
skutočnými údajmi servera a prihlasovacími údajmi.
const smpp = require('smpp'); const session = smpp.connect({ host: 'your.ozeki.server', port: 2775 }); session.on('connect', () => { console.log('Pripojené k SMPP serveru'); session.bind_transceiver({ system_id: 'your_username', password: 'your_password' }, (pdu) => { if (pdu.command_status === 0) { console.log('Úspešne pripojené k SMPP serveru'); } else { console.error('Pripojenie zlyhalo:', pdu.command_status); } }); }); session.on('error', (error) => { console.error('Chyba pripojenia SMPP:', error); });
Uistite sa, že váš SMPP server je dostupný a vaše prihlasovacie údaje sú správne, aby ste sa vyhli
problémom s pripojením. Metóda bind_transceiver
nadväzuje obojsmerné
pripojenie pre odosielanie aj prijímanie SMS.
Správa pripojení SMPP API v Node.js pre SMS správu
Udržiavanie aktívnej SMPP relácie vyžaduje periodické odosielanie keep-alive správ
pomocou PDU enquire_link
. Toto zabezpečuje, že pripojenie zostáva otvorené
a responzívne, najmä pre dlhotrvajúce aplikácie.
const keepAliveInterval = setInterval(() => { session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive zlyhal:', pdu.command_status); } }); }, 30000); session.on('close', () => { clearInterval(keepAliveInterval); console.log('SMPP pripojenie uzavreté'); });
Tento kód odosiela enquire_link
každých 30 sekúnd, aby udržal reláciu
aktívnu, a vymaže interval pri uzavretí pripojenia.
Odosielanie SMS s JavaScriptom cez SMPP API (Príklad pre Node.js)
Po pripojení môžete odosielať SMS správy pomocou PDU submit_sm
.
Nasledujúca funkcia v JavaScripte demonštruje, ako odoslať
SMS pomocou SMPP API.
function sendSMS(from, to, message) { session.submit_sm({ source_addr: from, destination_addr: to, short_message: message, data_coding: 0, // GSM 7-bit kódovanie source_addr_ton: 1, // Medzinárodný formát source_addr_npi: 1, // ISDN číslovací plán dest_addr_ton: 1, // Medzinárodný formát dest_addr_npi: 1 // ISDN číslovací plán }, (pdu) => { if (pdu.command_status === 0) { console.log(`Správa úspešne odoslaná, message_id: ${pdu.message_id}`); } else { console.error('Odoslanie správy zlyhalo:', pdu.command_status); } }); } sendSMS('12345', '+1234567890', 'Ahoj z Node.js SMPP klienta!');
Parametre data_coding
, source_addr_ton
a dest_addr_ton
zabezpečujú správne kódovanie správy a formátovanie telefónneho čísla.
Upravte ich podľa vašich požiadaviek.
Spracovanie správ o doručení SMS v JavaScripte pomocou SMPP API
SMPP API podporuje správy o doručení na potvrdenie, či bola SMS
doručená. Nasledujúci kód spracováva prichádzajúce PDU deliver_sm
na spracovanie oznámení o doručení.
session.on('pdu', (pdu) => { if (pdu.command === 'deliver_sm') { const messageId = pdu.receipted_message_id; const status = pdu.message_state; console.log(`Správa o doručení pre ${messageId}: ${status}`); session.deliver_sm_resp({ sequence_number: pdu.sequence_number }); } });
Tento kód zaznamenáva stav doručenia a odpovedá serveru na potvrdenie prijatia správy o doručení.
Kompletná implementácia SMPP API klienta v JavaScripte (Node.js) pre odosielanie SMS
Pre produkčne pripravené riešenie, nasledujúca trieda v JavaScripte zahŕňa správu pripojenia, odosielanie správ a logiku opätovného pripojenia pre 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('Pripojené k SMPP serveru'); this.bind(); }); this.session.on('error', (error) => { console.error('Chyba pripojenia:', error); this.reconnect(); }); this.session.on('close', () => { console.log('Pripojenie ukončené'); 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('Úspešne pripojené k SMPP serveru'); this.startKeepAlive(); } else { console.error('Pripojenie zlyhalo:', pdu.command_status); this.session.close(); } }); } startKeepAlive() { this.keepAliveInterval = setInterval(() => { this.session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive zlyhal:', 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 chyba: ${pdu.command_status}`)); } }); }); } cleanup() { if (this.keepAliveInterval) { clearInterval(this.keepAliveInterval); this.keepAliveInterval = null; } } reconnect() { this.cleanup(); setTimeout(() => { console.log('Pokus o opätovné pripojenie...'); this.connect(); }, 5000); } } const client = new SMPPClient({ host: 'your.ozeki.server', port: 2775, system_id: 'your_username', password: 'your_password' }); client.sendSMS('12345', '+1234567890', 'Ahoj z kompletného SMPP klienta!') .then(messageId => console.log('ID správy:', messageId)) .catch(err => console.error('Chyba:', err));
Táto implementácia zahŕňa spracovanie chýb, automatické opätovné pripojenie a odosielanie správ založené na promises, čo ju robí vhodnou pre produkčné prostredia.
Najlepšie postupy pre používanie SMPP API s JavaScriptom- Spracovanie chýb: Implementujte robustné spracovanie chýb pre správu sieťových problémov a chýb servera.
- Async/Await: Použite promises alebo async/await pre lepšiu kontrolu toku v asynchrónnych operáciách.
- Fronta správ: Pre odosielanie SMS vo veľkom objeme implementujte frontu na správu priepustnosti správ.
- Monitorovanie pripojenia: Priebežne monitorujte stav pripojenia a implementujte logiku automatického opätovného pripojenia.
- Kódovanie znakov: Spracujte rôzne kódovania znakov (napr. GSM 7-bit, UCS-2) pre podporu medzinárodných SMS.
Tento komplexný sprievodca ukázal, ako implementovať robustného SMPP klienta pomocou
JavaScriptu a Node.js pre interakciu s SMPP API
a Ozeki SMS Gateway. Od nastavenia pripojenia po odosielanie SMS a spracovanie
správ o doručení, poskytnuté príklady demonštrujú praktické aplikácie balíka
smpp
. Pre pokročilé prípady použitia zvážte preskúmanie funkcií
ako zreťazenie správ, pokročilé schémy kódovania a logovanie pre produkčné aplikácie.
Pre ďalšie podrobnosti o SMPP protokole alebo Ozeki SMS Gateway navštívte oficiálnu dokumentáciu alebo kontaktujte vášho poskytovateľa SMS brány.
More information
- How to set up an SMPP API client connection with Your SMSC
- How to set up an SMPP API server to send ad receive SMS from multiple Apps
- How to choose the right SMPP API provider for your business
- How to Send SMS Using the SMPP API at the protocol level
- How to Send SMS through the SMPP API using Python
- How to Send SMS through the SMPP API using Javascript
- How to send SMS through the SMPP API using Java
- How to Send SMS through the SMPP API using PHP
- How to Send SMS through the SMPP API using C#
- How to Send SMS through the SMPP API using C/Cpp
- How to Receive SMS using the SMPP API
- How to Receive an SMS Delivery Report using the SMPP API
- SMPP API FAQ