Вступление
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/”