Краткий ответ
Чтобы подключиться к SMS-провайдеру по SMPP, запросите bind и зарегистрируйте исходные IP-адреса, затем откройте TLS-соединение с выданными хостом и портом. Отправьте bind_transceiver со своими system_id и паролем, передавайте сообщения командой submit_sm, подтверждайте каждый отчёт о доставке (DLR) deliver_sm и регулярно отправляйте enquire_link, чтобы сессия оставалась активной.
Что вам выдаёт провайдер
Доступ по SMPP, как правило, настраивает провайдер, а не вы сами. Сообщите ему страны назначения, имена отправителя (альфа-имена), ожидаемый пиковый объём и публичные IP-адреса, с которых вы будете подключаться.
| Параметр | Что это |
|---|---|
| Хост и TLS-порт | Адрес, к которому подключается ваш клиент |
| system_id и пароль | Учётные данные для bind; храните их как секреты |
| system_type | Обычно пустое значение, если провайдер не задаёт своё |
| Bind-сессии и пропускная способность | Сколько сессий можно открыть и какая скорость согласована на один bind |
| Список разрешённых IP (allow-list) | Выполнить bind могут только зарегистрированные исходные IP-адреса |
Как открыть сессию и работать в ней
Bind типа transceiver отправляет и принимает сообщения в одной сессии. Отдельные bind-сессии transmitter и receiver используйте, только если этого требует ваш клиент.
- Откройте TLS-соединение с выданными хостом и портом.
- Отправьте bind_transceiver с system_id и паролем и дождитесь bind_transceiver_resp со значением command_status 0.
- Отправляйте каждое сообщение командой submit_sm и сохраняйте message_id из submit_sm_resp.
- Получайте отчёты о доставке в виде deliver_sm и отвечайте на каждый из них командой deliver_sm_resp.
- Отправляйте enquire_link в паузах и переподключайтесь с увеличивающейся задержкой (backoff), если ответы перестали приходить.
- Завершайте сессию командой unbind и дождитесь unbind_resp.
Какие поля submit_sm чаще всего вызывают отказы?
- source_addr_ton и source_addr_npi: 5 и 0 для альфа-имени, 1 и 1 для международного номера.
- destination_addr: код страны плюс номер, без знака плюс и ведущих нулей.
- data_coding: 0 для стандартного алфавита GSM-7, 8 для UCS-2 (арабский, эмодзи и другие алфавиты).
- registered_delivery: 1, чтобы запросить отчёт о доставке.
- short_message вмещает до 254 октетов; для более длинного текста используйте TLV message_payload при sm_length 0, но никогда не применяйте оба варианта одновременно.
Типичные ошибки bind и submit
OmniChannels.ai настраивает bind-сессии SMPP 3.4 по TLS отдельно для каждого аккаунта, с внесением исходных IP-адресов в allow-list. Реселлеры и оптовые партнёры могут получить выделенные bind-сессии.
| command_status | Вероятная причина | Решение |
|---|---|---|
| ESME_RBINDFAIL | Неверный system_id или IP-адрес не внесён в allow-list | Проверьте учётные данные и исходный IP |
| ESME_RINVPASWD | Неверный пароль | Проверьте учётные данные |
| ESME_RINVSRCADR | Имя отправителя или его TON/NPI указаны неверно | Исправьте имя отправителя и TON/NPI |
| ESME_RTHROTTLED | Отправка быстрее согласованной скорости | Снизьте скорость и повторите отправку с увеличивающейся задержкой (backoff) |
