Перейти до основного вмісту

Підключення по SMPP

SMPP — це постійне з'єднання з AlphaSMS: застосунок підключається один раз і тримає сесію відкритою, повідомлення йдуть нею, а звіти про доставку повертаються тією самою сесією, без жодного запиту з вашого боку.

Саме тому його обирають під рівний потік. Нічого не треба опитувати і нічого планувати: щойно оператор повідомив про повідомлення, звіт уже у вашому сокеті.

Параметри підключення​

Усе, що питає SMPP-бібліотека або шлюз, в одній таблиці:

ПараметрЗначення
ПротоколSMPP 3.4
Адреса без шифруванняsmpp.alphasms.ua
Порт без шифрування2775 або 3700 — той самий вхід, будь-який
Адреса з TLSsmpp-tls.alphasms.ua
Порт з TLS2995
Версії TLS1.2 і 1.3
system_idНомер телефону, з яким ви входите в кабінет, у міжнародному форматі: 380671234567
passwordПароль від кабінету
system_typeПорожньо — значення не перевіряється
Тип підключенняbind_transceiver: відправлення і звіти в одній сесії
interface_version, addr_ton, addr_npi, address_range у bindБудь-які — не використовуються
enquire_linkКожні 30–60 секунд, поки сесія мовчить

Сторінки розділу в тому порядку, в якому вони знадобляться:

Перед підключенням​

Обліковий запис має бути активним — щойно зареєстрований підключається після активації. Далі дві речі задаються на екрані налаштувань API:

  1. Перемикач SMPP відкриває протокол для облікового запису. Коли він вимкнений, підключення відхиляється навіть із правильним паролем.
  2. IP-адреса — необов'язково. Порожнє поле — підключення приймається з будь-якої адреси. Заповнене — лише з перелічених: через кому, кожен елемент — одна адреса, діапазон IPv4 на кшталт 203.0.113.10-203.0.113.20 або блок CIDR на кшталт 203.0.113.0/24 (IPv6 теж). Це саме поле обмежує й запити до HTTP API, тож перелічіть усі сервери, що працюють з AlphaSMS.

Без шифрування чи TLS​

Обидва входи ведуть на ту саму платформу і приймають той самий обліковий запис: обирайте за тим, чого потребує ваша мережа.

  • Без шифрування — smpp.alphasms.ua, порт 2775 або 3700. Обидва порти поводяться однаково: беріть той, що стоїть у вашій бібліотеці за замовчуванням.
  • TLS — smpp-tls.alphasms.ua, порт 2995. Налаштовуйте клієнт на ім'я, а не на адресу: сертифікат обирається за ім'ям, яке надсилає клієнт (SNI), і виписаний саме на нього. Перевірку сертифіката не вимикайте. Сертифікат від Let's Encrypt і продовжується автоматично, тож не закріплюйте його — довіряйте звичайним шляхом, через системний перелік центрів сертифікації.

TLS лише обгортає ту саму SMPP-сесію; всередині сесії нічого не змінюється.

Логін і пароль​

ПолеЩо вказати
system_idНомер телефону, з яким ви входите в кабінет, у міжнародному форматі: лише цифри, + на початку ігнорується
passwordПароль від кабінету
system_typeЗалиште порожнім

Окремого пароля для SMPP немає: змініть пароль у кабінеті — і наступне підключення потребує нового. Пароль приймається будь-якої довжини, але деякі бібліотеки обрізають його до восьми символів — це межа, яку SMPP 3.4 задає для цього поля. Якщо ваша не приймає довший пароль, пошукайте налаштування, що знімає перевірку.

Типи підключення​

Приймаються всі три: bind_transmitter, bind_receiver і bind_transceiver. Одне підключення — один bind: щоб і надсилати, і отримувати, підключайтеся як transceiver або відкрийте друге з'єднання як receiver. Кількість одночасних сесій на обліковий запис обмежена: підключення понад ліміт відхиляється з кодом 0x05.

Звіти приходять у сесії receiver і transceiver облікового запису — у будь-яку з них, не обов'язково в ту, через яку надіслано повідомлення.

Як тримати сесію​

Надсилайте enquire_link кожні 30–60 секунд, поки більше нічого надсилати. Сервер сам enquire_link не шле і не потребує цього від вас: він дивиться, що надходить від вас, і приблизно після трьох хвилин без жодного PDU з вашого боку закриває сесію — надсилає unbind і розриває з'єднання. З регулярним enquire_link сесія живе стільки, скільки її тримає ваш застосунок: дні й тижні — це норма. unbind закриває її коректно.

Якщо з'єднання обірвалося, підключіться знову. Звіти, які ви не підтвердили, не губляться: вони зберігаються десять днів і приходять наступною сесією.

Якщо обліковий запис заблоковано або перемикач SMPP вимкнено, відкриті сесії закриваються протягом тридцяти секунд.

Перевірка з'єднання​

Перш ніж налаштовувати бібліотеку, перевірте, що вхід досяжний з вашого сервера. Перша команда відкриває з'єднання без шифрування, друга — з TLS і показує сертифікат: його ім'я має бути smpp-tls.alphasms.ua:

nc -vz smpp.alphasms.ua 2775
openssl s_client -connect smpp-tls.alphasms.ua:2995 -servername smpp-tls.alphasms.ua </dev/null | openssl x509 -noout -subject -enddate

Якщо обидві відповідають, а підключення все одно відхиляється, причина — у command_status відповіді bind_resp: див. Помилки та обмеження.

Усе, що надіслано по SMPP, потрапляє в ті самі звіти, що й решта: у кабінеті звіт про відправлення через API і SMPP показує ці повідомлення рядок за рядком, з тими самими статусами, що й у звітах про доставку.