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.