Отправка смс по протоколу smpp, api для разработчиков
Одним из смс протоколов является smpp. Он описывает процесс взаимодействия получателя сообщения, то есть smpp клиента с смс сервером, используя при этом особую систему передачи данных.
Взяв за основу отсылки сообщений smpp, вы получите возможность:
- использовать различные текстовые форматы, а также wap push смс;
- отсылать не только короткие, но и длинные тексты;
- получать подробные отчеты о доставленных и отложенных смс;
- обмениваться сообщениями в двустороннем формате;
- выбирать скорость отправки.
Таким образом, протокол smpp обладает большими возможностями, которые, однако, сопряжены и с некоторыми особенностями использования и установки, которые мы и рассмотрим.
Особенности работы с smpp
Для работы с данным протоколом необходимо иметь соответствующее ПО и сервер, способный взаимодействовать с smpp. При этом оборудование должно быть постоянно подсоединено к шлюзу компании-провайдера. Для того чтобы отправка smpp смс осуществлялась быстро и без задержек, все клиенты нашей фирмы проходят тест на совместимость оборудования. Это позволяет избавиться от многих технических сложностей еще на начальном этапе.
Кроме того, перед использованием протокола для проведения рассылок, пользователи могут провести тестовую отсылку smpp sms, чтобы определиться с желаемой скоростью доставки.
Специалисты Smsorg.ru всегда готовы предоставить консультацию по вопросам использования, подключения и тестирования сервиса, что упростит вашу задачу.
Подключение по SMPP протоколу.
- system_id — зарегистрированное в системе имя пользователя вида XXXX.X
- password — пароль пользователя
- Адрес — lcab.smsorg.ru
- Порт — 8056
Поддерживаемые команды по протоколу SMPP
Команда | Описание |
BIND_TRANSMITTER | Подключиться как TRANSMITTER |
BIND_TRANSCEIVER | Подключиться как TRANSCEIVER |
SUBMIT_SM | Отправить сообщение |
QUERY_SM | Запросить статус сообщения |
DELIVER_SM | Отправка Delivery Receipt сервером |
ENQUIRE_LINK | Проверка связи |
GENERIC_NAK | Ошибочная команда |
UNBIND | Отключение |
На не поддерживаемые команды сервер будет отвечать GENERIC_NAK сообщением с кодом ошибки ESME_RINVCMDID.
Параметры отправки сообщения (SUBMIT_SM) по протоколу smpp
Параметр | Значения |
source_addr_ton | 0x01 (для номеров) или 0x00 (для остального) |
source_addr_npi | 0x01 (для номеров) или 0x05 (для остального) |
dest_addr_ton dest_addr_npi esm_class |
0x01 0x01 0x00 или 0x40 при использовании UDH |
registered_delivery data_coding |
0x00 или 0x01 0x01 - ASCII или 0x08 - UCS2 |
Правила работы с SMPP подключением
При установке подключения клиенту дается 10 секунд, что бы отправить команду BIND_TRANSMITTER или BIND_TRANSCEIVER. Иначе соединение будет разорвано сервером.
Клиент обязан отвечать на все пакеты отправленные сервером соответствующим resp пакетом в течение 1 минуты. Иначе соединение будет разорвано сервером без отсылки UNBIND.
После установки подключения и авторизации сервер будет отправлять ENQUIRE_LINK пакеты каждую минуту. На этот пакет клиент также обязан ответить в течение 1 минуты.
Получение статуса доставки сообщения
Есть две возможности получения статуса доставки по протоколу smpp (активный и пассивный). Пассивный вариант является предпочтительным.
Пассивный вариант предусматривает установку флага registered_delivery пакета SUBMIT_SM.
После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery
Receipt сообщением. Формат Delivery Receipt сообщения ниже.
Активный вариант предусматривает периодический опрос статуса сообщения отсылкой
QUERY_SM.
Формат Delivery Receipt
"id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm
stat:DDDDDDD err:E Text: . . . . . . . . ."
Поле | Описание |
id ID | сообщения |
sub dlvrd |
Количество отправленных сообщений Количество доставленных сообщений |
submit date done date |
Время отправки сообщения Время перехода сообщение в финальное состояние |
stat err |
Статус сообщения (расшифровка статусов см. ниже) Может содержать код ошибки в случае не доставки сообщения |
text | Первые 20 байт сообщения |
Статус | Описание |
delivrd | Доставлено |
expired deleted |
Не доставлено из-за истечения периода ожидания доставки Удалено |
undeliv acceptd |
Не может быть доставлено Принято на обработку |
unknown rejectd | Статус не известен (поле err может содержать код ошибки) Сообщение отвергнуто |
Зарезервированные коды ошибок при smpp соединении
Код | Описание |
0x0400 (1024) |
Кодировка не распознана |
0x0401 (1025) |
Слишком большой текст сообщения. Максимальная длина не должна превышать 160 |
байт. 0x0402 (1026) |
Ошибка регистрации сообщения на отправку. При возникновении этой ошибки обратитесь в службу поддержки. |
0x0403 (1027) |
Не прошла проверка текста сообщения на наличие недопустимых слов и/или фраз |
0x0404 (1028) |
Отправитель или получатель в черном списке |
0x0453 (1107) |
Сработало ограничение по отправке одинакового текста на один и тот же номер в течение небольшого промежутка времени. Обратитесь в поддержку, если хотите отключить или уменьшить период. |
0x043C (1084) |
Нет доступного тарифа для запрашиваемого направления. |
0x043F (1087) |
Нет подходящего тарифа у вышестоящего контрагента. |
0x045A (1114) |
Политика маршрутизации не найдена. |
0x0446 (1094) |
Ошибка транспорта. При возникновении этой ошибки обратитесь в службу поддержки. |
0x433 (1075) |
Недостаточно средств на счете. |