Рубрики
Без рубрики

Как отправить SMS в Node.js через шлюз SMPP

Введение MPP (короткое сообщение Peer-To-Peer) является протоколом, используемым телекоммуникационной отраслью. Это обменяет SMS-сообщения между (SMSC) и ESME. SMSC выступает в качестве посредника для хранения сообщения и маршрута его. ESME – это система, которая обеспечивает SMS для SMSC. Этот учебник поможет вам отправить SMS-сообщения, используя

Вступление

SMPP (Colled Message Peer-To-Peer) является протоколом, используемым телекоммуникационной отраслью. Это обменяет SMS-сообщения между (SMSC) и ESME. SMSC выступает в качестве посредника для хранения сообщения и маршрута его. ESME – это система, которая обеспечивает SMS для SMSC.

Этот учебник поможет вам отправлять SMS-сообщения, используя свой собственный шлюз SMSC.

Начиная

Где используется SMPP?

SMPP особенно подходит для высокоместичных и высокопроизводительных SMS-приложений. Он имеет следующие особенности:

  • Соединения, установленные клиентом с сервером, являются постоянными и могут быть открыты на неопределенный срок. Там нет накладных расходов соединений с такими протоколами, как HTTP, используемый переходные соединения.
  • Запросы могут быть выданы клиентом SMPP, а также сервером SMPP.
  • Запросы обрабатываются асинхронно. Это означает, что запросы могут быть выданы без необходимости сначала ждать ответов на более ранние запросы, которые необходимо получить.

Как это использовать

Мы будем использовать Node.js Node-SMPP для реализации.

SMPP Запросы:

  • Bind Запрос на создание сеанса SMPP
  • Submit_sm Запросы, выданные клиентом для отправки сообщений на мобильный телефон
  • fait_sm Запросы, выданные сервером для пересылки сообщений с мобильного телефона к клиенту, включая поступления доставки
  • Enquire_Link Запросы, выданные как сервером, так и клиентом, чтобы сохранить сеанс SMPP
  • Развивать Запрос, выданный либо сервером, либо клиентом для завершения сеанса SMPP

Как это работает

Сеанс SMPP должен быть установлен между ESME (внешние объекты короткого обмена сообщениями) и центром сообщений или объектом маршрутизации SMPP, где это уместно.

Этот сеанс создан с использованием клиента SMPP, который связывается с протоколом SMPP. Существует непрерывный обмен PDU SMPP PDU (блоки или пакеты по протоколу), чтобы обеспечить установление правильного связывания/соединения.

Клиент SMPP заботится о SMS и обеспечивает их на сервере SMPP. Сервер SMPP также передает Доставка отчет Вернуться к клиенту, когда происходит изменение статуса для SMS.

Node.js поможет нам добиться высоких депутатов, поскольку он выполняет все операции ввода/вывода асинхронно.

Традиционно операции ввода/вывода либо запускаются синхронно (блокируя) или асинхронно, нерезив параллельные потоки для выполнения работы.

Этот старый подход потребляет много памяти и общеизвестно сложно программировать.

Напротив, когда приложение узла необходимо выполнить операцию ввода/вывода, она отправляет асинхронную задачу на петлю события вместе с функцией обратного вызова. Затем он продолжает выполнять остальную часть своей программы.

Когда операция ASYNC завершается, цикл события возвращает задачу, чтобы выполнить свой обратный вызов.

Магазин и передовый режим сообщений

Обычный подход к SMS должен был хранить сообщение в области хранения SMSC (например, база данных сообщений), прежде чем пересылать сообщение для доставки в МСП получателя. С этой моделью сообщение остается надежно сохраненным до тех пор, пока все попытки доставки не будут сделаны SMSC. Этот режим обмена сообщениями обычно называют «магазином и вперед».

Шаг 1: Создать сеанс SMPP

Вначале нам нужно создать новый SMPP сеанс с IP-адресом и портом.

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

Шаг 2: Привязка приема

Как только он подключится, мы свяжем это на соединить мероприятие:

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;
});

Шаг 3: Отправить SMS

Так что теперь мы связаны, давайте отправим 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);
      }
  });
}

Теперь после отправки SMS SMSC отправит отчет о доставке, что сообщение было доставлено.

Я надеюсь, что вы найдете этот учебник полезным. Не стесняйтесь добраться до из Если у вас есть вопросов.

Дальнейшее чтение:

Если вы хотите узнать больше о SMPP, вытекаете: http://opensmpp.org/specifications.html.

Не стесняйтесь хлопать, если вы считаете это стоящим чтением!

Следуйте за Шайлешем Шехаватом, чтобы получить уведомление всякий раз, когда я публикую новый пост.

Первоначально опубликовано 101node.io 16 сентября 2018 года.

Оригинал: “https://www.freecodecamp.org/news/how-to-send-an-sms-in-node-js-via-smpp-gateway-9c7b12e4600a/”