Перейти к основному содержимому

Подключение по 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 показывает эти сообщения построчно, с теми же статусами, что несут отчёты о доставке.