Отправка/получение сообщений

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

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

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

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

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

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

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

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

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

Для отправки такого SMS укажите идентификатор согласованного шаблона в опциональном поле формата TLV. На скриншоте ниже Tag TagTemplateResourceId со свободным TagID «0x0110» (8 байт, uint64) находится в Options.

SMPP template SMS

Получить ID шаблона можно с помощью API-запроса GetTemplates или в Личном кабинете в разделе «Каналы» → «SMS» → «Шаблоны».

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

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

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

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

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

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

{
    "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"
        }
}

Получение сообщения

Так же как и отчет о доставке сообщения, входящее сообщение отправляется в PDU “deliver_sm”. Входящее сообщение будет иметь поле esm_class со значением 0x00 (Hex).

Пример отчета о входящем сообщении

{
    "esm_class":0,
    "short_message":
        {
            "message":"I'm fine!"
        }
}

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

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

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

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

Код Hex значение Decimal значение Описание
ESME_ROK 0x00000000 0 успешная отправка сообщения
ESME_RINVMSGLEN 0x00000001 1 превышена длинна сообщения
ESME_RINVSRCADR 0x0000000A 10 ошибка в номере, с которого отправляется сообщение
ESME_RINVDSTADR 0x0000000B 11 ошибка в номере, на который отправляется сообщение
ESME_RSUBMITFAIL 0x00000045 69 техническая ошибка

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

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

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

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