So senden Sie eine SMS in Node.js über SMPP Gateway

Einführung

SMPP (Short Message Peer-to-Peer) ist ein Protokoll, das von der Telekommunikationsbranche verwendet wird. Es tauscht SMS-Nachrichten zwischen (SMSC) und ESME aus. SMSC fungiert als Vermittler, um die Nachricht zu speichern und weiterzuleiten. ESME ist das System, das SMS an SMSC übermittelt.

Dieses Tutorial hilft Ihnen beim Senden von SMS-Nachrichten über Ihr eigenes SMSC-Gateway.

Loslegen

Wo wird SMPP eingesetzt?

SMPP eignet sich besonders für SMS-Anwendungen mit hohem Volumen und hohem Durchsatz. Es hat die folgenden Funktionen:

  • Vom Client hergestellte Verbindungen zum Server sind dauerhaft und können auf unbestimmte Zeit geöffnet bleiben. Bei Protokollen wie HTTP, die vorübergehende Verbindungen verwenden, ist kein Verbindungsaufwand zu verzeichnen.
  • Anforderungen können sowohl vom SMPP-Client als auch vom SMPP-Server ausgegeben werden.
  • Anfragen werden asynchron verarbeitet. Dies bedeutet, dass Anforderungen ausgegeben werden können, ohne zuerst auf Antworten auf frühere Anforderungen warten zu müssen.

Wie man es benutzt

Wir werden Node.js node-smpp für die Implementierung verwenden.

SMPP-Anfragen:

  • Bindungsanforderung zum Einrichten der SMPP-Sitzung
  • submit_sm- Anforderungen des Clients zum Senden von Nachrichten an ein Mobiltelefon
  • Auslieferungsanforderungen vom Server zum Weiterleiten von Nachrichten vom Mobiltelefon an den Client, einschließlich Zustellbelegen
  • enquire_link- Anforderungen, die sowohl vom Server als auch vom Client ausgegeben werden, um die SMPP-Sitzung am Leben zu erhalten
  • Entbinden Sie die vom Server oder vom Client ausgegebene Anforderung, die SMPP-Sitzung zu beenden

Wie es funktioniert

Eine SMPP-Sitzung muss zwischen der ESME (External Short Messaging Entities) und gegebenenfalls dem Message Center oder der SMPP Routing Entity eingerichtet werden.

Diese Sitzung wird mit einem SMPP-Client erstellt, der mit einem SMPP-Protokoll kommuniziert. Es findet ein kontinuierlicher Austausch der SMPP-PDU (Protocol Data Units oder Packets) statt, um sicherzustellen, dass eine ordnungsgemäße Bindung / Verbindung hergestellt wird.

Der SMPP-Client kümmert sich um die SMS und sendet sie an den SMPP-Server. Der SMPP-Server sendet auch einen Übermittlungsbericht an den Client zurück, wenn sich der Status einer SMS ändert.

Node.js hilft uns dabei, eine hohe MPS zu erreichen, da alle E / A-Vorgänge asynchron ausgeführt werden.

Traditionell werden E / A-Vorgänge entweder synchron (Blockieren) oder asynchron ausgeführt, indem parallele Threads erzeugt werden, um die Arbeit auszuführen.

Dieser alte Ansatz verbraucht viel Speicher und ist bekanntermaßen schwer zu programmieren.

Wenn eine Knotenanwendung dagegen eine E / A-Operation ausführen muss, sendet sie eine asynchrone Aufgabe zusammen mit einer Rückruffunktion an die Ereignisschleife. Anschließend wird der Rest des Programms fortgesetzt.

Wenn der asynchrone Vorgang abgeschlossen ist, kehrt die Ereignisschleife zur Task zurück, um ihren Rückruf auszuführen.

Nachrichtenmodus speichern und weiterleiten

Der herkömmliche Ansatz für SMS bestand darin, die Nachricht in einem SMSC-Speicherbereich (z. B. einer Nachrichtendatenbank) zu speichern, bevor die Nachricht zur Zustellung an das Empfänger-KMU weitergeleitet wurde. Bei diesem Modell bleibt die Nachricht sicher gespeichert, bis alle Zustellungsversuche vom SMSC durchgeführt wurden. Diese Art der Nachrichtenübermittlung wird üblicherweise als "Speichern und Weiterleiten" bezeichnet.

Schritt 1: Erstellen Sie eine SMPP-Sitzung

Zu Beginn müssen wir eine neue smppSitzung mit IP-Adresse und Port erstellen .

const smpp = require('smpp'); const session = new smpp.Session({host: '0.0.0.0', port: 9500});

Schritt 2: Transceiver binden

Sobald es eine Verbindung herstellt, werden wir es bei connectEreignis binden :

let isConnected = false session.on('connect', () => { isConnected = true; session.bind_transceiver({ system_id: 'USER_NAME', password: 'USER_PASSWORD', interface_version: 1, system_type: '380666000600', address_range: '+380666000600', addr_ton: 1, addr_npi: 1, }, (pdu) => { if (pdu.command_status == 0) { console.log('Successfully bound') } }) }) session.on('close', () => { console.log('smpp is now disconnected') if (isConnected) { session.connect(); //reconnect again } }) session.on('error', error => { console.log('smpp error', error) isConnected = false; });

Schritt 3: SMS senden

Nun sind wir verbunden. Senden wir die SMS:

function sendSMS(from, to, text) { from = `+${from}` // this is very important so make sure you have included + sign before ISD code to send sms to = `+${to}` session.submit_sm({ source_addr: from, destination_addr: to, short_message: text }, function(pdu) { if (pdu.command_status == 0) { // Message successfully sent console.log(pdu.message_id); } }); }

Nach dem Senden der SMS sendet SMSC den Zustellungsbericht, dass die Nachricht zugestellt wurde.

Ich hoffe, Sie finden dieses Tutorial hilfreich. Wenn Sie Fragen haben, können Sie sich gerne an uns wenden.

Weiterführende Literatur:

Wenn Sie mehr über SMPP erfahren möchten, besuchen Sie: //opensmpp.org/specifications.html

Zögern Sie nicht zu klatschen, wenn Sie dies für eine lohnende Lektüre halten!

Folgen Sie Shailesh Shekhawat, um benachrichtigt zu werden, wenn ich einen neuen Beitrag veröffentliche.

Ursprünglich veröffentlicht am 16. September 2018 bei 101node.io.