Войти

Использование push-нотификаций

В СМЭВ предусмотрена возможность предоставления ИС УВ сведений о количестве сообщений в своих очередях доставки. Для этого ИС УВ со своей стороны должны развернуть сервис приёма push-уведомлений и подать заявку на его регистрацию в СМЭВ.

Участником взаимодействия может быть разработан сервис приёма push-уведомлений самостоятельно в соответствии с данным описанием, либо использовано готовое решение, которое входит в состав набора шаблонов электронных сервисов.

10.1. Описание сервиса приёма push-уведомлений

Сервис приёма push-уведомлений осуществляет приём входных и отправку выходных данных, приведённых в таблице 10.

Таблица 10 – Перечень входных и выходных данных сервиса приёма push-уведомлений

Название

Тип

Обозначение

Описание

1

Входные данные

1.1

Push-уведомление

Контейнер

PushNotification

Push-уведомление передаётся средствами метода PushNotification веб-сервиса и включает следующие данные (рисунок Рисунок 48):

·       Время опроса очередей доставки ИС УВ;

·       Наименования очередей доставки;

·       Количество сообщений в каждой очереди доставки.

SOAP-запрос приведён на рисунке Рисунок 48.

1.1.1

Время опроса очередей доставки ИС УВ

dateTime

InformationTimestamp

Время опроса в формате ГГГГ-ММ-ДДTЧЧ:ММ:ССZ

1.1.2

Данные состояния очереди

Контейнер

QueueInformation

Включает следующие данные:

·       Наименование очереди доставки;

·       Количество сообщений в очереди доставки.

1.1.2.1

Наименование очереди доставки

String

QueueName

Наименование одной из трёх очередей доставки (не более 500 символов).

1.1.2.2

Количество сообщений в очереди доставки

Int

QueueSize

Количество сообщений в очереди доставки, которая соответствует queueName.

2

Выходные данные

2.1

Ответное сообщение на отправленное push-уведомление

Контейнер

PushNotificationResponse

Ответное сообщение на отправленное push-уведомление является подтверждением успешного получения ИС УВ push-уведомления.

Ответное сообщение передаётся средствами метода PushNotification веб-сервиса и не содержит никаких бизнес данных (рисунок Рисунок 49).

2.2

Ответное сообщение с ошибкой на отправленное push-уведомление

Контейнер

PushNotificationException

Ответное сообщение с ошибкой на отправленное push-уведомление является подтверждением успешного получения ИС УВ push-уведомления.

Ответное сообщение с ошибкой передаётся средствами метода PushNotification веб-сервиса и может содержать описание ошибки (рисунок 50).

2.3

Метод передачи данных push-уведомления

Метод SOAP-сервера

PushNotificationData

Метод передаёт следующие данные:

·       Время опроса очередей доставки ИС УВ;

·       Наименования очередей доставки;

·       Количество сообщений в каждой очереди доставки.

42.jpg

Рисунок 44 – Схема структуры данных push-уведомления.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

            <SOAP-ENV:Body>

                        <PushNotificationRequest xmlns:m="urn://x-artefacts-smev-gov-ru/smev/1.0">

                                   <PushNotification>

                                               <InformationTimestamp>2015-02-06T15:14:20Z</InformationTimestamp>

                                               <QueueInformation>

                                                           <QueueName>name1</QueueName>

                                                           <QueueSize>2</QueueSize>

                                               </QueueInformation>

                                               <QueueInformation>

                                                           <QueueName>name2</QueueName>

                                                           <QueueSize>25</QueueSize>

                                               </QueueInformation>

                                               <QueueInformation>

                                                           <QueueName>name3</QueueName>

                                                           <QueueSize>12</QueueSize>

                                               </QueueInformation>

                                   </PushNotification>

                        </PushNotificationRequest>

            </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Рисунок 45 – SOAP-структура push-уведомления.

44.jpg

Рисунок 46 – Схема структуры данных ответного сообщения на отправленное push-уведомление.

45.jpg

Рисунок 47– Схема структуры данных ответного сообщения с ошибкой на отправленное push-уведомление.

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn://x-artefacts-smev-gov-ru/smev/1.0" targetNamespace="urn://x-artefacts-smev-gov-ru/smev/1.0" elementFormDefault="unqualified">

            <xs:element name="PushNotificationRequest" type="tns:PushNotificationRequest"/>

            <xs:complexType name="PushNotificationRequest">

                        <xs:sequence>

                                   <xs:element name="PushNotification" type="tns:QueueNotificationInformation"/>

                        </xs:sequence>

            </xs:complexType>

            <xs:complexType name="QueueNotificationInformation">

                        <xs:sequence>

                                   <xs:element name="InformationTimestamp" type="xs:dateTime"/>

                                   <xs:element name="QueueInformation" type="tns:QueueInformation" form="qualified" nillable="true" minOccurs="1" maxOccurs="unbounded"/>

                        </xs:sequence>

            </xs:complexType>

            <xs:complexType name="QueueInformation">

                        <xs:sequence>

                                   <xs:element name="QueueName">

                                               <xs:simpleType>

                                                           <xs:restriction base="xs:string">

                                                                       <xs:minLength value="1"/>

                                                                       <xs:maxLength value="500"/>

                                                           </xs:restriction>

                                               </xs:simpleType>

                                   </xs:element>

                                   <xs:element name="QueueSize" type="xs:int"/>

                        </xs:sequence>

            </xs:complexType>

            <xs:element name="PushNotificationResponse" type="tns:PushNotificationResponse"/>

            <xs:complexType name="PushNotificationResponse">

                        <xs:sequence>

                                   <xs:element name="DescriptionResponse" type="tns:Description"/>

                        </xs:sequence>

            </xs:complexType>

            <xs:element name="PushNotificationException" type="tns:PushNotificationException"/>

            <xs:complexType name="PushNotificationException">

                        <xs:sequence>

                                   <xs:element name="DescriptionException" type="tns:Description"/>

                        </xs:sequence>

            </xs:complexType>

            <xs:complexType name="Description">

                        <xs:sequence>

                                   <xs:element name="Description" type="xs:string" form="qualified" nillable="true" minOccurs="0"/>

                        </xs:sequence>

            </xs:complexType>

</xs:schema>

Рисунок 48 – xsd-схема сервиса приёма push-уведомлений «PushNotificationSchema.xsd».

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn://x-artefacts-smev-gov-ru/smev/1.0" targetNamespace="urn://x-artefacts-smev-gov-ru/smev/1.0">

            <wsdl:types>

                        <xs:schema>

                                   <xs:import namespace="urn://x-artefacts-smev-gov-ru/smev/1.0" schemaLocation="PushMessageSchema.xsd"/>

                        </xs:schema>

            </wsdl:types>

            <wsdl:message name="PushNotificationRequest">

                        <wsdl:part name="parameter" element="tns:PushNotificationRequest"/>

            </wsdl:message>

            <wsdl:message name="PushNotificationResponse">

                        <wsdl:part name="parameter" element="tns:PushNotificationResponse"/>

            </wsdl:message>

            <wsdl:message name="PushNotificationException">

                        <wsdl:part name="parameter" element="tns:PushNotificationException"/>

            </wsdl:message>

            <wsdl:portType name="PushNotificationType">

                        <wsdl:operation name="PushNotification">

                                   <wsdl:input name="PushNotificationRequest" message="tns:PushNotificationRequest"/>

                                   <wsdl:output name="PushNotificationResponse" message="tns:PushNotificationResponse"/>

                                   <wsdl:fault name="PushNotificationException" message="tns:PushNotificationException"/>

                        </wsdl:operation>

            </wsdl:portType>

            <wsdl:binding name="PushNotificationBinding" type="tns:PushNotificationType">

                        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

                        <wsdl:operation name="PushNotification">

                                   <soap:operation soapAction=" PushNotification "/>

                                   <wsdl:input name="PushNotificationRequest">

                                               <soap:body use="literal"/>

                                   </wsdl:input>

                                   <wsdl:output name="PushNotificationResponse">

                                               <soap:body use="literal"/>

                                   </wsdl:output>

                                   <wsdl:fault name="PushNotificationException">

                                               <soap:fault name="PushNotificationException" use="literal"/>

                                   </wsdl:fault>

                        </wsdl:operation>

            </wsdl:binding>

            <wsdl:service name="PushNotificationService">

                        <wsdl:port name="PushNotificationPort" binding="tns:PushNotificationBinding">

                                   <soap:address location="ServiceAdress"/>

                        </wsdl:port>

            </wsdl:service>

</wsdl:definitions>

Рисунок 49 – wsdl-описание веб-сервиса сервиса приёма push-уведомлений.

Авторизуйтесь, чтобы оставить комментарий к статье