Перейти к содержимому
OmniChannels.ai
Меню

API и SMPP

Как подключиться к SMS-провайдеру по SMPP?

Обновлено

Краткий ответ

Чтобы подключиться к 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 используйте, только если этого требует ваш клиент.

  1. Откройте TLS-соединение с выданными хостом и портом.
  2. Отправьте bind_transceiver с system_id и паролем и дождитесь bind_transceiver_resp со значением command_status 0.
  3. Отправляйте каждое сообщение командой submit_sm и сохраняйте message_id из submit_sm_resp.
  4. Получайте отчёты о доставке в виде deliver_sm и отвечайте на каждый из них командой deliver_sm_resp.
  5. Отправляйте enquire_link в паузах и переподключайтесь с увеличивающейся задержкой (backoff), если ответы перестали приходить.
  6. Завершайте сессию командой 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)

Официальные источники