Jak posílat SMS přes SMPP API pomocí Javascriptu/Node.js
Short Message Peer-to-Peer (SMPP) API je robustní a široce používaný protokol pro odesílání a přijímání SMS zpráv mezi Short Message Service Centry (SMSC) a externími entitami pro krátké zprávy (ESME). Pro vývojáře využívající JavaScript a Node.js umožňuje integrace SMPP API s nástroji jako Ozeki SMS Gateway bezproblémovou SMS komunikaci. Tento průvodce poskytuje podrobný návod, jak nastavit SMPP klienta, spravovat připojení, odesílat SMS a zpracovávat doručovací zprávy pomocí JavaScriptu a Node.js, včetně praktických příkladů kódu.
Proč používat SMPP API s JavaScriptem?
SMPP protokol je výkonnou volbou pro SMS komunikaci díky své spolehlivosti,
škálovatelnosti a podpoře vysokoobjemového zasílání zpráv. Použitím JavaScriptu
a Node.js mohou vývojáři vytvářet efektivní, událostmi řízené aplikace, které se
bezproblémově integrují s SMPP API. Balíček smpp
, dostupný
přes npm, zjednodušuje interakce s nízkou úrovní protokolu, což vývojářům umožňuje
soustředit se na vytváření robustních SMS aplikací.
Nastavení SMPP API klienta v JavaScriptu (Node.js) pro odesílání SMS
Než budete moci odesílat SMS zprávy pomocí SMPP API, musíte nakonfigurovat uživatelský účet SMPP a připojit se k SMPP serveru, jako je například ten poskytovaný Ozeki SMS Gateway. Tato část vysvětluje, jak nastavit prostředí a navázat připojení pomocí JavaScriptu.
Krok 1: Instalace balíčku SMPP
Pro interakci s SMPP protokolem nainstalujte balíček smpp
z
npm, který poskytuje jednoduché rozhraní pro operace SMPP API
v JavaScriptu.
npm install smpp
Krok 2: Navázání připojení
Níže je příklad, jak se připojit k SMPP serveru pomocí Node.js a
balíčku smpp
. Nahraďte your.ozeki.server
, your_username
,
a your_password
skutečnými údaji o serveru a přihlašovacími údaji.
const smpp = require('smpp'); const session = smpp.connect({ host: 'your.ozeki.server', port: 2775 }); session.on('connect', () => { console.log('Připojeno k SMPP serveru'); session.bind_transceiver({ system_id: 'your_username', password: 'your_password' }, (pdu) => { if (pdu.command_status === 0) { console.log('Úspěšně navázáno spojení s SMPP serverem'); } else { console.error('Navázání spojení selhalo:', pdu.command_status); } }); }); session.on('error', (error) => { console.error('Chyba připojení SMPP:', error); });
Ujistěte se, že je váš SMPP server dostupný a že jsou vaše přihlašovací údaje správné,
abyste předešli problémům s připojením. Metoda bind_transceiver
navazuje
obousměrné připojení pro odesílání i přijímání SMS.
Správa připojení SMPP API v Node.js pro zasílání SMS
Udržování aktivní SMPP relace vyžaduje pravidelné odesílání keep-alive zpráv
pomocí PDU enquire_link
. Tím se zajistí, že připojení zůstane otevřené
a reagující, zejména pro dlouho běžící aplikace.
const keepAliveInterval = setInterval(() => { session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive selhal:', pdu.command_status); } }); }, 30000); session.on('close', () => { clearInterval(keepAliveInterval); console.log('SMPP připojení ukončeno'); });
Tento kód odesílá enquire_link
každých 30 sekund, aby udržel relaci
aktivní, a interval vymaže při ukončení připojení.
Odesílání SMS pomocí JavaScriptu přes SMPP API (příklad pro Node.js)
Po připojení můžete odesílat SMS zprávy pomocí PDU submit_sm
.
Následující funkce v JavaScriptu ukazuje, jak odeslat SMS
pomocí 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ódování source_addr_ton: 1, // Mezinárodní formát source_addr_npi: 1, // ISDN číslovací plán dest_addr_ton: 1, // Mezinárodní formát dest_addr_npi: 1 // ISDN číslovací plán }, (pdu) => { if (pdu.command_status === 0) { console.log(`Zpráva úspěšně odeslána, message_id: ${pdu.message_id}`); } else { console.error('Odeslání zprávy selhalo:', pdu.command_status); } }); } sendSMS('12345', '+1234567890', 'Ahoj z Node.js SMPP klienta!');
Parametry data_coding
, source_addr_ton
a dest_addr_ton
zajišťují správné kódování zprávy a formátování telefonního čísla.
Upravte je podle svých požadavků.
Zpracování doručovacích zpráv SMS v JavaScriptu pomocí SMPP API
SMPP API podporuje doručovací zprávy pro potvrzení, zda byla SMS
doručena. Následující kód zpracovává příchozí PDU deliver_sm
pro zpracování 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(`Doručovací zpráva pro ${messageId}: ${status}`); session.deliver_sm_resp({ sequence_number: pdu.sequence_number }); } });
Tento kód zaznamenává stav doručení a odpovídá serveru, aby potvrdil přijetí zprávy.
Kompletní implementace SMPP API klienta v JavaScriptu (Node.js) pro odesílání SMS
Pro produkční řešení následující třída JavaScript zapouzdřuje správu připojení, odesílání zpráv a logiku opětovného připojení pro 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('Připojeno k SMPP serveru'); this.bind(); }); this.session.on('error', (error) => { console.error('Chyba připojení:', error); this.reconnect(); }); this.session.on('close', () => { console.log('Připojení ukončeno'); 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('Úspěšně navázáno spojení s SMPP serverem'); this.startKeepAlive(); } else { console.error('Navázání spojení selhalo:', pdu.command_status); this.session.close(); } }); } startKeepAlive() { this.keepAliveInterval = setInterval(() => { this.session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('Keep-alive selhal:', 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é připojení...'); 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 od kompletního SMPP klienta!') .then(messageId => console.log('ID zprávy:', messageId)) .catch(err => console.error('Chyba:', err));
Tato implementace zahrnuje zpracování chyb, automatické opětovné připojení a odesílání zpráv založené na promisách, což ji činí vhodnou pro produkční prostředí.
Doporučené postupy pro používání SMPP API s JavaScriptem
- Zpracování chyb: Implementujte robustní zpracování chyb pro správu síťových problémů a chyb serveru.
- Async/Await: Pro lepší řízení toku v asynchronních operacích používejte promisy nebo async/await.
- Fronta zpráv: Pro odesílání SMS ve vysokém objemu implementujte frontu pro správu propustnosti zpráv.
- Monitorování připojení: Průběžně monitorujte stav připojení a implementujte logiku automatického opětovného připojení.
- Kódování znaků: Zpracujte různá kódování znaků (např. GSM 7-bit, UCS-2) pro podporu mezinárodních SMS.
Závěr
Tento komplexní průvodce ukázal, jak implementovat robustního SMPP klienta pomocí JavaScriptu a Node.js pro interakci s SMPP API a Ozeki SMS Gateway. Od nastavení připojení přes odesílání SMS až po zpracování doručených zpráv, poskytnuté příklady demonstrují praktické aplikace balíčku smpp
. Pro pokročilé případy použití zvažte prozkoumání funkcí jako spojování zpráv, pokročilá schémata kódování a logování pro produkční aplikace.
Pro další podrobnosti o SMPP protokolu nebo Ozeki SMS Gateway navštivte oficiální dokumentaci nebo kontaktujte svého poskytovatele SMS brány.
More information
- Jak nastavit klientské připojení SMPP API s vaším SMSC
- Jak nastavit SMPP API server pro odesílání a příjem SMS z více aplikací
- Jak vybrat správného poskytovatele SMPP API pro vaše podnikání
- Jak odesílat SMS pomocí SMPP API na úrovni protokolu
- Jak odesílat SMS přes SMPP API pomocí Pythonu
- Jak odesílat SMS přes SMPP API pomocí Javascriptu
- Jak odesílat SMS přes SMPP API pomocí Javy
- Jak odesílat SMS přes SMPP API pomocí PHP
- Jak odeslat SMS přes SMPP API pomocí C#
- Jak odesílat SMS přes SMPP API pomocí C/Cpp
- Jak přijímat SMS pomocí SMPP API
- Jak přijmout zprávu o doručení SMS pomocí SMPP API
- SMPP API FAQ