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

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