Ошибки и ограничения
Подключение отклонено
После любого отклонённого bind сервер отправляет unbind и закрывает соединение. Причина — в
command_status ответа bind_resp:
| Код | Что значит | Что делать |
|---|---|---|
0x0F | Логин или пароль не совпадают | Проверьте, что system_id — номер телефона в международном формате, а пароль — от кабинета. Если оба верны — см. ниже |
0x0D | Учётной записи нельзя подключаться | Включите переключатель SMPP на экране настроек API; проверьте, что адрес, с которого вы подключаетесь, есть в поле IP-адрес, или оставьте поле пустым; убедитесь, что учётная запись активна |
0x05 | У учётной записи уже столько сессий, сколько разрешено, или это соединение уже подключено | Закройте ненужные сессии или попросите поддержку поднять лимит. Одно соединение — один bind |
0x0F при верных логине и пароле имеет ещё три причины:
- Слишком много неудачных попыток. После двадцати неудачных подключений с одного адреса или для одного логина за пять минут каждое следующее отклоняется, пока эти пять минут не пройдут, — даже с правильным паролем. Исправьте настройки, подождите и подключитесь снова.
- Учётная запись заблокирована после неудачных входов. Неудачные подключения считаются вместе с неудачными входами в кабинет; сверх лимита учётная запись перестаёт принимать пароль. Обратитесь в поддержку.
- Пароль задан ещё в старом кабинете и с тех пор не менялся. Задайте новый пароль в кабинете: подключение принимает только пароль современного типа.
0x0D может прийти и на несколько секунд во время работ на нашей стороне: если настройки
верные, подключитесь снова через минуту.
submit_sm отклонён
Эти ошибки приходят сразу в submit_sm_resp, и сообщение не принимается:
| Код | Что значит |
|---|---|
0x0A | source_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_message | 255 октетов |
| Один PDU | 64 КБ |
| Тишина с вашей стороны | Примерно три минуты без единого PDU — и сессия закрыта |
| Неудачные подключения | 20 за пять минут с одного адреса или для одного логина |
Когда что-то не работает
- Соединение не открывается. Проверьте исходящие правила своего файрвола: адреса — на странице IP-адреса. Команды на странице Подключение по SMPP покажут, доступен ли вход с вашего сервера.
- TLS не подключается. Подключайтесь по имени
smpp-tls.…, а не по адресу, и убедитесь, что клиент присылает имя (SNI): сертификат выбирается по нему. - Сессия рвётся каждые несколько минут. Отправляйте
enquire_linkкаждые 30–60 секунд. - Отчётов нет. Отчёты приходят только в сессии receiver и transceiver — сессия, подключённая
как transmitter, их не получает. Проверьте, что вы отвечаете на каждый
deliver_smи что отчёты не забирает другая сессия учётной записи.