SMPP
Search…
Получение статусов доставки сообщений
Есть две возможности получения статуса доставки (активный и пассивный).
Пассивный вариант предусматривает установку флага registered_delivery пакета SUBMIT_SM. После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery Receipt сообщением.
Чтобы запросить отчёт о доставке, для пакета SUBMIT_SM нужно установить флаг registered_delivery=0x01. В ответ SMSC отправляет пакет DELIVER_SM, содержащий поле short_message c отчётом о доставке.
Пример отчёта о доставке
(deliver: (pdu: 0 5 0 393653) (addr: 1 1 msisdn) (addr: 5 0 Sender_Name) (sm: enc: UTF-8 msg: id:616d2dbfde073b06 sub:001 dlvrd:001 submit date:2110181118 done date:2110191118 stat:UNDELIV err:999 text:<r:FINAL>) (opt: (oct: (tlv: 1059) 03ffff) (byte: (tlv: 1063) 5) (str: (tlv: 30) 616d2dbfde073b06) ) )
Подробное описание параметров, входящих в отчёт, приведено в таблице ниже.
Параметры доставки
Параметр
Описание
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).
Copy link