Получение статусов доставки сообщений

Получение статусов доставки сообщений#

Есть две возможности получения статуса доставки (активный и пассивный).

Пассивный вариант предусматривает установку флага registered_delivery пакета SUBMIT_SM. После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery Receipt сообщением.

Чтобы запросить отчёт о доставке, для пакета SUBMIT_SM нужно установить флаг registered_delivery=0x01. В ответ SMSC отправляет пакет DELIVER_SM, содержащий поле short_message c отчётом о доставке.

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

(deliver_sm: 187 0x00000005 0 5018878) (body: (serviceType [] sourceAddr [1 1 [msisdn]] destAddr [5 0 [SenderName]] esmCls [0x04] regDlvry [0x00] dcs [0x00] message [id:6166f5d3de004fbb sub:001 dlvrd:001 submit date:2212150751 done date:2212150751 stat:DELIVRD err:000 text:])) (opts: (receipted_message_id: 0x001E 17 [6166f5d3de004fbb]) (message_state: 0x0427 1 [2]))

Подробное описание параметров, входящих в отчёт, приведено в таблице ниже.

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

Параметр

Описание

serviceType

Параметр для указания SMS Application service

sourceAddr

Номер абонента

destAddr

Имя отправителя

esmCls

Специальные атрибуты сообщения

regDlvry

Параметр для запроса уведомления о доставке SMSC

dcs

Кодировка сообщения

id

ID сообщения

sub

Количество отправленных сообщений

dlvrd

Количество доставленных сообщений

submit date

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

done date

Время финализации сообщения

stat

Статус сообщения(dlvrd - доставлено или undeliv - не доставлено)

err

Код ошибки (при наличии)

text

Состояние сообщения (промежуточное или финализированное)

tlv

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

Описание дополнительных параметров

Значение параметраПараметрОписание
1059network_error_codeПараметр network_error_code используется, чтобы указать код фактической сетевой ошибки для неудачи доставки.
1063message_stateSMSC использует данный параметр в PDU deliver_sm и data_sm, чтобы передать конечное состояние сообщения для SMSC Delivery Receipt. Описание состояний представлено в таблице ниже.
30receipted_message_idПараметр receipted_message_id указывает ID сообщения, которое принимается в SMSC Delivery Receipt.

Описание состояний message_state

Код

Состояние сообщения

Описание

1

ENROUTE

Сообщение находится в состоянии отправки

2

DELIVERED

Сообщение доставлено адресату

3

EXPIRED

Истек период допустимой отправки сообщения

4

DELETED

Сообщение было удалено

5

UNDELIVERABLE

Сообщение является не доставляемым

6

ACCEPTED

Сообщение находится в принятом состоянии

7

UNKNOWN

Сообщение находится в неизвестном состоянии

8

REJECTED

Сообщение находится в отклоненном состоянии

Получение статусов многосоставных сообщений

При отправке многосоставного сообщения SMSC сразу возвращает реальные статусы доставки для каждой части сообщения.

На каждый пакет submit от клиента отправляется sumbit_resp, далее передается пакет deliver с конечным статусом клиенту на каждую часть сообщения.

Пример deliver пакета:

(deliver: (pdu: 0 5 0 1774484) (addr: 1 1 msisdn) (addr: 5 0 SenderName) (sm: enc: UTF-8 msg: id:6166f5d3de004fbb sub:001 dlvrd:001 submit date:2110131805 done date:2110131806 stat:DELIVRD err:000 text:<r:FINAL>) (opt: (byte: (tlv: 1063) 2) (str: (tlv: 30) 6166f5d3de004fbb) ) )

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

Запрос:

(query: (pdu: 36 3 0 28671372) 6166f9adde00b313 (addr: 5 0 ) )

В пакете query_sm клиент передает message_id для получения информации по конкретному сообщению.

&#xNAN;Ответ:

(query_resp: (pdu: 0 80000003 0 28671372) 6166f9adde00b313 1 0 )

В ответе передается статус сообщения (в примере показано сообщение в статусе ENROUTE).