ASN.1 протокол взаимодействия ПУ и ПТС ОРМ ОРИ
IdentifiersORI.asn |
IdentifiersORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS UserID,
UserIdentifier,
UserTechnicalIdentifier,
ResourceIdentifier,
ResourceName,
ORIStreamID;
UserIdentifier ::= SEQUENCE {
user-id [0] UserID, --- идентификатор пользователя в системе (имя пользователя)
user-type [1] INTEGER (0 .. 65535) --- тип пользователя (расшифровывается по справочнику)
}
UserTechnicalIdentifier ::= CHOICE {
ip-address [0] UserIPAddress, --- ip-адрес и порт
msisdn [1] UTF8String (SIZE (1 .. 64)), --- номер телефона
email [2] UTF8String (SIZE (1 .. 256)), --- электронная почта
program-name [3] UTF8String (SIZE (1 .. 1024)), --- имя програмы клиента
other [4] UTF8String (SIZE (1 .. 1024)) --- прочая техническая информация
}
UserIPAddress ::= SEQUENCE {
ip-address [0] UTF8String (SIZE (1 .. 64)), --- ip-адрес
ip-port [1] INTEGER (0 .. 65535) OPTIONAL --- TCP/UDP порт
}
UserID ::= UTF8String (SIZE (1 .. 128))
ResourceIdentifier ::= SEQUENCE {
resource-name [0] ResourceName, --- наименование ресурса
resource-type [1] INTEGER (0 .. 65535) OPTIONAL --- тип ресурса (расшифровывается по справочнику)
}
ResourceName ::= UTF8String (SIZE (1 .. 4096))
ORIStreamID ::= OCTET STRING (SIZE (8))
END
ReportsAbonentsORI.asn |
ReportsAbonentsORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS AbonentsORIReport;
IMPORTS TAGGED,
sorm-report-abonent-ori
FROM Classification
DateAndTime
FROM Sorm
TelcoID
FROM Tasks
UserID,
UserIdentifier
FROM IdentifiersORI;
AbonentsORIReport ::= SEQUENCE {
id TAGGED.&id ({AbonentsORIReportVariants}),
data TAGGED.&Data ({AbonentsORIReportVariants}{@id})
}
AbonentsORIReportVariants TAGGED ::= {
reportAbonentORI
}
reportAbonentORI TAGGED ::= {
OID {sorm-report-abonent-ori}
DATA SEQUENCE OF AbonentsORIRecord
}
AbonentsORIRecord ::= SEQUENCE {
telco-id TelcoID, --- филиал ОРИ, обслуживаемый ТС ОРМ
user-identifier UserIdentifier, --- идентификатор пользователя
datetime-registered DateAndTime, --- дата и время регистрации
abonent-info AbonentInfoORI, --- информация о пользователе
abonent-contacts [0] AbonentContactsORI OPTIONAL, --- контактные данные пользователя
im-identifiers [1] SEQUENCE OF AbonentImIdentifierORI OPTIONAL, --- идентфикаторы пользователя в других средствах электронного взаимодействия
datetime-updated [2] DateAndTime OPTIONAL, --- дата и время обновления информации
datetime-unregistered [3] DateAndTime OPTIONAL, --- дата и время прекращения регистрации
contract-date [4] DateAndTime OPTIONAL, --- дата и время заключения договора
contract [5] UTF8String (SIZE (1 .. 64)) OPTIONAL, --- номер договора
additional [6] SEQUENCE OF AdditionalInfo OPTIONAL --- дополнительная информация о пользователе
}
--- информация о пользователе
AbonentInfoORI ::= SEQUENCE {
nick-name [0] UTF8String (SIZE (1 .. 1024)) OPTIONAL, --- псевдоним пользователя
birth-date GeneralizedTime OPTIONAL, --- дата рождения
address [1] ReportedAddressORI OPTIONAL, --- адресные данные
name-info [2] ReportedNameInfoORI OPTIONAL, --- ФИО
passport-info [3] ReportedPassportInfoORI OPTIONAL, --- паспортные данные
langs [4] SEQUENCE OF UTF8String (SIZE (1 .. 64)) OPTIONAL, --- список языков, которыми владеет пользователь
relatives [5] SEQUENCE OF UserID OPTIONAL --- список родственников пользователя
}
--- адресные данные
ReportedAddressORI ::= CHOICE {
struct-info [0] ReportedStructAddressORI,
unstruct-info [1] UTF8String (SIZE (1 .. 1024))
}
ReportedStructAddressORI ::= SEQUENCE {
country [0] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- страна
region [1] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- область
city [2] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- город, поселок, деревня
street [3] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- улица
building [4] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- дом, строение
apartment [5] UTF8String (SIZE (1 .. 128)) OPTIONAL --- квартира, офис
}
--- ФИО
ReportedNameInfoORI ::= CHOICE {
struct-info [0] ReportedStructNameInfoORI,
unstruct-info [1] UTF8String (SIZE (1 .. 1024))
}
ReportedStructNameInfoORI ::= SEQUENCE {
given-name [0] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- имя
initial [1] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- отчество
family-name [2] UTF8String (SIZE (1 .. 128)) OPTIONAL --- фамилия
}
--- паспортные данные
ReportedPassportInfoORI ::= CHOICE {
struct-info [0] ReportedStructPassroptInfoORI,
unstruct-info [1] UTF8String(SIZE (1 .. 1024))
}
ReportedStructPassroptInfoORI ::= SEQUENCE {
passport-serial [0] UTF8String (SIZE (1..16)) OPTIONAL, --- серия паспорта
passport-number [1] UTF8String (SIZE (1..16)) OPTIONAL --- номер паспорта
}
--- контактные данные пользователя
AbonentContactsORI ::= SEQUENCE {
msisdn [0] SEQUENCE OF UTF8String (SIZE (1 .. 64)) OPTIONAL, --- список номеров телефона пользователя
email [1] SEQUENCE OF UTF8String (SIZE (1 .. 256)) OPTIONAL --- список адресов электронной почта пользователя
}
--- идентфикаторы пользователя в других средствах электронного взаимодействия
AbonentImIdentifierORI ::= SEQUENCE {
service-name UTF8String (SIZE (1 .. 128)), --- наименование сервиса
service-id UTF8String (SIZE (1 .. 256)) --- идентификатор пользователя в сервисе
}
--- дополнительная информация о пользователе
AdditionalInfo ::= SEQUENCE {
title UTF8String (SIZE (1 .. 128)), --- наименование о дополнительных сведениях
content UTF8String (SIZE (1 .. 4096)) --- содержание дополнительных сведений
}
END
Sorm.asn |
Sorm DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS DateAndTime,
FindRange,
MessageID;
IMPORTS TAGGED
FROM Classification
sessionMessage
FROM Sessions
trapMessage
FROM Traps
taskMessage
FROM Tasks
reportMessage
FROM Reports
unformattedMessage
FROM Unformatted
Version ::= PrintableString
vers Version ::= "3.0.0" --- текущая версия протокола
--- Оболочка сообщения СОРМ
Message ::= SEQUENCE {
version Version DEFAULT vers, --- версия протокола
message-id MessageID, --- номер запроса
message-time DateAndTime, --- время и дата запроса
operator-name PrintableString (SIZE (1 .. 128)) OPTIONAL, --- наименование оператора связи
id TAGGED.&id ({SormPDUs}), --- идентификтор блока данных
data TAGGED.&Data ({SormPDUs}{@id}) --- данные блока данных
}
--- Блок данных сообщения
SormPDUs TAGGED ::= {
sessionMessage --- сообщения организации сессии
| trapMessage --- сообщения сигналов
| taskMessage --- сообщения работы с задачами
| reportMessage --- сообщения работы с отчётами
| unformattedMessage --- сообщения канала передачи неформатированных данных (КПНФ)
}
--- Номер сообщения
MessageID ::= INTEGER (0 .. 4294967295)
--- Дата и время
DateAndTime ::= UTCTime
--- Диапазон поиска
FindRange ::= SEQUENCE {
begin-find [0] DateAndTime OPTIONAL, --- время и дата начала поиска информации
end-find [1] DateAndTime OPTIONAL --- время и дата окончания поиска информации
}
END
ReportsConnectionsORI.asn |
ReportsConnectionsORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS ConnectionsORIReport;
IMPORTS TAGGED,
sorm-report-connection-ori-data,
sorm-report-connection-ori-link,
sorm-report-connection-ori-aaa,
sorm-report-connection-ori-streams-content,
FROM Classification
DateAndTime
FROM Sorm
TelcoID
FROM Tasks
UserID,
UserIdentifier,
UserTechnicalIdentifier,
ResourceIdentifier,
ORIStreamID
FROM IdentifiersORI
NetworkPeerInfo
FROM NetworkIdentifiers
LocationInfo
FROM Locations;
ConnectionsORIReport ::= SEQUENCE {
id TAGGED.&id ({ReportedConnectionsORIVariants}),
data TAGGED.&Data ({ReportedConnectionsORIVariants}{@id})
}
ReportedConnectionsORIVariants TAGGED ::= {
reportConnectionsDataORI --- события информационного взаимодействия пользователей в ИС ОРИ
| reportConnectionsLinkORI --- события добавления/исключения связанных пользователей
| reportConnectionsAAAORI --- события регистрации, прекращения регистрации, авторизации, выхода из информационного сервиса
| reportConnectionsStreamsContentORI --- содержимое изображений, звуков, голосовой информации, видео- и иных электронных сообщений
}
--- события информационного взаимодействия пользователей в ИС ОРИ
reportConnectionsDataORI TAGGED ::= {
OID {sorm-report-connection-ori-data}
DATA SEQUENCE OF ConnectionDataORIRecord
}
ConnectionDataORIRecord ::= SEQUENCE {
telco-id TelcoID, --- филиал ОРИ, обслуживаемый ТС ОРМ
arrive-datetime DateAndTime, --- дата и время поступления информации
datetime DateAndTime, --- дата и время
service-id INTEGER (0 .. 65535), --- идентификатор сервиса (расшифровывается по справочнику)
abonent-identifier UserIdentifier, --- идентификатор пользователя
abonent-technical-identifier SEQUENCE OF UserTechnicalIdentifier, --- технические данные, идентифицируюцие пользователя
event-id INTEGER (0 .. 65535), --- тип события (расшифровывается по справочнику)
contacts-identifier SEQUENCE OF UserIdentifier, --- идентификаторы контактов
abonent-location [0] LocationInfo OPTIONAL, --- местоположение пользователя
resource-identifier [1] ResourceIdentifier OPTIONAL, --- ресурс
resource-info [2] ResourceMetadataInfoORI OPTIONAL, --- техническая информация о ресурсе
owner-identifier [3] UserIdentifier OPTIONAL, --- идентификатор владельца ресурса
message-text [4] UTF8String OPTIONAL, --- текст сообщения без разметки и иной служебной коммуникационной информации
payment-id [5] PaymentInfoORI OPTIONAL, --- техническая информация о платеже
stream-id [6] ORIStreamID OPTIONAL --- последовательный идентификатор файла
}
ResourceMetadataInfoORI ::= CHOICE {
files-metadata [0] SEQUENCE OF FileMetadata,
stream-metadata [1] StreamMetadata
}
--- техническая информация о файловых данных
FileMetadata ::= SEQUENCE {
filename UTF8String (SIZE (1 .. 256)),
filesize INTEGER
}
--- техническая информация о потоковых данных
StreamMetadata ::= SEQUENCE {
timestamp [0] GeneralizedTime OPTIONAL,
duration [1] INTEGER OPTIONAL,
start-offset [2] INTEGER OPTIONAL,
stop-offset [3] INTEGER OPTIONAL
}
PaymentInfoORI ::= SEQUENCE {
payment-identifier UTF8String (SIZE (1 .. 128)), --- идентификатор транзакции, счета, кошелька и т.д.
payment-service-id INTEGER (0 .. 65535), --- идентификатор платежного сервиса (расшифровывается по справочнику)
payment-info UTF8String (SIZE (1 .. 4096)) OPTIONAL --- дополнительная информация
}
--- события добавления/исключения связанных пользователей
reportConnectionsLinkORI TAGGED ::= {
OID {sorm-report-connection-ori-link}
DATA SEQUENCE OF ConnectionLinkORIRecord
}
ConnectionLinkORIRecord ::= SEQUENCE {
telco-id TelcoID, --- филиал ОРИ, обслуживаемый ТС ОРМ
arrive-datetime DateAndTime, --- дата и время поступления информации
datetime DateAndTime, --- дата и время
service-id INTEGER (0 .. 65535), --- идентификатор сервиса (расшифровывается по справочнику)
abonent-id UserIdentifier, --- идентификатор пользователя, устанавливающего связь
event-id INTEGER (0 .. 65535), --- тип события (расшифровывается по справочнику)
linked-identifier LinkedIdentifier --- идентификатор объекта, с которым установлена связь
}
LinkedIdentifier ::= CHOICE {
connected-user-identifier [0] UserIdentifier, --- идентификатор пользователя
connected-resource-identifier [1] ResourceIdentifier --- ресурс
}
--- события регистрации, прекращения регистрации, авторизации, выхода из информационного сервиса
reportConnectionsAAAORI TAGGED ::= {
OID {sorm-report-connection-ori-aaa}
DATA SEQUENCE OF ConnectionAAAORIRecord
}
ConnectionAAAORIRecord ::= SEQUENCE {
telco-id TelcoID, --- филиал ОРИ, обслуживаемый ТС ОРМ
arrive-datetime DateAndTime, --- дата и время поступления информации
datetime DateAndTime, --- дата и время
service-id INTEGER (0 .. 65535), --- идентификатор сервиса (расшифровывается по справочнику)
abonent-identifier UserIdentifier, --- идентификатор пользователя
abonent-technical-identifier SEQUENCE OF UserTechnicalIdentifier, --- технические данные, идентифицируюцие пользователя
event-id INTEGER (0 .. 65535), --- тип события (расшифровывается по справочнику)
abonent-location [0] LocationInfo OPTIONAL --- местоположение пользователя
}
--- содержимое изображений, звуков, голосовой информации, видео- и иных электронных сообщений
reportConnectionsStreamsContentORI TAGGED ::= {
OID {sorm-report-connection-ori-streams-content}
DATA SEQUENCE OF ConnectionsStreamsContentORIRecord
}
ConnectionsStreamsContentORIRecord ::= SEQUENCE {
successful BOOLEAN, --- признак успешного формирования блока данных
data OCTET STRING (SIZE (1 .. 1048576)), --- содержимое блока
error UTF8String (SIZE (1 .. 4096)) OPTIONAL --- описание ошибки (в случае если не удалось сформировать блок)
}
END
RequestedAbonentsORI.asn |
RequestedAbonentsORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS RequestedAbonentORI;
IMPORTS TAGGED,
sorm-request-abonent-ori
FROM Classification
UserID
FROM IdentifiersORI;
RequestedAbonentORI ::= SEQUENCE {
id TAGGED.&id ({RequestedAbonentORIVariants}),
data TAGGED.&Data ({RequestedAbonentORIVariants}{@id})
}
RequestedAbonentORIVariants TAGGED ::= {
requestedORIabonent
}
requestedORIabonent TAGGED ::= {
OID {sorm-request-abonent-ori}
DATA CHOICE {
user-id [0] UserID, --- идентификатор пользователя
nick-name [1] UTF8String (SIZE (1 .. 1024)), --- псевдоним пользователя
given-name [2] UTF8String (SIZE (1 .. 128)), --- имя
initial [3] UTF8String (SIZE (1 .. 128)), --- отчество
family-name [4] UTF8String (SIZE (1 .. 128)), --- фамилия
address [5] RequestedAddressORI, --- адресные данные
passport [6] RequestedPassportORI, --- паспортные данные
relatives [7] UserID, --- идентификатор родственника
msisdn [8] UTF8String (SIZE (1 .. 64)), --- номер телефона пользователя
email [9] UTF8String (SIZE (1 .. 256)), --- электронная почта пользователя
im-id [10] UTF8String (SIZE (1 .. 256)), --- идентификатор в сетях мгновенного обмена сообщениями
contract [11] UTF8String (SIZE (1 .. 64)) --- номер договора
}
}
RequestedAddressORI ::= SEQUENCE {
country [0] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- страна
region [1] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- область
city [2] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- город, поселок, деревня, населенный пункт
street [3] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- улица
building [4] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- дом, строение
apartment [5] UTF8String (SIZE (1 .. 128)) OPTIONAL --- квартира, офис
}
RequestedPassportORI ::= SEQUENCE {
passport-serial [0] UTF8String (SIZE (1 .. 16)) OPTIONAL, --- серия паспорта
passport-number [1] UTF8String (SIZE (1 .. 16)) OPTIONAL --- номер паспорта
}
END
RequestedConnectionsORI.asn |
RequestedConnectionsORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS RequestedConnectionORI;
IMPORTS TAGGED,
sorm-request-connection-ori-data-standart,
sorm-request-connection-ori-data-extended,
sorm-request-connection-ori-link,
sorm-request-connection-ori-aaa,
sorm-request-connection-ori-streams-content,
sorm-request-connection-ori-cert,
sorm-request-connection-ori-keys
FROM Classification
UserID,
UserTechnicalIdentifier,
ResourceName,
ORIStreamID
FROM IdentifiersORI
NetworkPeerInfo
FROM NetworkIdentifiers
LocationInfo
FROM Locations;
RequestedConnectionORI ::= SEQUENCE {
id TAGGED.&id ({RequestedConnectionORIVariants}),
data TAGGED.&Data ({RequestedConnectionORIVariants}{@id})
}
RequestedConnectionORIVariants TAGGED ::= {
requestedORIDataStandart --- события информационного взаимодействия пользователей в ИС ОРИ (базовый набор критериев)
| requestedORIDataExtended --- события информационного взаимодействия пользователей в ИС ОРИ (расширенный набор критериев)
| requestedORILink --- события добавления/исключения связанных пользователей
| requestedORIAAA --- события регистрации, прекращения регистрации, авторизации, выхода из информационного сервиса
| requestedORIStreamsContent --- содержимое изображений, звуков, голосовой информации, видео- и иных электронных сообщений
}
--- события информационного взаимодействия пользователей в ИС ОРИ (базовый набор критериев)
requestedORIDataStandart TAGGED ::= {
OID {sorm-request-connection-ori-data-standart}
DATA CHOICE {
abonent-id [0] UserID, --- идентификатор пользователя
abonent-technical-identifier [1] UserTechnicalIdentifier --- технические данные, идентифицируюцие пользователя
}
}
--- события информационного взаимодействия пользователей в ИС ОРИ (расширенный набор критериев)
requestedORIDataExtended TAGGED ::= {
OID {sorm-request-connection-ori-data-extended}
DATA CHOICE {
service-id [0] INTEGER (0 .. 65535), --- идентификатор сервиса (расшифровывается по справочнику)
abonent-id [1] UserID, --- идентификатор абонента
abonent-technical-identifier [2] UserTechnicalIdentifier, --- технические данные, идентифицируюцие абонента
abonent-location [3] LocationInfo, --- местоположение абонента
contact-id [4] UserID, --- идентификатор контакта
resource-name [5] ResourceName, --- наименование ресурса
event-id [6] INTEGER (0 .. 65535), --- тип события (расшифровывается по справочнику)
owner-id [7] UserID, --- идентификатор владельца ресурса
message-text [8] UTF8String, --- текст сообщения без разметки и иной служебной коммуникационной информации
payment-identifier [9] UTF8String (SIZE (1 .. 128)), --- идентификатор платежа
payment-info [10] UTF8String (SIZE (1 .. 4096)) --- платежная информация
}
}
--- события добавления/исключения связанных пользователей
requestedORILink TAGGED ::= {
OID {sorm-request-connection-ori-link}
DATA CHOICE {
user-id [0] UserID, --- идентификатор пользователя, установившего связь
connected-user-id [1] UserID, --- идентификатор пользователя, с которым установили связь
connected-resource-name [2] ResourceName --- наименование ресурса, с которым установили связь
}
}
--- события регистрации, прекращения регистрации, авторизации, выхода из информационного сервиса
requestedORIAAA TAGGED ::= {
OID {sorm-request-connection-ori-aaa}
DATA CHOICE {
service-id [0] INTEGER (0 .. 65535), --- идентификатор сервиса (расшифровывается по справочнику)
user-id [1] UserID, --- идентификатор пользователя
user-technical-identifier [2] UserTechnicalIdentifier, --- технические данные, идентифицируюцие пользователя
user-location [3] LocationInfo, --- местоположение пользователя
event-id [4] INTEGER (0 .. 65535) --- тип события (расшифровывается по справочнику)
}
}
--- содержимое изображений, звуков, голосовой информации, видео- и иных электронных сообщений
requestedORIStreamsContent TAGGED ::= {
OID {sorm-request-connection-ori-streams-content}
DATA ORIStreamsContentRequest
}
ORIStreamsContentRequest ::= SEQUENCE {
stream-id ORIStreamID, --- идентификатор запрашиваемых данных
duration [1] INTEGER OPTIONAL, --- длительность потоковых данных
start-offset [2] INTEGER OPTIONAL, --- начальное смещение потоковых данных
stop-offset [3] INTEGER OPTIONAL --- конечное смещение потоковых данных
}
TasksAbonentsORI.asn |
TasksAbonentsORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS AbonentsORITask;
IMPORTS LogicalOperation
FROM Tasks
RequestedAbonentORI
FROM RequestedAbonentsORI;
AbonentsORITask ::= CHOICE {
validate-abonents [0] ValidateAbonentsORITask
}
ValidateAbonentsORITask ::= RequestedAbonentORIIdentifiers
RequestedAbonentORIIdentifiers ::= SEQUENCE OF RequestedAbonentORIIdentifier
RequestedAbonentORIIdentifier ::= CHOICE {
separator [0] LogicalOperation,
find-mask [1] RequestedAbonentORI
}
END
TasksConnectionsORI.asn |
TasksConnectionsORI DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS ConnectionsORITask;
IMPORTS LogicalOperation
FROM Tasks
RequestedConnectionORI
FROM RequestedConnectionsORI;
ConnectionsORITask ::= CHOICE {
validate-standart [0] ValidateStandartTask, --- используется для запросов стандартного класса сложности
validate-extended [1] ValidateExtendedTask, --- используется для расширенных запросов
validate-streams-content [2] ValidateStreamsContentTask, --- используется для получения содержимого изображений, звуков, голосовой информации, видео- и иных электронных сообщений
}
ValidateStandartTask ::= RequestedConnectionIdentifiersORI
ValidateExtendedTask ::= RequestedConnectionIdentifiersORI
ValidateStreamsContentTask ::= RequestedConnectionORI
RequestedConnectionIdentifiersORI ::= SEQUENCE OF RequestedConnectionParameterORI
RequestedConnectionParameterORI ::= CHOICE {
separator [0] LogicalOperation,
find-mask [1] RequestedConnectionORI
}
END
Classification.asn |
Classification DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS TAGGED,
sorm-message-session,
sorm-message-trap,
sorm-message-task,
sorm-message-report,
sorm-message-unformatted,
sorm-request-abonent-ori,
sorm-report-abonent-ori,
sorm-request-dictionaries,
sorm-report-dictionary-ori-services,
sorm-report-dictionary-ori-events,
sorm-report-dictionary-ori-resources,
sorm-report-dictionary-ori-user-types,
sorm-report-dictionary-ori-payment-services,
sorm-request-presense,
sorm-report-presense-abonents-ori,
sorm-report-presense-connections-ori;
TAGGED ::= CLASS {
&id ObjectDescriptor UNIQUE,
&Data
}
WITH SYNTAX {
OID &id
DATA &Data
}
--- Классификация
OID ::= ObjectDescriptor
--- Подструктура сообщений
sorm-message-session OID ::= "280"
sorm-message-trap OID ::= "281"
sorm-message-task OID ::= "282"
sorm-message-report OID ::= "283"
sorm-message-unformatted OID ::= "285"
--- Абоненты
sorm-request-abonent-ori OID ::= "245"
sorm-report-abonent-ori OID ::= "70"
--- Справочники
sorm-request-dictionaries OID ::= "240"
sorm-report-dictionary-ori-services OID ::= "117"
sorm-report-dictionary-ori-events OID ::= "118"
sorm-report-dictionary-ori-resources OID ::= "119"
sorm-report-dictionary-ori-user-types OID ::= "120"
sorm-report-dictionary-ori-payment-services OID ::= "121"
--- Запрос о наличии данных
sorm-request-presense OID ::= "260"
sorm-report-presense-abonents-ori OID ::= "125"
sorm-report-presense-connections-ori OID ::= "126"
END
Dictionaries.asn |
Dictionaries DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS DictionaryTask,
DictionaryReport;
IMPORTS DateAndTime
FROM Sorm
TAGGED,
sorm-request-dictionaries,
sorm-report-dictionary-ori-services,
sorm-report-dictionary-ori-events,
sorm-report-dictionary-ori-resources,
sorm-report-dictionary-ori-user-types,
sorm-report-dictionary-ori-payment-services
FROM Classification;
--- Запрос
DictionaryTask ::= SEQUENCE {
id TAGGED.&id ({DictionaryTaskVariants}),
data TAGGED.&Data ({DictionaryTaskVariants}{@id})
}
DictionaryTaskVariants TAGGED ::= {dictionaryTask}
dictionaryTask TAGGED ::= {
OID {sorm-request-dictionaries}
DATA ObjectDescriptor --- тип запрашиваемого справочника (идентификатор отчёта)
}
--- DATA ObjectDescriptor принимает значение одно из:
--- sorm-report-dictionary-ori-services
--- sorm-report-dictionary-ori-events
--- sorm-report-dictionary-ori-resources
--- sorm-report-dictionary-ori-user-types
--- sorm-report-dictionary-ori-payment-services
--- Отчёт
DictionaryReport ::= SEQUENCE {
id TAGGED.&id ({DictionaryRecordsVariants}), --- идентификтор записи справочника
data TAGGED.&Data ({DictionaryRecordsVariants}{@id}) --- данные записи справочника
}
DictionaryRecordsVariants TAGGED ::= {
oriServices --- виды информационных сервисов, предоставляемых ОРИ для пользователей
| oriEvents --- виды событий, регистрируемых ИС ОРИ при взаимодействии ИС ОРИ с пользователем
| oriResources --- типы информационных ресурсов, создаваемых пользователями в ИС ОРИ
| oriUserTypes --- типы пользователей, обслуживаемых ИС ОРИ
| oriPaymentServices --- виды платежных услуг (платежных сервисов), используемых ОРИ
}
--- виды информационных сервисов, предоставляемых ОРИ для пользователей
oriServices TAGGED ::= {
OID {sorm-report-dictionary-ori-services}
DATA SEQUENCE OF OriServiceRecord
}
OriServiceRecord ::= SEQUENCE {
telco-id TelcoID, --- идентификатор оператора связи или филиала
service-id INTEGER (0 .. 65535), --- идентификатор сервиса
description UTF8String (SIZE (1 .. 256)), --- описание
begin-time DateAndTime, --- время начала действия
end-time DateAndTime OPTIONAL --- время конца действия
}
--- виды событий, регистрируемых ИС ОРИ при взаимодействии ИС ОРИ с пользователем
oriEvents TAGGED ::= {
OID {sorm-report-dictionary-ori-events}
DATA SEQUENCE OF OriEventRecord
}
OriEventRecord ::= SEQUENCE {
telco-id TelcoID, --- идентификатор оператора связи или филиала
service-id INTEGER (0 .. 65535), --- идентификатор сервиса
event-id INTEGER (0 .. 65535), --- идентификатор события
description UTF8String (SIZE (1 .. 256)), --- описание
begin-time DateAndTime, --- время начала действия
end-time DateAndTime OPTIONAL --- время конца действия
}
--- типы информационных ресурсов, создаваемых пользователями в ИС ОРИ
oriResources TAGGED ::= {
OID {sorm-report-dictionary-ori-resources}
DATA SEQUENCE OF OriResourceRecord
}
OriResourceRecord ::= SEQUENCE {
telco-id TelcoID, --- идентификатор оператора связи или филиала
service-id INTEGER (0 .. 65535), --- идентификатор сервиса
resource-id INTEGER (0 .. 65535), --- идентификатор ресурса
description UTF8String (SIZE (1 .. 256)), --- описание
begin-time DateAndTime, --- время начала действия
end-time DateAndTime OPTIONAL --- время конца действия
}
--- типы пользователей, обслуживаемых ИС ОРИ
oriUserTypes TAGGED ::= {
OID {sorm-report-dictionary-ori-user-types}
DATA SEQUENCE OF OriUserTypeRecord
}
OriUserTypeRecord ::= SEQUENCE {
telco-id TelcoID, --- идентификатор оператора связи или филиала
service-id INTEGER (0 .. 65535), --- идентификатор сервиса
user-type-id INTEGER (0 .. 65535), --- тип пользователя
description UTF8String (SIZE (1 .. 256)), --- описание
begin-time DateAndTime, --- время начала действия
end-time DateAndTime OPTIONAL --- время конца действия
}
--- виды платежных услуг (платежных сервисов), используемых ОРИ
oriPaymentServices TAGGED ::= {
OID {sorm-report-dictionary-ori-payment-services}
DATA SEQUENCE OF OriPaymentServiceRecord
}
OriPaymentServiceRecord ::= SEQUENCE {
telco-id TelcoID, --- идентификатор оператора связи или филиала
service-id INTEGER (0 .. 65535), --- идентификатор сервиса
payment-service-id INTEGER (0 .. 65535), --- идентификатор платежной услуги
description UTF8String (SIZE (1 .. 256)), --- описание
begin-time DateAndTime, --- время начала действия
end-time DateAndTime OPTIONAL --- время конца действия
}
END
Locations.asn |
Locations DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS LocationInfo;
IMPORTS ProjectionType
FROM NetworkIdentifiers;
MobileORILocation ::= SEQUENCE {
mcc [0] UTF8String (SIZE (1 .. 4)) OPTIONAL, --- код страны оператора связи пользователя ОРИ
mnc [1] UTF8String (SIZE (1 .. 3)) OPTIONAL, --- код оператора связи пользователя ОРИ
lac [2] INTEGER (0 .. 65535) OPTIONAL, --- код LAC оператора связи пользователя ОРИ
cell [3] INTEGER (0 .. 4294967295) OPTIONAL, --- код БС оператора связи пользователя ОРИ
network-operator [4] UTF8String (SIZE (1 .. 64)) OPTIONAL --- наименование оператора связи пользователя ОРИ
}
GeoLocation ::= SEQUENCE {
latitude-grade REAL, --- широта
longitude-grade REAL, --- долгота
projection-type ProjectionType --- тип проекции координат
}
LocationInfo ::= SEQUENCE {
mobile-ori-location [0] MobileORILocation OPTIONAL,
geo-location [1] GeoLocation OPTIONAL,
description [2] UTF8String (SIZE (1 .. 4096)) OPTIONAL
}
END
Reports.asn |
Reports DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS reportMessage,
Acknowledgement;
IMPORTS TAGGED,
sorm-message-report
FROM Classification
MessageID
FROM Sorm
TaskID
FROM Tasks
DictionaryReport
FROM Dictionaries
PresenseReport
FROM ReportsPresense
AbonentsORIReport
FROM ReportsAbonentsORI
ConnectionsORIReport
FROM ReportsConnectionsORI;
reportMessage TAGGED ::= {
OID {sorm-message-report}
DATA CHOICE {
report [0] Report, --- тип сообщения "отчет"
ack [1] Acknowledgement --- тип сообщения "подтверждение"
}
}
--- Блок данных сообщения типа "отчет"
Report ::= SEQUENCE {
request-id MessageID, --- идентификатор запроса, запросивший отчёт
task-id TaskID, --- идентификатор задачи, сгенерировавшей данный отчет
total-blocks-number INTEGER, --- общее количество блоков в отчете
block-number INTEGER, --- порядковый номер текущего блока
report-block ReportDataBlock --- блок данных отчета
}
ReportDataBlock ::= CHOICE {
dictionary [0] DictionaryReport, --- отчеты задач пополнения справочников (нормативно-справочная информация)
presense [6] PresenseReport, --- отчеты задач по запросу наличия в ИС СОРМ информации
abonents-ori [8] AbonentsORIReport, --- отчеты задач по принадлежности абонентов организаторов распространения информации
connections-ori [9] ConnectionsORIReport --- отчеты задач по соединениям абонентов организаторов распространения информации
}
--- Подтверждение приёма блока, передаётся с номером сообщения соответствующему номеру сообщения блока отчёта
Acknowledgement ::= SEQUENCE {
successful BOOLEAN, --- признак успешного приёма блока
broken-record INTEGER OPTIONAL, --- номер записи в отчете, обработанной на ПУ с ошибкой
error-description UTF8String (SIZE (1 .. 1024)) OPTIONAL --- описание ошибки приёма блока в произвольной форме
}
END
ReportsPresense.asn |
ReportsPresense DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS PresenseReport;
IMPORTS TAGGED,
sorm-report-presense-dictionaries,
sorm-report-presense-abonents-ori,
sorm-report-presense-connections-ori
FROM Classification
FindRange
FROM Sorm
TelcoID
FROM Tasks;
--- отчет по запросу наличия информации
PresenseReport ::= SEQUENCE {
id TAGGED.&id ({ReportedPresensesVariants}),
data TAGGED.&Data ({ReportedPresensesVariants}{@id})
}
ReportedPresensesVariants TAGGED ::= {
dictionariesPresence --- отчет по наличию информации по справочникам
| abonentsORIPresence --- отчет по наличию информации по информации по пользователям ОРИ и их идентификаторам
| connectionsORIPresence --- отчет по наличию информации по соединениям пользователя ОРИ
}
--- отчет по наличию информации по справочникам.
--- Если какой-либо из справочников не публикуется ИС СОРМ, запись о нем отсутствует
dictionariesPresence TAGGED ::= {
OID {sorm-report-presense-dictionaries}
DATA SEQUENCE OF DictionaryInfo
}
--- запись отчета о наличии справочной информации
DictionaryInfo ::= SEQUENCE {
telco-id TelcoID, --- идентификатор оператора связи или филиала
dict ObjectDescriptor, --- тип справочника, по которому есть информация
count INTEGER (1 .. 4294967295), --- количество записей в справочнике
change-dates FindRange --- минимальное и максимальное дата/время изменения записей в справочнике
}
--- отчет по наличию информации по информации по пользователям ОРИ и их идентификаторам
abonentsORIPresence TAGGED ::= {
OID {sorm-report-presense-abonents-ori}
DATA SEQUENCE OF AbonentsORIPresenseRecord
}
AbonentsORIPresenseRecord ::= SEQUENCE {
range FindRange, --- интервал времени, на который имеются данные в ИС ОРИ
count INTEGER, --- количество записей
service-id INTEGER (0 .. 65535) OPTIONAL --- идентификатор сервиса
}
--- отчет по наличию информации по соединениям пользователя ОРИ
connectionsORIPresence TAGGED ::= {
OID {sorm-report-presense-connections-ori}
DATA SEQUENCE OF ConnectionsORIPresenseRecord
}
ConnectionsORIPresenseRecord ::= SEQUENCE {
range FindRange, --- интервал времени, на который имеются данные в ИС ОРИ
count INTEGER, --- количество записей
data-type ConnectionsORIPresenseType, --- вид событий в ИС ОРИ, информация по которым есть в ИС СОРМ
service-id INTEGER (0 .. 65535) OPTIONAL --- идентификатор сервиса
}
ConnectionsORIPresenseType ::= ENUMERATED {
data (0), --- записи об информационном взаимодействии пользователей в ИС ОРИ
link (1), --- записи о добавлении/исключении связанных пользователей
aaa (2), --- записи о регистрации, прекращения регистрации, авторизации, выхода из информационного сервиса
}
END
Tasks.asn |
Tasks DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS taskMessage,
TaskID,
TelcoID,
TelcoList,
LogicalOperation,
CreateTaskResponse;
IMPORTS TAGGED,
sorm-message-task
FROM Classification
FindRange,
MessageID
FROM Sorm
DictionaryTask
FROM Dictionaries
PresenseTask
FROM TasksPresense
AbonentsORITask
FROM TasksAbonentsORI
ConnectionsORITask
FROM TasksConnectionsORI;
taskMessage TAGGED ::= {
OID {sorm-message-task}
DATA CHOICE {
data-ready-request [0] DataReadyRequest, --- запрос готовности данных
data-ready-response [1] DataReadyResponse, --- ответ на запрос готовности данных
data-load-request [2] DataLoadRequest, --- запрос загрузки данных
data-load-response [3] DataLoadResponse, --- ответ на запрос загрузки данных
data-drop-request [4] DataDropRequest, --- запрос удаления данных
data-drop-response [5] DataDropResponse, --- ответ на запрос удаления данных
data-interrupt-request [6] DataInterruptRequest, --- запрос прерывания загрузки данных
data-interrupt-response [7] DataInterruptResponse, --- ответ на запрос прерывания загрузки данных
create-task-request [8] CreateTaskRequest, --- запрос на создание задачи по обработке информации
create-task-response [9] CreateTaskResponse --- ответ на запрос создания задачи
}
}
--- запрос готовности данных
DataReadyRequest ::= NULL
--- ответ на запрос готовности данных
DataReadyResponse ::= SEQUENCE OF DataReadyTaskRecord
DataReadyTaskRecord ::= SEQUENCE {
task-id TaskID, --- идентификатор задачи
result TaskResult --- результат выполнения задачи
}
TaskResult ::= SEQUENCE {
result TaskStatus,
report-records-number [0] INTEGER (0 .. 999999999999) OPTIONAL, --- для выполненной задачи - количество записей в отчете
report-limit-exeeded [1] BOOLEAN OPTIONAL, --- количество записей превысило лимит,заданный при создании задачи
error-description [2] UTF8String (SIZE (1 .. 256)) OPTIONAL --- краткое описание произошедшей ошибки, если обнаружена
}
TaskStatus ::= ENUMERATED {
data-not-ready (0), --- данные не готовы, задача еще выполняется
data-ready (1), --- данные есть, задача выполнена
data-not-found (2), --- данных нет, задача выполнена
error (3) --- в процессе выполнения задачи произошла ошибка
}
--- запрос загрузки данных
DataLoadRequest ::= TaskID
--- ответ на запрос загрузки данных
DataLoadResponse ::= SEQUENCE {
task-id TaskID, --- идентификатор задачи, сгенерировавшей данный отчет
data-exists BOOLEAN, --- признак существования результатов исполнения задачи (есть данные или нет)
data-blocks-number INTEGER (0 .. 999999999999) OPTIONAL, --- количество блоков в отчете
error-description UTF8String (SIZE (1 .. 256)) OPTIONAL --- краткое описание ошибки, если обнаружена
}
--- запрос удаления данных
DataDropRequest ::= TaskID
--- ответ на запрос удаления данных
DataDropResponse ::= SEQUENCE {
task-id TaskID, --- идентификатор задачи, данные которой будут удалены
successful BOOLEAN, --- признак успешного выполнения запроса
error-description UTF8String (SIZE (1 .. 256)) OPTIONAL --- краткое описание ошибки, если обнаружена
}
--- запрос прерывания загрузки данных
DataInterruptRequest ::= TaskID
--- ответ на запрос прерывания загрузки данных
DataInterruptResponse ::= SEQUENCE {
request-id MessageID, --- идентификатор прерванного запроса загрузки данных
successful BOOLEAN, --- признак успешного выполнения запроса
data-blocks-available INTEGER (0 .. 999999999999) OPTIONAL, --- количество оставшихся непереданными блоков
error-description UTF8String (SIZE (1 .. 256)) OPTIONAL --- краткое описание ошибки, если обнаружена
}
--- запрос на создание задачи по обработке информации
CreateTaskRequest ::= SEQUENCE {
telcos [0] TelcoList OPTIONAL, --- cписок операторов связи
range [1] FindRange OPTIONAL, --- временной диапазон поиска
report-limit [2] INTEGER (1 .. 10000000) OPTIONAL, --- ограничение на максимальное количество возвращаемых записей
task [3] CHOICE {
dictionary [0] DictionaryTask, --- задачи пополнения справочников (нормативно-справочная информация)
presense [6] PresenseTask, --- задачи предоставления сведений о наличии данных
abonents-ori [7] AbonentsORITask, --- задачи поисков по принадлежности абонентов организаторов распространения информации
connections-ori [8] ConnectionsORITask --- задачи поисков по соединениям абонентов организаторов распространения информации
},
find-by-arrive-time BOOLEAN OPTIONAL --- режим поиска информации (true - по дате и времени поступления; false - по дате и времени события; по умолчанию - false)
}
--- ответ на запрос создания задачи
CreateTaskResponse ::= SEQUENCE {
task-id TaskID OPTIONAL, --- идентификатор задачи
successful BOOLEAN, --- признак успешного выполнения запроса
error-description UTF8String (SIZE (1 .. 256)) OPTIONAL --- краткое описание ошибки, если обнаружена
}
--- идентификатор задачи
TaskID ::= INTEGER (0 .. 4294967295)
--- идентификатор оператора связи или филиала
TelcoID ::= INTEGER (0 .. 65535)
--- список идентификаторов операторов связи или филиалов
TelcoList ::= SEQUENCE OF TelcoID
LogicalOperation ::= ENUMERATED {
operation-open-bracket (0), --- открывающая скобка - "("
operation-close-bracket (1), --- закрывающая скобка - ")"
operation-or (2), --- логическое "или"
operation-and (3), --- логическое "и"
operation-not (4) --- логическое "не"
}
END
TasksPresense.asn |
TasksPresense DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS PresenseTask;
IMPORTS TAGGED,
sorm-request-presense
FROM Classification;
PresenseTask ::= SEQUENCE {
id TAGGED.&id ({PresenseListVariants}),
data TAGGED.&Data ({PresenseListVariants}{@id})
}
PresenseListVariants TAGGED ::= {presenseInfo}
presenseInfo TAGGED ::= {
OID {sorm-request-presense}
DATA RequestPresenseData
}
RequestPresenseData ::= ENUMERATED {
dictionaries (3), --- запрос наличия справочников
abonents-ori (5), --- запрос наличия информации по информации по пользователям ОРИ и их идентификаторам
connections-ori (6) --- запрос наличия информации по соединениям пользователя ОРИ
}
END
Unformatted.asn |
Unformatted DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS unformattedMessage;
IMPORTS TAGGED,
sorm-message-unformatted
FROM Classification
TelcoList
FROM Tasks
Acknowledgement
FROM Reports
ConnectionsORIReport
FROM ReportsConnectionsORI
DateAndTime,
MessageID
FROM Sorm;
unformattedMessage TAGGED ::= {
OID {sorm-message-unformatted}
DATA CHOICE {
request [0] RawRequest,
response [1] RawResponse,
report [2] RawReport,
report-ack [3] RawAcknowledgement
}
}
RawRequest ::= SEQUENCE {
telcos TelcoList, --- cписок операторов связи
raw-task RawRequestTask --- запрос получения неформатированных данных
}
RawRequestTask ::= CHOICE {
data-types-request [0] DataTypesRequest, --- запрос проверки наличия вида неформатированных данных в ИС СОРМ
data-start-request [1] DataStartRequest, --- запрос на начало передачи неформатированных данных
data-stop-request [2] DataStopRequest --- запрос на остановку передачи неформатированных данных
}
RawResponse ::= CHOICE {
data-types-response [0] DataTypesResponse, --- ответ на запрос проверки наличия неформатированных вида данных в ИС СОРМ
data-start-response [1] DataStartResponse, --- ответ на запрос начала передачи неформатированных данных
data-stop-response [2] DataStopResponse --- ответ на запрос остановки передачи неформатированных данных
}
DataTypesRequest ::= RawDataType
DataTypesResponse ::= SEQUENCE {
successful BOOLEAN, --- признак наличия в ИС СОРМ запрошенного вида неформатированных данных
selected-type RawDataType, --- выбранный вид данных для передачи
time-from DateAndTime, --- начало временного периода в буфере, начиная с которого накоплены данные
time-to DateAndTime --- конец временного периода в буфере, по которому накоплены данные
}
DataStartRequest ::= SEQUENCE {
time-from DateAndTime, --- начало временного периода в буфере, с которого необходимо получить данные
time-to DateAndTime, --- конец временного периода в буфере, с которого необходимо получить данные
raw-type RawDataType --- тип неформатированных данных передачи
}
DataStartResponse ::= BOOLEAN
DataStopRequest ::= NULL
DataStopResponse ::= BOOLEAN
--- типы данных, передаваемых ИС СОРМ
RawDataType ::= ENUMERATED {
data-reports-ori (3), --- запис<