Підключення по SMPP
SMPP — це постійне з'єднання з SMS-Docs: застосунок підключається один раз і тримає сесію відкритою, повідомлення йдуть нею, а звіти про доставку повертаються тією самою сесією, без жодного запиту з вашого боку.
Саме тому його обирають під рівний потік. Нічого не треба опитувати і нічого планувати: щойно оператор повідомив про повідомлення, звіт уже у вашому сокеті.
Куди підключатися
| Адреса | Порт | |
|---|---|---|
| Без шифрування | smpp.alphasms.net | 3700, 2775 |
| TLS | smpp-tls.alphasms.net | 2995 |
Обидва порти звичайної адреси працюють однаково — беріть той, що ваша бібліотека пропонує за умовчанням. Адреса TLS має власний сертифікат, який обирається за іменем підключення, тож указуйте клієнту ім'я і залишайте перевірку сертифіката увімкненою.
Облікові дані
Сесія використовує ваш обліковий запис кабінету:
| Поле | Що вписати |
|---|---|
system_id | Логін кабінету |
password | Пароль кабінету |
system_type | Залишити порожнім |
Дві речі задаються один раз на екрані налаштувань API:
- SMPP — перемикач, який відкриває протокол для облікового запису.
- IP-адреса — впишіть її, і сесія приймається лише з цієї адреси. Залишите порожнім — приймається з будь-якої адреси, де знають пароль.
Підключення сесії
Приймаються всі три види підключення: bind_transmitter, bind_receiver і
bind_transceiver. Одне підключення на з'єднання — щоб надсилати і приймати одночасно,
підключайтеся як transceiver або відкрийте друге з'єднання приймачем.
Надсилання
Повідомлення йдуть у submit_sm.
| Поле | Що означає тут |
|---|---|
source_addr | Підпис відправника. Зареєструйте його в кабінеті заздалегідь: сесія надсилає під підписами, погодженими для вашого облікового запису |
destination_addr | Номер отримувача в міжнародному форматі |
data_coding | 0 — GSM 7-bit, 1 — ASCII, 3 — Latin-1, 8 — UCS-2 |
registered_delivery | Запросити звіт про доставку |
validity_period | Скільки часу повідомлення має сенс доставляти |
schedule_delivery_time | Надіслати пізніше, а не зараз |
Довжина і частини. Одиночне повідомлення вміщає 160 символів у GSM 7-bit і 140 октетів
у UCS-2; у складеному повідомленні частина вміщає 153 і 134. Зрозумілі обидва способи
розбивки — UDH усередині тіла повідомлення і поля sar_msg_ref_num /
sar_total_segments / sar_segment_seqnum, — а частини рахуються так само, як і всюди в
кабінеті, тож число у вашому звіті збігається з числом у рахунку.
submit_sm_resp повертає message_id. Збережіть його: звіт про доставку цього
повідомлення прийде з тим самим значенням.
Звіти про доставку
Звіти приходять як deliver_sm у стандартному вигляді:
id:0199ab45-6c7d-7e8f-9012-3456789abcde sub:001 dlvrd:001 submit date:2609171432 done date:2609171433 stat:DELIVRD err:000 text:
id: — це message_id із submit_sm_resp, а stat: — результат:
stat: | Що сталося |
|---|---|
DELIVRD | Оператор підтвердив доставку на телефон |
ENROUTE | У дорозі, результат поки невідомий |
ACCEPTD | Прийнято оператором |
EXPIRED | Термін життя минув раніше, ніж телефон повернувся в мережу |
UNDELIV | Оператор не доставив |
REJECTD | Повідомлення не прийнято до надсилання |
DELETED | Повідомлення скасовано |
UNKNOWN | Оператор не повідомив результат |
На кожен звіт відповідайте deliver_sm_resp. Одночасно в дорозі тримається до двадцяти
звітів, а наступні йдуть одразу, щойно ви підтвердите вже надіслані.
Як тримається сесія
Надсилайте enquire_link на тихій сесії — раз на хвилину достатньо, — і сесія живе
стільки, скільки її тримає ваш застосунок. unbind закриває її акуратно.
Що розуміє сесія
| PDU | |
|---|---|
bind_transmitter, bind_receiver, bind_transceiver | Відкрити сесію |
submit_sm | Надіслати повідомлення |
deliver_sm | Звіти про доставку і вхідні повідомлення, від нас до вас |
deliver_sm_resp | Ваше підтвердження звіту |
enquire_link | Підтримати сесію |
unbind | Закрити сесію |
Усе надіслане по SMPP потрапляє в ті самі звіти, що й решта: звіт про відправлення через API і SMPP показує ці повідомлення построково, з тими самими статусами, які несуть звіти про доставку.