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

Ошибки и ограничения

Подключение отклонено​

После любого отклонённого bind сервер отправляет unbind и закрывает соединение. Причина — в command_status ответа bind_resp:

КодЧто значитЧто делать
0x0FЛогин или пароль не совпадаютПроверьте, что system_id — номер телефона в международном формате, а пароль — от кабинета. Если оба верны — см. ниже
0x0DУчётной записи нельзя подключатьсяВключите переключатель SMPP на экране настроек API; проверьте, что адрес, с которого вы подключаетесь, есть в поле IP-адрес, или оставьте поле пустым; убедитесь, что учётная запись активна
0x05У учётной записи уже столько сессий, сколько разрешено, или это соединение уже подключеноЗакройте ненужные сессии или попросите поддержку поднять лимит. Одно соединение — один bind

0x0F при верных логине и пароле имеет ещё три причины:

  • Слишком много неудачных попыток. После двадцати неудачных подключений с одного адреса или для одного логина за пять минут каждое следующее отклоняется, пока эти пять минут не пройдут, — даже с правильным паролем. Исправьте настройки, подождите и подключитесь снова.
  • Учётная запись заблокирована после неудачных входов. Неудачные подключения считаются вместе с неудачными входами в кабинет; сверх лимита учётная запись перестаёт принимать пароль. Обратитесь в поддержку.
  • Пароль задан ещё в старом кабинете и с тех пор не менялся. Задайте новый пароль в кабинете: подключение принимает только пароль современного типа.

0x0D может прийти и на несколько секунд во время работ на нашей стороне: если настройки верные, подключитесь снова через минуту.

submit_sm отклонён​

Эти ошибки приходят сразу в submit_sm_resp, и сообщение не принимается:

КодЧто значит
0x0Asource_addr пустой или слишком длинный: до 11 символов для имени, до 15 цифр для номера
0x0BВ destination_addr нет цифр или их больше 20
0x45Неподдерживаемый data_coding или длина UDH не совпадает с сообщением
0x0DУчётную запись заблокировали во время сессии
0x14Временный сбой на нашей стороне — отправьте то же сообщение чуть позже
0x08Внутренняя ошибка — отправьте снова; если повторяется, обратитесь в поддержку

Всё остальное — баланс, получатель, имя отправителя, текст — проверяется уже после того, как сообщение принято, и сообщение, не прошедшее проверку, возвращается отчётом REJECTD с кодом в err:: см. Отчёты о доставке.

Чего сессия не понимает​

Сессия обрабатывает bind_transmitter, bind_receiver, bind_transceiver, submit_sm, deliver_sm_resp, enquire_link и unbind. На query_sm, cancel_sm, replace_sm, submit_multi и data_sm приходит ответ с кодом 0x03 — сессия не рвётся, но ничего не происходит. Статус сообщения приходит только в отчёте о доставке.

Ограничения​

ЧтоОграничение
Сессий на учётную записьОграничено; подключение сверх лимита получает 0x05
Неподтверждённые submit_sm (окно)Фиксированного лимита нет: PDU одного соединения обрабатываются по очереди, и каждый ответ приходит раньше, чем берётся следующий PDU
Скорость отправкиБез ограничения на сессию
Неподтверждённые отчёты на сессию20
short_message255 октетов
Один PDU64 КБ
Тишина с вашей стороныПримерно три минуты без единого PDU — и сессия закрыта
Неудачные подключения20 за пять минут с одного адреса или для одного логина

Когда что-то не работает​

  • Соединение не открывается. Проверьте исходящие правила своего файрвола: адреса — на странице IP-адреса. Команды на странице Подключение по SMPP покажут, доступен ли вход с вашего сервера.
  • TLS не подключается. Подключайтесь по имени smpp-tls.…, а не по адресу, и убедитесь, что клиент присылает имя (SNI): сертификат выбирается по нему.
  • Сессия рвётся каждые несколько минут. Отправляйте enquire_link каждые 30–60 секунд.
  • Отчётов нет. Отчёты приходят только в сессии receiver и transceiver — сессия, подключённая как transmitter, их не получает. Проверьте, что вы отвечаете на каждый deliver_sm и что отчёты не забирает другая сессия учётной записи.