Отправка/получение сообщений
Отправка сообщения
После установки соединения и аутентификации вы можете отправлять сообщения на 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
.
Получить 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 | ошибка доставки сообщения |