Отправка сообщений

После установки соединения и аутентификации вы можете отправлять сообщения на SMPP-сервер.

При отправке сообщения командой submit_sm установите в PDU следующие параметры:

КомандаОписание/Значение
source_addrномер отправителя
destination_addrномер получателя
short_message/payloadтекст сообщения
registered_deliveryиндикатор запроса уведомлений. Установите значение “1”, если вам необходимо получать уведомления о доставке в SMSC
data_codingкодировка текста (0x00 - GSM7; 0x08 - UCS2)

Подробнее о команде submit_sm и дополнительных параметрах вы можете прочитать в спецификации SMPP-протокола 3.4 в разделе 4.4 (стр 58).

Способы передачи текста сообщения

SMPP-сервер поддерживает два способа передачи сообщений: “short_message” и “payload”. Используйте только один из этих параметров при отправке сообщения. Требования по отправке сообщений через каждый параметр вы можете найти в статье “Требования к отправке сообщения”.

Отправка шаблонных сообщений

По SMPP можно отправить персонализированные сервисные, авторизационные или транзакционные SMS от имени отправителя. Для этого зарегистрируйте имя и шаблонный текст сообщения у нужных операторов. Подробнее о шаблонах можно узнать в этой статье.

Для отправки шаблонированного SMS не нужно указывать идентификатор шаблона. Подходящий шаблон будет найден и использован во время отправки при условии согласования операторами и соответствия текста SMS шаблону.

Отчет о доставке сообщения

Отчет о доставке запрашивается установкой registered_delivery=1 в команде submit_sm. Если параметр не установлен, отчет о доставке не гарантируется.

При запросе отчет отправляется в PDU “deliver_sm” в подключении transceiver или receiver. Отчет о доставке сообщения будет иметь поле esm_class со значением 0x04 (Hex).

На каждый полученный от SMSC PDU deliver_sm ESME должно отправить подтверждение о получении deliver_sm_resp со статусом 0 (OK).

В поле short_message будет передана информация отчета, со следующими полями:

ПараметрОписание/Значение
idmessage_id, полученный в ответе submit_sm_resp. Для составного сообщения сегменты имеют связанные идентификаторы: базовый ID для первого сегмента и суффиксы _2, _3 и т.д. для следующих
subколичество отправленных сегментов сообщений
dlvrdколичество успешно доставленных сообщений
submit dateдата и время запроса на отправку сообщения
done dateдата и время отправки сообщения
statкод состояния доставки. Описание кодов вы можете найти в спецификации SMPP-протокола 3.4 в разделе Appendix B (стр 168)
errкод ошибки, если доставка не удалась
textнеобязательный параметр, может быть пустым

Пример отчета о доставке

{
    "esm_class":4,
    "short_message":
        {
            "message": "id:456846948280827906 sub:001 dlvrd:001 submit date:2304181526 done date:2304181526 stat:DELIVRD err:0 text:Hello! How"
        }
}

Ошибки отправки сообщения

Если сообщение не отправилось, SMSC может передать код ответа в PDU submit_sm_resp или в PDU deliver_sm в виде отчёта о доставке. Даже если сообщение принято к отправке, доставка SMS не гарантирована.

Типичные коды ошибок в submit_sm_resp

Коды ошибок передаются в поле command_status.

КодHex значениеDecimal значениеОписание
ESME_ROK0x000000000сообщение принято шлюзом
ESME_RINVMSGLEN0x000000011превышена длинна сообщения
ESME_RINVSRCADR0x0000000A10ошибка в номере, с которого отправляется сообщение
ESME_RINVDSTADR0x0000000B11ошибка в номере, на который отправляется сообщение
ESME_RSUBMITFAIL0x0000004569техническая ошибка

Больше статусов неудачных отправок сообщений вы можете найти в спецификации SMPP-протокола 3.4 в разделе 5.1.3 (стр 112).

Коды ошибок в отчетах о доставке deliver_sm

Коды ошибок передаются в short_message в поле err.

Код ошибкиОписание/Значение
0сообщение доставлено успешно
301ошибка при резервации
401недостаточно средств на счету
501ошибка отправки сообщения
601ошибка при оплате
701ошибка доставки