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

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

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

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

Куди підключатися​

АдресаПорт
Без шифруванняsmpp.alphasms.net3700, 2775
TLSsmpp-tls.alphasms.net2995

Обидва порти звичайної адреси працюють однаково — беріть той, що ваша бібліотека пропонує за умовчанням. Адреса TLS має власний сертифікат, який обирається за іменем підключення, тож указуйте клієнту ім'я і залишайте перевірку сертифіката увімкненою.

Облікові дані​

Сесія використовує ваш обліковий запис кабінету:

ПолеЩо вписати
system_idЛогін кабінету
passwordПароль кабінету
system_typeЗалишити порожнім

Дві речі задаються один раз на екрані налаштувань API:

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

Підключення сесії​

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

Надсилання​

Повідомлення йдуть у submit_sm.

ПолеЩо означає тут
source_addrПідпис відправника. Зареєструйте його в кабінеті заздалегідь: сесія надсилає під підписами, погодженими для вашого облікового запису
destination_addrНомер отримувача в міжнародному форматі
data_coding0 — 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 показує ці повідомлення построково, з тими самими статусами, які несуть звіти про доставку.