SMPP
Search…
⌃K

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

Есть две возможности получения статуса доставки (активный и пассивный).
Пассивный вариант предусматривает установку флага 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
Дополнительные параметры
Описание дополнительных параметров
Значение параметра
Параметр
Описание
1059
network_error_code
Параметр network_error_code используется, чтобы указать код фактической сетевой ошибки для неудачи доставки.
1063
message_state
SMSC использует данный параметр в PDU deliver_sm и data_sm, чтобы передать конечное состояние сообщения для SMSC Delivery Receipt. Описание состояний представлено в таблице ниже.
30
receipted_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 для получения информации по конкретному сообщению. Ответ:
(query_resp: (pdu: 0 80000003 0 28671372) 6166f9adde00b313 1 0 )
В ответе передается статус сообщения (в примере показано сообщение в статусе ENROUTE).