Підключення по SMPP
SMPP — це постійне з'єднання з AlphaSMS: застосунок підключається один раз і тримає сесію відкритою, повідомлення йдуть нею, а звіти про доставку повертаються тією самою сесією, без жодного запиту з вашого боку.
Саме тому його обирають під рівний потік. Нічого не треба опитувати і нічого планувати: щойно оператор повідомив про повідомлення, звіт уже у вашому сокеті.
Параметри підключення
Усе, що питає SMPP-бібліотека або шлюз, в одній таблиці:
| Параметр | Значення |
|---|---|
| Протокол | SMPP 3.4 |
| Адреса без шифрування | smpp.alphasms.ua |
| Порт без шифрування | 2775 або 3700 — той самий вхід, будь-який |
| Адреса з TLS | smpp-tls.alphasms.ua |
| Порт з TLS | 2995 |
| Версії TLS | 1.2 і 1.3 |
system_id | Номер телефону, з яким ви входите в кабінет, у міжнародному форматі: 380671234567 |
password | Пароль від кабінету |
system_type | Порожньо — значення не перевіряється |
| Тип підключення | bind_transceiver: відправлення і звіти в одній сесії |
interface_version, addr_ton, addr_npi, address_range у bind | Будь-які — не використовуються |
enquire_link | Кожні 30–60 секунд, поки сесія мовчить |
Сторінки розділу в тому порядку, в якому вони знадобляться:
- ця — як підключитися;
- Відправлення — що вкладати в
submit_sm; - Звіти про доставку — що повертається і як це читати;
- Помилки та обмеження — кожна відмова і що з нею робити.
Перед підключенням
Обліковий запис має бути активним — щойно зареєстрований підключається після активації. Далі дві речі задаються на екрані налаштувань API:
- Перемикач SMPP відкриває протокол для облікового запису. Коли він вимкнений, підключення відхиляється навіть із правильним паролем.
- 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 показує ці повідомлення рядок за рядком, з тими самими статусами, що й у звітах про доставку.