Сервис получения статусов доставки#

Специфика передачи отчётов доставки#

Сервис-провайдер передаёт Партнёру статус доставки и дату прочтения отдельными пакетами deliver_sm.

При необходимости, в состав пакета deliver_sm могут быть включены дополнительные TLV-параметры, содержащие расширенную информацию о сообщении.

Статус доставки сообщения передаётся в TLV-параметре message_state.

Важно

Для SMS-сообщений, отправленных абонентам оператора Мегафон, с 01.03.2023 прекращена передача статусов DELIVRD(2) и UNDELIV(5).

Количество отчётов о доставке сообщений, которое Сервис-провайдер отправит Партнёру, зависит от сценария и настроенного режима доотправки (см. TLV-параметры запроса).

В таблице приведены примеры для ситуации, когда настроена комбинация отправки VK → SMS.

Сценарий

Режим доотправки

Примечание

VK-сообщение было доставлено до абонента, затем прочитано абонентом в пределах времени жизни сообщения.

N — не производить доотправку

Будут переданы два отчета:

  1. VK-сообщение доставлено.

  2. VK-сообщение прочитано.

За время жизни VK-сообщения Сервис-провайдер не получил от VK ни одного статуса.

N — не производить доотправку

Отчёты не передаются.

VK-cообщение не доставлено до абонента (Сервис-провайдер получил ошибку от VK).

N — не производить доотправку

Будет передан один отчёт: VK-сообщение не доставлено.

Y — производить доотправку по получению статуса недоставлено

Будет передан один отчёт: SMS-сообщение доставлено или не доставлено.

VK-сообщение было доставлено до абонента, но не было прочитано абонентом в пределах времени жизни сообщения.

S — то же, что и Y, плюс производить доотправку по неполучению статуса просмотрено в течение срока жизни сообщения

Будут переданы два отчета:

  1. VK-сообщение доставлено.

  2. SMS-сообщение доставлено или не доставлено.

Настройки для получения статусов#

Для получения уведомления о статусах доставки сообщений необходимо при отправке пакета submit_sm указать параметр registered_delivery = 1.

Для отправки отчёта о доставке от платформы Сервис-провайдера к сервису Партнёра используется пакет deliver_sm с параметром esm_class = 0x04. Формат пакета соответствует спецификации SMPP 3.4, Appendix B.

Количество логических частей сообщения является расчётной величиной, вычисляемой внутри платформы Сервис-провайдера, поэтому на каждый полученный пакет submit_sm будет отправлен только один пакет deliver_sm.

Количество логических частей указывается в поле sub пакета deliver_sm. В случае, если разбивка длинного сообщения производилась на стороне Партнёра, то в каждом поле sub соответствующего deliver_sm будет указано количество логических частей для всего (целого) сообщения.

Передаваемые параметры#

В таблице приведены параметры пакета deliver_sm, передаваемого от Сервис-провайдера Партнёру.

Параметр

Тип

Описание

source_addr

string

Телефон абонента.

dest_addr

string

Сервисное имя.

short_message

string

Отчёт о прочтении.

Подробнее

Отчёт о доставке/прочтении сообщения формируется в виде строки: id: IIIIIIIIII sub: SSS dlvrd: DDD submit date: YYMMDDhhmm done date:YYMMDDhhmm stat: DDDDDDD seen date: YYMMDDhhmm err: E text: ...

esm_class

string

При передаче уведомления о статусе доставки esm_class = 4.

Дополнительные TLV-параметры#

TLV-параметр

Поле

Размер (октетов)

Тип

Описание

receipted_message_id

Tag

2

Integer

id = 0x001E

Length

2

Integer

Длина параметра в октетах.

Value

1 — 65

Octet String

Идентификатор сообщения на стороне Сервис-провайдера.

message_state

Tag

2

Integer

id = 0x0427

Length

2

Integer

Длина параметра в октетах.

Value

1

Integer

Статус доставки сообщения.

Подробнее

Возможные значения:

  • ENROUTE(1) — сообщение отправлено;
  • DELIVRD(2) — сообщение доставлено;
  • EXPIRED(3) — сообщение удалено из очереди по истечении времени жизни;
  • DELETED(4) — сообщение удалено;
  • UNDELIV(5) — все остальные случаи недоставки;
  • ACCEPTD(6) — сообщение принято платформой для последующей передачи абоненту;
  • UNKNOWN(7) — платформа Сервис-провайдера в течение установленного времени не получила ответа от оператора;
  • REJECTD(8) — сообщение отклонено на этапе отправки (текст сообщения не прошел модерацию).

Если сообщение прочитано абонентом, Партнёру передается статус DELIVRD с дополнительным TLV-параметром seen_date в формате YYMMDDhhmm.

message_type

Tag

2

Integer

id = 0x1440

Length

2

Integer

Длина параметра в октетах.

Value

6 или 4

Octet String

Тип сообщения.

Подробнее

Возможные значения:

  • VIBER;
  • VK;
  • SMS;
  • FLASHINGCALL;
  • PUSH.

Значение оканчивается 0x00 байтом.

seen_date

Tag

2

Integer

id = 0x1441

Length

2

Integer

Длина параметра в октетах.

Value

13

Octet String

Дата прочтения сообщения в формате YYMMDDhhmm.

Подробнее

Значение оканчивается 0x00 байтом.

ptag

Tag

2

Integer

id = 0x1411

Length

2

Integer

Длина параметра в октетах.

Value

до 50

Octet String

Идентификатор сообщения в системе Партнёра.

Подробнее

Может содержать от 1 до 50 символов.

Допустимые символы: 0...9a...zA...Z-.

Это может быть любой идентификатор в системе Партнёра.

Например, уникальный идентификатор сообщения или идентификатор подразделения, инициирующего запрос на отправку.

Сервис-провайдер не контролирует значения, переданные в параметре ptag (проверяется только соответствие формату).

Описание кодов ошибок (поле err)#

Если сообщение не доставлено, вместе со статусом недоставки в поле err передается расширенный код ошибки с описанием причины недоставки.

В разделе приведено описание ошибок при отправке сообщений разных типов.

Код

Описание ошибки

1

В процессе доставки сообщения произошла неизвестная платформе ошибка, либо оператор не предоставил ошибку в отчете о доставке.

2

Аппарат абонента был выключен или находился вне зоны действия сети на протяжении всего времени попыток доставки сообщения.

3

Аппарат абонента заблокирован, либо у абонента включен запрет на прием сообщений, либо абонент находится в роуминге с включенным запретом на прием сообщений в роуминге.

4

В процессе доставки сообщения произошла ошибка на транспортном уровне сигнальной сети.

5

Память телефона абонента переполнена.

6

У абонента не подключена услуга приема сообщений.

7

Коммутационное оборудование, на котором зарегистрирован абонент, не отвечает.

8

Некорректный номер абонента, либо телефон абонента был выключен на протяжении очень долгого периода времени.

9

Сообщение было отброшено платформой, так как сработал механизм отсечения дубликатов сообщений.

10

Сообщение было отброшено платформой, так как сработал один из фильтров сообщений, например, спам-фильтр.

11

Ошибка маршрутизации в конфигурации платформы.

12

Номер абонента находится в чёрном списке оператора.

13

Отправка сообщения с незарегистрированного у оператора имени отправителя.

14

На стороне оператора сработал СПАМ-фильтр по тексту сообщения.

16

В момент доставки сообщения телефон был занят приёмом или передачей другого короткого сообщения.

18

Во время отправки сообщения один или несколько параметров были указаны неверно или не указаны обязательные параметры.

20

Телефон абонента не принимает сообщение.

28

Отправка сообщения идет на номер другого оператора сотовой связи.