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