Конфигурационный файл для собой файл в формате XML, который оформлен в соответствии со схемой данных, приведенной в файле ecss_modificators.xsd.

 Просмотр файла
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- categoryType -->
<xs:simpleType name="categoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="unknownAtThisTime"/>
<xs:enumeration value="operatorFrench"/>
<xs:enumeration value="operatorEngish">
<xs:annotation>
<xs:documentation xml:lang="en">Obsolete value. Correct value is operatorEnglish</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="operatorEnglish"/>
<xs:enumeration value="operatorGerman"/>
<xs:enumeration value="operatorRussian"/>
<xs:enumeration value="operatorSpanish"/>
<xs:enumeration value="reserved"/>
<xs:enumeration value="ordinarySubscriber"/>
<xs:enumeration value="subscriberWithPriority"/>
<xs:enumeration value="dataCall"/>
<xs:enumeration value="testCall"/>
<xs:enumeration value="spare"/>
<xs:enumeration value="payphone"/>
<xs:enumeration value="category0"/>
<xs:enumeration value="hotelsSubscriber"/>
<xs:enumeration value="freeSubscriber"/>
<xs:enumeration value="paidSubscriber"/>
<xs:enumeration value="localSubscriber"/>
<xs:enumeration value="localTaksofon"/>
<xs:enumeration value="autoCallI"/>
<xs:enumeration value="semiautoCallI"/>
<xs:enumeration value="autoCallII"/>
<xs:enumeration value="semiautoCallII"/>
<xs:enumeration value="autoCallIII"/>
<xs:enumeration value="semiautoCallIII"/>
<xs:enumeration value="autoCallIV"/>
<xs:enumeration value="semiautoCallIV"/>
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
<xs:enumeration value="5"/>
<xs:enumeration value="6"/>
<xs:enumeration value="7"/>
<xs:enumeration value="8"/>
<xs:enumeration value="9"/>
<xs:enumeration value="10"/>
<xs:enumeration value="11"/>
<xs:enumeration value="12"/>
<xs:enumeration value="13"/>
<xs:enumeration value="14"/>
<xs:enumeration value="15"/>
<xs:enumeration value="16"/>
<xs:enumeration value="17"/>
<xs:enumeration value="18"/>
<xs:enumeration value="19"/>
<xs:enumeration value="20"/>
<xs:enumeration value="21"/>
<xs:enumeration value="22"/>
<xs:enumeration value="23"/>
<xs:enumeration value="24"/>
<xs:enumeration value="25"/>
<xs:enumeration value="26"/>
<xs:enumeration value="27"/>
<xs:enumeration value="28"/>
<xs:enumeration value="29"/>
<xs:enumeration value="30"/>
<xs:enumeration value="31"/>
<xs:enumeration value="32"/>
<xs:enumeration value="33"/>
<xs:enumeration value="34"/>
<xs:enumeration value="35"/>
<xs:enumeration value="36"/>
<xs:enumeration value="37"/>
<xs:enumeration value="38"/>
<xs:enumeration value="39"/>
<xs:enumeration value="40"/>
<xs:enumeration value="41"/>
<xs:enumeration value="42"/>
<xs:enumeration value="43"/>
<xs:enumeration value="44"/>
<xs:enumeration value="45"/>
<xs:enumeration value="46"/>
<xs:enumeration value="47"/>
<xs:enumeration value="48"/>
<xs:enumeration value="49"/>
<xs:enumeration value="50"/>
<xs:enumeration value="51"/>
<xs:enumeration value="52"/>
<xs:enumeration value="53"/>
<xs:enumeration value="54"/>
<xs:enumeration value="55"/>
<xs:enumeration value="56"/>
<xs:enumeration value="57"/>
<xs:enumeration value="58"/>
<xs:enumeration value="59"/>
<xs:enumeration value="60"/>
<xs:enumeration value="61"/>
<xs:enumeration value="62"/>
<xs:enumeration value="63"/>
<xs:enumeration value="64"/>
<xs:enumeration value="65"/>
<xs:enumeration value="66"/>
<xs:enumeration value="67"/>
<xs:enumeration value="68"/>
<xs:enumeration value="69"/>
<xs:enumeration value="70"/>
<xs:enumeration value="71"/>
<xs:enumeration value="72"/>
<xs:enumeration value="73"/>
<xs:enumeration value="74"/>
<xs:enumeration value="75"/>
<xs:enumeration value="76"/>
<xs:enumeration value="77"/>
<xs:enumeration value="78"/>
<xs:enumeration value="79"/>
<xs:enumeration value="80"/>
<xs:enumeration value="81"/>
<xs:enumeration value="82"/>
<xs:enumeration value="83"/>
<xs:enumeration value="84"/>
<xs:enumeration value="85"/>
<xs:enumeration value="86"/>
<xs:enumeration value="87"/>
<xs:enumeration value="88"/>
<xs:enumeration value="89"/>
<xs:enumeration value="90"/>
<xs:enumeration value="91"/>
<xs:enumeration value="92"/>
<xs:enumeration value="93"/>
<xs:enumeration value="94"/>
<xs:enumeration value="95"/>
<xs:enumeration value="96"/>
<xs:enumeration value="97"/>
<xs:enumeration value="98"/>
<xs:enumeration value="99"/>
<xs:enumeration value="100"/>
<xs:enumeration value="101"/>
<xs:enumeration value="102"/>
<xs:enumeration value="103"/>
<xs:enumeration value="104"/>
<xs:enumeration value="105"/>
<xs:enumeration value="106"/>
<xs:enumeration value="107"/>
<xs:enumeration value="108"/>
<xs:enumeration value="109"/>
<xs:enumeration value="110"/>
<xs:enumeration value="111"/>
<xs:enumeration value="112"/>
<xs:enumeration value="113"/>
<xs:enumeration value="114"/>
<xs:enumeration value="115"/>
<xs:enumeration value="116"/>
<xs:enumeration value="117"/>
<xs:enumeration value="118"/>
<xs:enumeration value="119"/>
<xs:enumeration value="120"/>
<xs:enumeration value="121"/>
<xs:enumeration value="122"/>
<xs:enumeration value="123"/>
<xs:enumeration value="124"/>
<xs:enumeration value="125"/>
<xs:enumeration value="126"/>
<xs:enumeration value="127"/>
<xs:enumeration value="128"/>
<xs:enumeration value="129"/>
<xs:enumeration value="130"/>
<xs:enumeration value="131"/>
<xs:enumeration value="132"/>
<xs:enumeration value="133"/>
<xs:enumeration value="134"/>
<xs:enumeration value="135"/>
<xs:enumeration value="136"/>
<xs:enumeration value="137"/>
<xs:enumeration value="138"/>
<xs:enumeration value="139"/>
<xs:enumeration value="140"/>
<xs:enumeration value="141"/>
<xs:enumeration value="142"/>
<xs:enumeration value="143"/>
<xs:enumeration value="144"/>
<xs:enumeration value="145"/>
<xs:enumeration value="146"/>
<xs:enumeration value="147"/>
<xs:enumeration value="148"/>
<xs:enumeration value="149"/>
<xs:enumeration value="150"/>
<xs:enumeration value="151"/>
<xs:enumeration value="152"/>
<xs:enumeration value="153"/>
<xs:enumeration value="154"/>
<xs:enumeration value="155"/>
<xs:enumeration value="156"/>
<xs:enumeration value="157"/>
<xs:enumeration value="158"/>
<xs:enumeration value="159"/>
<xs:enumeration value="160"/>
<xs:enumeration value="161"/>
<xs:enumeration value="162"/>
<xs:enumeration value="163"/>
<xs:enumeration value="164"/>
<xs:enumeration value="165"/>
<xs:enumeration value="166"/>
<xs:enumeration value="167"/>
<xs:enumeration value="168"/>
<xs:enumeration value="169"/>
<xs:enumeration value="170"/>
<xs:enumeration value="171"/>
<xs:enumeration value="172"/>
<xs:enumeration value="173"/>
<xs:enumeration value="174"/>
<xs:enumeration value="175"/>
<xs:enumeration value="176"/>
<xs:enumeration value="177"/>
<xs:enumeration value="178"/>
<xs:enumeration value="179"/>
<xs:enumeration value="180"/>
<xs:enumeration value="181"/>
<xs:enumeration value="182"/>
<xs:enumeration value="183"/>
<xs:enumeration value="184"/>
<xs:enumeration value="185"/>
<xs:enumeration value="186"/>
<xs:enumeration value="187"/>
<xs:enumeration value="188"/>
<xs:enumeration value="189"/>
<xs:enumeration value="190"/>
<xs:enumeration value="191"/>
<xs:enumeration value="192"/>
<xs:enumeration value="193"/>
<xs:enumeration value="194"/>
<xs:enumeration value="195"/>
<xs:enumeration value="196"/>
<xs:enumeration value="197"/>
<xs:enumeration value="198"/>
<xs:enumeration value="199"/>
<xs:enumeration value="200"/>
<xs:enumeration value="201"/>
<xs:enumeration value="202"/>
<xs:enumeration value="203"/>
<xs:enumeration value="204"/>
<xs:enumeration value="205"/>
<xs:enumeration value="206"/>
<xs:enumeration value="207"/>
<xs:enumeration value="208"/>
<xs:enumeration value="209"/>
<xs:enumeration value="210"/>
<xs:enumeration value="211"/>
<xs:enumeration value="212"/>
<xs:enumeration value="213"/>
<xs:enumeration value="214"/>
<xs:enumeration value="215"/>
<xs:enumeration value="216"/>
<xs:enumeration value="217"/>
<xs:enumeration value="218"/>
<xs:enumeration value="219"/>
<xs:enumeration value="220"/>
<xs:enumeration value="221"/>
<xs:enumeration value="222"/>
<xs:enumeration value="223"/>
<xs:enumeration value="224"/>
<xs:enumeration value="225"/>
<xs:enumeration value="226"/>
<xs:enumeration value="227"/>
<xs:enumeration value="228"/>
<xs:enumeration value="229"/>
<xs:enumeration value="230"/>
<xs:enumeration value="231"/>
<xs:enumeration value="232"/>
<xs:enumeration value="233"/>
<xs:enumeration value="234"/>
<xs:enumeration value="235"/>
<xs:enumeration value="236"/>
<xs:enumeration value="237"/>
<xs:enumeration value="238"/>
<xs:enumeration value="239"/>
<xs:enumeration value="240"/>
<xs:enumeration value="241"/>
<xs:enumeration value="242"/>
<xs:enumeration value="243"/>
<xs:enumeration value="244"/>
<xs:enumeration value="245"/>
<xs:enumeration value="246"/>
<xs:enumeration value="247"/>
<xs:enumeration value="248"/>
<xs:enumeration value="249"/>
<xs:enumeration value="250"/>
<xs:enumeration value="251"/>
<xs:enumeration value="252"/>
<xs:enumeration value="253"/>
<xs:enumeration value="254"/>
<xs:enumeration value="255"/>
</xs:restriction>
</xs:simpleType>
<!-- naiType -->
<xs:simpleType name="naiType">
<xs:restriction base="xs:string">
<xs:enumeration value="spare"/>
<xs:enumeration value="subscriberNumber"/>
<xs:enumeration value="unknown"/>
<xs:enumeration value="nationalNumber"/>
<xs:enumeration value="internationNumber"/>
</xs:restriction>
</xs:simpleType>
<!-- inniType -->
<xs:simpleType name="inniType">
<xs:restriction base="xs:string">
<xs:enumeration value="routingToInternalNumberAllowed"/>
<xs:enumeration value="routingToInternalNumberNotAllowed"/>
</xs:restriction>
</xs:simpleType>
<!-- npiType -->
<xs:simpleType name="npiType">
<xs:restriction base="xs:string">
<xs:enumeration value="spare"/>
<xs:enumeration value="isdnTelephony"/>
<xs:enumeration value="dataNumberingPlan"/>
<xs:enumeration value="telexNumberingPlan"/>
<xs:enumeration value="reserved1"/>
<xs:enumeration value="reserved2"/>
<xs:enumeration value="reserved3"/>
</xs:restriction>
</xs:simpleType>
<!-- niType -->
<xs:simpleType name="niType">
<xs:restriction base="xs:string">
<xs:enumeration value="private"/>
<xs:enumeration value="local"/>
<xs:enumeration value="zone"/>
<xs:enumeration value="intercity"/>
<xs:enumeration value="international"/>
<xs:enumeration value="emergency"/>
</xs:restriction>
</xs:simpleType>
<!-- apriType -->
<xs:simpleType name="apriType">
<xs:restriction base="xs:string">
<xs:enumeration value="presentationAllowed"/>
<xs:enumeration value="presentationRestricted"/>
<xs:enumeration value="addressNotAvailable"/>
<xs:enumeration value="spare"/>
</xs:restriction>
</xs:simpleType>
<!-- screeningType -->
<xs:simpleType name="screeningType">
<xs:restriction base="xs:string">
<xs:enumeration value="userProvidedNotVerified"/>
<xs:enumeration value="userProvidedVerifiedAndPassed"/>
<xs:enumeration value="userProvidedVerifiedAndFailed"/>
<xs:enumeration value="networkProvided"/>
</xs:restriction>
</xs:simpleType>
<!-- booleanType -->
<xs:simpleType name="booleanType">
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<!-- ruleType -->
<xs:complexType name="ruleType">
<xs:sequence>
<xs:element name="conditions" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="cgpn" type="cgpnType" minOccurs="0"/>
<xs:element name="cdpn" type="cdpnType" minOccurs="0"/>
<xs:element name="rgn" type="rgnConditionType" minOccurs="0"/>
<xs:element name="rnn" type="rnnConditionType" minOccurs="0"/>
<xs:element name="ocdpn" type="ocdpnConditionType" minOccurs="0"/>
<xs:element name="cn" type="cnConditionType" minOccurs="0"/>
<xs:element name="time" type="valueType" minOccurs="0"/>
<xs:element name="date" type="valueType" minOccurs="0"/>
<xs:element name="weekday" type="valueType" minOccurs="0"/>
<xs:element name="tag" type="valueType" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="actions" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="cgpn" type="cgpnType" minOccurs="0"/>
<xs:element name="cdpn" type="cdpnType" minOccurs="0"/>
<xs:element name="rgn" type="rgnActionType" minOccurs="0"/>
<xs:element name="rnn" type="rnnActionType" minOccurs="0"/>
<xs:element name="ocdpn" type="ocdpnActionType" minOccurs="0"/>
<xs:element name="cn" type="cnActionType" minOccurs="0"/>
<xs:element name="empty_rgn" type="nullType" minOccurs="0">
<xs:annotation><xs:documentation xml:lang="en">Remove routing number.</xs:documentation></xs:annotation>
</xs:element>
<xs:element name="empty_ocdpn" type="nullType" minOccurs="0">
<xs:annotation><xs:documentation xml:lang="en">Remove original called number.</xs:documentation></xs:annotation>
</xs:element>
<xs:element name="empty_cn" type="nullType" minOccurs="0">
<xs:annotation><xs:documentation xml:lang="en">Remove connected number.</xs:documentation></xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="result">
<xs:complexType>
<xs:choice>
<xs:element name="finish" type="finishResultType"/>
<xs:element name="error" type="errorResultType"/>
<xs:element name="next" type="nextResultType"/>
<xs:element name="continue" type="continueResultType"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="description" type="xs:string" use="optional"/>
</xs:complexType>
<!-- modificatorsType -->
<xs:complexType name="modificatorsType">
<xs:all>
<xs:element name="in" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="rule" type="ruleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="out" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="rule" type="ruleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The name of the current modificators.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="description" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Text description of the current modificators.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- adaptationType -->
<xs:complexType name="adaptationType">
<xs:sequence>
<xs:element name="rule" type="ruleType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The name of the current adaptation.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="description" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Text description of the current adaptation.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- modificators -->
<xs:element name="modificators" type="modificatorsType"/>
<!-- adaptation -->
<xs:element name="adaptation" type="adaptationType"/>
<!-- cdpnType -->
<xs:complexType name="cdpnType">
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="inni" type="inniType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="category" type="categoryType"/>
<xs:attribute name="in_list" type="xs:string"/>
<xs:attribute name="display_name" type="xs:string"/>
<xs:attribute name="city" type="xs:string"/>
<xs:attribute name="region" type="xs:string"/>
<xs:attribute name="operator" type="xs:string"/>
</xs:complexType>
<!-- cgpnType -->
<xs:complexType name="cgpnType">
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="screening" type="screeningType"/>
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="in_list" type="xs:string"/>
<xs:attribute name="display_name" type="xs:string"/>
<xs:attribute name="transit_display_name" type="booleanType"/>
<xs:attribute name="caller_id" type="xs:string"/>
<xs:attribute name="city" type="xs:string"/>
<xs:attribute name="region" type="xs:string"/>
<xs:attribute name="operator" type="xs:string"/>
</xs:complexType>
<!-- rgnConditionType -->
<xs:complexType name="rgnConditionType">
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="in_list" type="xs:string"/>
<xs:attribute name="empty" type="booleanType">
<xs:annotation>
<xs:documentation>In case of empty attribute set - other attributes MUST NOT be set.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- rnnConditionType -->
<xs:complexType name="rnnConditionType">
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="inni" type="inniType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="in_list" type="xs:string"/>
<xs:attribute name="empty" type="booleanType">
<xs:annotation>
<xs:documentation>In case of empty attribute set - other attributes MUST NOT be set.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- ocdpnConditionType -->
<xs:complexType name="ocdpnConditionType">
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="category" type="categoryType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="in_list" type="xs:string"/>
<xs:attribute name="empty" type="booleanType">
<xs:annotation>
<xs:documentation>In case of empty attribute set - other attributes MUST NOT be set.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- cnConditionType -->
<xs:complexType name="cnConditionType">
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="in_list" type="xs:string"/>
<xs:attribute name="empty" type="booleanType">
<xs:annotation>
<xs:documentation>In case of empty attribute set - other attributes MUST NOT be set.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- rgnActionType -->
<xs:complexType name="rgnActionType">
<xs:attribute name="display_name" type="xs:string"/>
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="ni" type="niType"/>
</xs:complexType>
<!-- rnnActionType -->
<xs:complexType name="rnnActionType">
<xs:attribute name="display_name" type="xs:string"/>
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
<xs:attribute name="inni" type="inniType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="ni" type="niType"/>
</xs:complexType>
<!-- ocdpnActionType -->
<xs:complexType name="ocdpnActionType">
<xs:attribute name="display_name" type="xs:string"/>
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="category" type="categoryType"/>
<xs:attribute name="incomplete" type="xs:boolean"/>
</xs:complexType>
<!-- cnActionType -->
<xs:complexType name="cnActionType">
<xs:attribute name="display_name" type="xs:string"/>
<xs:attribute name="nai" type="naiType"/>
<xs:attribute name="npi" type="npiType"/>
<xs:attribute name="apri" type="apriType"/>
<xs:attribute name="digits" type="xs:string"/>
<xs:attribute name="ni" type="niType"/>
<xs:attribute name="caller_id" type="xs:string"/>
<xs:attribute name="transit_display_name" type="booleanType"/>
</xs:complexType>
<!-- valueType -->
<xs:complexType name="valueType">
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
<!-- nullType -->
<xs:complexType name="nullType"/>
<!-- Result types -->
<!-- finishResultType -->
<xs:complexType name="finishResultType"/>
<!-- errorResultType -->
<xs:complexType name="errorResultType">
<xs:attribute name="acp_cause" type="xs:string" use="optional"/>
<xs:attribute name="isup_cause" type="xs:string" use="optional"/>
<xs:attribute name="description" type="xs:string" use="optional"/>
</xs:complexType>
<!-- continueResultTypeType -->
<xs:simpleType name="continueResultTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="start"/>
<xs:enumeration value="next"/>
</xs:restriction>
</xs:simpleType>
<!-- nextResultType -->
<xs:complexType name="nextResultType">
<xs:attribute name="tag" type="xs:string" use="optional"/>
</xs:complexType>
<!-- continueResultType -->
<xs:complexType name="continueResultType">
<xs:attribute name="tag" type="xs:string" use="optional"/>
<xs:attribute name="type" type="continueResultTypeType" default="start" use="optional"/>
</xs:complexType>
</xs:schema>

Актуальный файл с описанием схемы данных находится на развернутой системе по пути /usr/lib/ecss/ecss-ds/lib/rm_lib-x.x.x.x/priv/ecss_modificators.xsd.

Каждый XML-файл представляет собой описание одного контекста модификации (группы правил) в рамках виртуальной АТС.

Формат описания контекста модификации:

<modificators>
    <in>
        <rule>
            <conditions></conditions>
            <actions></actions>
            <result></result>
        </rule>
        <rule></rule>
    </in>
    <out>
        <rule></rule>
  ...
  
        
        <rule></rule>
    </out>
</modificators>
CODE

1. <modificators>

Базовый элемент файла модификации, описывающий параметры контекста модификации.

Структура элемента <modificators> имеет следующий вид:

<modificators name="string" description="string">
</modificators>
CODE

где

  • name — строка с именем контекста модификации, должна быть уникальной в рамках виртуальной АТС;
  • description — текстовое описание контекста модификации.

Далее в рамках тега <modificators> между закрывающим и открывающим тегом идет набор тегов, описывающих правила модификаторов.
Анализ условий срабатывания правил производится в том порядке, в котором они указаны в файле — сверху вниз.

Примечание: в одном контексте модификаторов не может быть больше 1000 правил. Ограничение введено искусственно, так как количество правил влияет на скорость обработки модификации.

2. <rule>

Элементом <rule> описывается правило модификации.
Структура правила модификации имеет следующий вид:

<rule name="RuleName">
	<conditions>
    </conditions>
	<actions>
    </actions>
	<result>
    </result>
</rule>
CODE

где

  • RuleName — имя правила модификации. Строка, которая должна быть уникальной в рамках контекста модификации, выводится при трассировке модификации;
  • <conditions> — обязательный элемент, описывающий условия срабатывания правила модификации;
  • <actions> — опциональный элемент, описывающий набор операций, которые применяются к параметрам вызова при срабатывании правила модификации;
  • <result> — обязательный элемент, описывающий результат отработки правила модификации.

2.1 <conditions>

В элементе <conditions> описывается набор условий, выполнение которых приводит к выполнению правила.

Формат описания элемента <conditions> имеет следующий вид:

<conditions>
	<cgpn/>
	<cdpn/>
	<rgn/>
	<rnn/>
	<ocdpn/>
	<cn/>
	<time/>
	<date/>
	<weekday/>
	<tag/>
</conditions>
CODE

где

  • cdpn — поле сравнения номера вызываемого абонента (номер Б и его параметры);
  • cgpn — поле сравнения номера вызывающего абонента (номер А и его параметры);
  • rgn — поле сравнения номера который выполнил переадресацию;
  • rnn — поле сравнения номера на который выполнили переадресацию;
  • ocdpn — поле сравнения оригинального номера на который выполнили вызов;
  • cn — поле сравнения подключенного номера;
  • time — дата и время суток;
  • tag — вспомогательный параметр для организации многошаговой модификации в рамках одного контекста, по умолчанию установлено значение "undefined";

Каждый из указанных выше элементов в рамках <conditions> является опциональным и может быть использован не более одного раза.
Пустой набор критериев говорит об отсутствии ограничений.

2.1.1 <cgpn>

Параметры номера вызывающего абонента.

<cgpn digits="Digits" 
      nai="Nai" 
      incomplete="boolean" 
      npi="Npi" 
      apri="Apri" 
      screening="Screening" 
      ni="Ni" 
      in_list="List" 
      city="City" 
      region="Region" 
      operator="Operator"/>
CODE

где

  • digits — маска цифр номера вызывающего абонента, подробное описание приведено в разделе Маска цифр номера
  • nai — тип номера (NatureOfAddressInformation), принимает значения: spare, subscriberNumber, unknown, nationalNumber, internationNumber;
  • incomplete — признак полного номера, принимает значения:
    • false — номер полный,
    • true — номер не полный;
  • npi — код плана нумерации (NumberingPlanIndicator), принимает значения: spare, isdnTelephony, dataNumberingPlan, telexNumberingPlan, reserved1 (код 5), reserved2 (код 6), reserved3 (код 7);
  • apri — индикатор ограничения предоставления номера вызывающего абонента (AddressPresentationRestrictionIndicator):
    • presentationRestricted — запрет,
    • presentationAllowed — разрешение,
    • addressNotAvailable — недоступность номера;
    • spare — зарезервирован;
  • screening — индикатор контроля номера вызывающего абонента, принимает значения:
    • userProvidedNotVerified — предоставлена пользователем, не проверена;
    • userProvidedVerifiedAndPassed — предоставлена пользователем, проверка пройдена;
    • userProvidedVerifiedAndFailed — предоставлена пользователем, проверка не пройдена;
    • networkProvided — предоставлена сетью.
  • ni — индикатор номера (NumberIndicator), принимает значения:
    • private — частная сеть;
    • local — местная сеть;
    • zone — зоновая сеть;
    • intercity — междугородная сеть;
    • international — международная сеть;
    • emergency — спецслужбы.
  • in_list — имя списка для проверки номеров на вхождение. Список можно сформировать в приложении Web-конфигуратора "Группы мониторинга" или командами CLI. Тип списка должен быть default. Замечание: начиная с версии 3.14.5 добавлена поддержка глобальной базы категорий номеров. Для проверки вхождения номера в эту базу в качестве имени списка нужно указать ECSS_GLOBAL_NUMBER_LIST_NAME.
  • city — город абонента полученный из БД реестра плана нумерации РФ

    При задании через xml нужно учитывать знаки: точки, тире, пробелы.

    Для обозначения города используется сокращения: 

    • Г. — город;
    • ПГТ. — поселок городского типа;
    • Р-Н — район
  • operator — оператор абонента полученный из БД реестра плана нумерации РФ;
  • region — регион абонента полученный из БД реестра плана нумерации РФ.

2.1.2 <cdpn>

Параметры номера вызываемого абонента.

<cgpn digits="Digits" 
      nai="Nai" 
      incomplete="boolean" 
      npi="Npi" 
      category="Category" 
      ni="Ni" 
      inni="Inni" 
      in_list="List" 
      city="City" 
      region="Region" 
      operator="Operator"/>
CODE
где
  • digits — маска цифр номера вызываемого абонента, подробное описание приведено в разделе Маска цифр номера;
  • nai — тип номера (NatureOfAddressInformation), принимает значения: subscriberNumber, unknown, nationalNumber, internationNumber;
  • incomplete — признак полного номера, принимает значения:
    • false — номер полный,
    • true — номер не полный;
  • inni — индикатор внутрисетевого номера (InternalNetworkNumberIndicator), принимает значения:
    • routingToInternalNumberAllowed — маршрутизация на внутренний номер разрешена,
    • routingToInternalNumberNotAllowed — маршрутизация на внутренний номер не разрешена;
  • npi — код плана нумерации (NumberingPlanIndicator), принимает значения: isdnTelephony, dataNumberingPlan, telexNumberingPlan, reserved1 (код 5), reserved2 (код 6), reserved3 (код 7);
  • ni — признак номера (NumberIndicator), принимает значения:
    • private — частная сеть,
    • local — местная сеть,
    • zone — зоновая сеть,
    • intercity — междугородная сеть,
    • international — международная сеть,
    • emergency — спецслужбы.
  • in_list — имя списка для проверки номеров на вхождение. Список можно сформировать в приложении Web-конфигуратора "Группы мониторинга" или командами CLI. Тип списка должен быть default. Замечание: начиная с версии 3.14.5 добавлена поддержка глобальной базы категорий номеров. Для проверки вхождения номера в эту базу в качестве имени списка нужно указать ECSS_GLOBAL_NUMBER_LIST_NAME.
  • city — город абонента полученный из БД реестра плана нумерации РФ

    При задании через xml нужно учитывать знаки: точки, тире, пробелы.

    Для обозначения города используется сокращения: 

    • Г. — город;
    • ПГТ. — поселок городского типа;
    • Р-Н — район


  • operator — оператор абонента полученный из БД реестра плана нумерации РФ;
  • region — регион абонента полученный из БД реестра плана нумерации РФ;
  • category — категория абонента, может принимать строковое либо цифровое значение согласно таблице:

Таблица 1 — Категории абонента

Строковое значениеЦифровой код (ISUP)Цифровой код (АОН)
unknownAtThisTime0
operatorFrench1
operatorEngish2
operatorGerman3
operatorRussian4
operatorSpanish5
reserved9
ordinarySubscriber101 — ОАО "Ростелеком"
subscriberWithPriority114 — ООО "Эквант"
dataCall128 — ОАО "АРКТЕЛ"
testCall13
spare14
payphone156 — ЗАО "Компания ТрансТелеКом"
category0224
hotelsSubscriber2252 — ОАО "КОМСТАР-ОТС"
freeSubscriber226
paidSubscriber2277 — ЗАО "Синтерра"
localSubscriber2283 — ОАО "Вымпелком" (ранее ООО "СЦС Совинтел")
localTaksofon2299 — ОАО "Межрегиональный Транзит Телеком"
autoCallI240
semiautoCallI241
autoCallII242
semiautoCallII243
autoCallIII244
semiautoCallIII245
autoCallIV246
semiautoCallIV247
FETCH_BY_ECSS_GLOBAL_NUMBER_LIST_NAME

В данном случае система сделает запрос на получения категории номера из единой базы номеров ECSS-10.

Замечание:  данное значение можно выставить только в блоке conditions.

2.1.3 <rgn>

Параметры номера, который выполнил переадресацию:

<rgn digits="Digits" 
     nai="Nai" 
     incomplete="boolean" 
     npi="Npi" 
     apri="Apri" 
     ni="Ni" 
     empty="Empty" 
     in_list="List"/>
CODE

где

  • digits — маска цифр номера вызывающего абонента, подробное описание приведено в разделе Маска цифр номера
  • nai — тип номера (NatureOfAddressInformation), принимает значения: subscriberNumber, unknown, nationalNumber, internationNumber;
  • incomplete — признак полного номера, принимает значения:
    • false — номер полный,
    • true — номер не полный;
  • npi — код плана нумерации (NumberingPlanIndicator), принимает значения: isdnTelephony, dataNumberingPlan, telexNumberingPlan, reserved1 (код 5), reserved2 (код 6), reserved3 (код 7);
  • apri — индикатор ограничения предоставления номера вызывающего абонента (AddressPresentationRestrictionIndicator):
    • presentationRestricted — запрет,
    • presentationAllowed — разрешение,
    • addressNotAvailable — недоступность номера;
  • ni — индикатор номера (NumberIndicator), принимает значения:
    • private — частная сеть;
    • local — местная сеть;
    • zone — зоновая сеть;
    • intercity — междугородная сеть;
    • international — международная сеть;
    • emergency — спецслужбы;
  • empty — присутствует ли в сигнализации вызова параметр RedirectingNumber (В случае, если данный параметр выставлен — все остальные параметры (digits, nai, incompele, npi, apri, ni) не должны выставляться
    • false — RedirectingNumber не присутствует в сигнализации;
    • true — RedirectingNumber присутствует;
  • in_list — имя списка для проверки номеров на вхождение. Список можно сформировать в приложении Web-конфигуратора "Группы мониторинга" или командами CLI. Тип списка должен быть default. Замечание: начиная с версии 3.14.5 добавлена поддержка глобальной базы категорий номеров. Для проверки вхождения номера в эту базу в качестве имени списка нужно указать ECSS_GLOBAL_NUMBER_LIST_NAME.

2.1.4 <rnn>

Параметры номера на который выполнили переадресацию:

<rnn digits="Digits" 
     nai="Nai" 
     incomplete="boolean" 
     npi="Npi" 
     apri="Apri" 
     ni="Ni" 
     empty="Empty" 
     category="Category" 
     in_list="List"/>
CODE

где

  • digits — маска цифр номера вызывающего абонента, подробное описание приведено в разделе Маска цифр номера
  • nai — тип номера (NatureOfAddressInformation), принимает значения: subscriberNumber, unknown, nationalNumber, internationNumber;
  • incomplete — признак полного номера, принимает значения:
    • false — номер полный,
    • true — номер не полный;
  • npi — код плана нумерации (NumberingPlanIndicator), принимает значения: isdnTelephony, dataNumberingPlan, telexNumberingPlan, reserved1 (код 5), reserved2 (код 6), reserved3 (код 7);
  • apri — индикатор ограничения предоставления номера вызывающего абонента (AddressPresentationRestrictionIndicator):
    • presentationRestricted — запрет,
    • presentationAllowed — разрешение,
    • addressNotAvailable — недоступность номера;
  • ni — индикатор номера (NumberIndicator), принимает значения:
    • private — частная сеть;
    • local — местная сеть;
    • zone — зоновая сеть;
    • intercity — междугородная сеть;
    • international — международная сеть;
    • emergency — спецслужбы;
  • empty — присутствует ли в сигнализации вызова параметр RedirectionNumber (В случае, если данный параметр выставлен — все остальные параметры (digits, nai, incompele, npi, apri, ni) не должны выставляться
    • false — RedirectionNumber не присутствует в сигнализации;
    • true — RedirectionNumber присутствует;
  • in_list — имя списка для проверки номеров на вхождение. Список можно сформировать в приложении Web-конфигуратора "Группы мониторинга" или командами CLI. Тип списка должен быть default. Замечание: начиная с версии 3.14.5 добавлена поддержка глобальной базы категорий номеров. Для проверки вхождения номера в эту базу в качестве имени списка нужно указать ECSS_GLOBAL_NUMBER_LIST_NAME.
  • category — категория абонента, может принимать строковое либо цифровое значение согласно Таблице 1.

2.1.5 <ocdpn>

Параметры оригинального номера на который выполнили вызов:

<ocdpn digits="Digits" 
       nai="Nai" 
       incomplete="boolean" 
       npi="Npi" 
       apri="Apri" 
       ni="Ni" 
       empty="Empty" 
       category="Category" 
       in_list="List"/>
CODE

где

  • digits — маска цифр номера вызывающего абонента, подробное описание приведено в разделе Маска цифр номера
  • nai — тип номера (NatureOfAddressInformation), принимает значения: subscriberNumber, unknown, nationalNumber, internationNumber;
  • incomplete — признак полного номера, принимает значения:
    • false — номер полный,
    • true — номер не полный;
  • npi — код плана нумерации (NumberingPlanIndicator), принимает значения: isdnTelephony, dataNumberingPlan, telexNumberingPlan, reserved1 (код 5), reserved2 (код 6), reserved3 (код 7);
  • apri — индикатор ограничения предоставления номера вызывающего абонента (AddressPresentationRestrictionIndicator):
    • presentationRestricted — запрет,
    • presentationAllowed — разрешение,
    • addressNotAvailable — недоступность номера;
  • ni — индикатор номера (NumberIndicator), принимает значения:
    • private — частная сеть;
    • local — местная сеть;
    • zone — зоновая сеть;
    • intercity — междугородная сеть;
    • international — международная сеть;
    • emergency — спецслужбы;
  • empty — присутствует ли в сигнализации вызова параметр OriginalCalledNumber (В случае, если данный параметр выставлен — все остальные параметры (digits, nai, incompele, npi, apri, ni) не должны выставляться
    • false — OriginalCalledNumber не присутствует в сигнализации;
    • true — OriginalCalledNumber присутствует;
  • in_list — имя списка для проверки номеров на вхождение. Список можно сформировать в приложении Web-конфигуратора "Группы мониторинга" или командами CLI. Тип списка должен быть default. Замечание: начиная с версии 3.14.5 добавлена поддержка глобальной базы категорий номеров. Для проверки вхождения номера в эту базу в качестве имени списка нужно указать ECSS_GLOBAL_NUMBER_LIST_NAME.
  • category — категория абонента, может принимать строковое либо цифровое значение согласно Таблице 1.

2.1.6 <cn>

Параметры номера подключенного номера:

<cn digits="Digits" 
    nai="Nai" 
    npi="Npi" 
    apri="Apri" 
    ni="Ni" 
    empty="Empty" 
    in_list="List"/>
CODE

где

  • digits — маска цифр номера вызывающего абонента, подробное описание приведено в разделе Маска цифр номера
  • nai — тип номера (NatureOfAddressInformation), принимает значения: subscriberNumber, unknown, nationalNumber, internationNumber;
  • incomplete — признак полного номера, принимает значения:
    • false — номер полный,
    • true — номер не полный;
  • npi — код плана нумерации (NumberingPlanIndicator), принимает значения: isdnTelephony, dataNumberingPlan, telexNumberingPlan, reserved1 (код 5), reserved2 (код 6), reserved3 (код 7);
  • apri — индикатор ограничения предоставления номера вызывающего абонента (AddressPresentationRestrictionIndicator):
    • presentationRestricted — запрет,
    • presentationAllowed — разрешение,
    • addressNotAvailable — недоступность номера;
  • ni — индикатор номера (NumberIndicator), принимает значения:
    • private — частная сеть;
    • local — местная сеть;
    • zone — зоновая сеть;
    • intercity — междугородная сеть;
    • international — международная сеть;
    • emergency — спецслужбы;
  • empty — присутствует ли в сигнализации вызова параметр ConnectedNumber (В случае, если данный параметр выставлен — все остальные параметры (digits, nai, incompele, npi, apri, ni) не должны выставляться
    • false — ConnectedNumber не присутствует в сигнализации;
    • true — ConnectedNumber присутствует;
  • in_list — имя списка для проверки номеров на вхождение. Список можно сформировать в приложении Web-конфигуратора "Группы мониторинга" или командами CLI. Тип списка должен быть default. Замечание: начиная с версии 3.14.5 добавлена поддержка глобальной базы категорий номеров. Для проверки вхождения номера в эту базу в качестве имени списка нужно указать ECSS_GLOBAL_NUMBER_LIST_NAME.

2.1.7 <time>

Время суток, задается в виде: ЧЧ:ММ - ЧЧ:ММ, где ЧЧ — часы, ММ — минуты:

<time value="TimeMask"/>
CODE

где

  • value — маска времени суток. Подробное описание приведено в разделе Маска времени

2.1.8 <date>

Дата, задается в виде: ДД1.ММ1.ГГГГ1 - ДД2.ММ2.ГГГГ2, где ДД — день, ММ — месяц, ГГГГ — год:

<date value="DateMask"/>
CODE

где

  • value — маска даты. Подробное описание приведено в разделе Маска даты

2.1.9 <weekday>

День недели, задается в виде ДН1,ДН2,...,ДНX, где ДН — номер дня недели (числа от 1 до 7). Может быть указано от 1 до 7 дней недели.


    
      <weekday value=
        "
        WeekdayMask
        "
      
      />

  

где

2.1.10 <tag>

Специальный параметр, который можно установить для вызова при модификации.
Параметр действует только на этапе модификации, устанавливается в правиле модификации и в последующем используется для изменения отработки логики модификации:

<tag value="Tag"/>
CODE

где

  • value — строка, значение поля "tag" для вызова, проверяется на полное совпадение. По умолчанию значение — "undefined".

2.2 <actions>

Формат описания элемента <actions> имеет следующий вид:

<actions>
	<cgpn/>
 	<cdpn/>
 	<rgn/>
 	<rnn/>
 	<ocdpn/>
	<cn/>
 	<empty_rgn/>
 	<empty_ocdpn/>
 	<empty_cn/>
</actions>
CODE

где

  • cgpn — модификация параметров номера вызывающего абонента;
  • cdpn — модификация параметров номера вызываемого абонента;
  • rgn — модификация параметров номера который выполнил переадресацию;
  • rnn — модификация параметров номера на который выполнили переадресацию;
  • ocdpn — модификация параметров оригинального номера на который выполнили вызов;
  • cn — модификация параметров подключенного номера;
  • empty_cn — удалить из сигнализации параметр ConnectedNumber;
  • empty_rgn — удалить из сигнализации параметр RedirectingNumber;
  • empty_ocdpn — удалить из сигнализации параметр OriginalCalledNumber;

Действия указываются в порядке их выполнения. Все действия являются опциональными.

2.2.1 <cgpn>

Операция модификации параметров номера вызывающего абонента:

<cgpn digits="Digits" 
      nai="Nai" 
      incomplete="boolean" 
      npi="Npi" 
      apri="Apri" 
      screening="Screening" 
      ni="Ni" 
      display_name="DisplayName" 
      caller_id="CallerId" 
      transit_display_name="boolean"/>
CODE
где
  • digits — маска модификации цифр номера или новые цифры номера.
    Подробное описание приведено в разделе Модификация цифр номера.
  • display_name — модификация имени абонента описана в разделе Модификация имени абонента.
  • caller_id — маска модификации caller id, синтаксис аналогичен полю digits.
  • transit_display_name — модификация имени абонента не будет выполняться, если значение выставлено в true.
    Описание параметров "nai", "incomplete", "npi", "apri", "screening", "ni" аналогично описанию параметров элемента "cgpn" секции "conditions".

2.2.2 <cdpn>

Операция модификации параметров номера вызываемого абонента:

<cdpn digits="Digits" 
      nai="Nai" 
      incomplete="boolean" 
      npi="Npi" 
      category="Category" 
      ni="Ni" 
      inni="Inni" 
      display_name="DisplayName"/>
CODE
где
  • digits — маска модификации цифр номера или новые цифры номера.
    Подробное описание приведено в разделе Модификация цифр номера.
  • display_name — модификация имени абонента описана в разделе Модификация имени абонента.
    Описание параметров "nai", "incomplete", "npi", "category", "inni", "ni" аналогично описанию параметров элемента "cdpn" секции "conditions".

2.2.3 <rgn>

Операция модификации параметров номера, который выполнил переадресацию:

<rgn digits="Digits" 
     nai="Nai" 
     incomplete="boolean" 
     npi="Npi" 
     apri="Apri" 
     ni="Ni" 
     display_name="DisplayName"/>
CODE

где

  • digits — маска модификации цифр номера или новые цифры номера.
    Подробное описание приведено в разделе Модификация цифр номера.
  • display_name — модификация имени абонента описана в разделе Модификация имени абонента.
    Описание параметров "nai", "incomplete", "npi", "apri", "ni" аналогично описанию параметров элемента "rgn" секции "conditions".

2.2.3 <rnn>

Операция модификации параметров номера на который выполнили переадресацию:

<rnn digits="Digits" 
      nai="Nai" 
      incomplete="boolean" 
      npi="Npi" 
      category="Category" 
      inni="Inni" 
      ni="Ni" 
      display_name="DisplayName"/>
CODE

где

  • digits — маска модификации цифр номера или новые цифры номера.
    Подробное описание приведено в разделе Модификация цифр номера.
  • display_name — модификация имени абонента описана в разделе Модификация имени абонента.
    Описание параметров "nai", "incomplete", "npi", "inni", category", "ni" аналогично описанию параметров элемента "rnn" секции "conditions".

2.2.4 <ocdpn>

Операция модификации параметров оригинального номера на который выполнили вызов:

<ocdpn digits="Digits" 
       nai="Nai" 
       incomplete="boolean" 
       npi="Npi" 
       category="Category" 
       apri="Apri" 
       ni="Ni" 
       display_name="DisplayName"/>
CODE

где

  • digits — маска модификации цифр номера или новые цифры номера.
    Подробное описание приведено в разделе Модификация цифр номера.
  • display_name — модификация имени абонента описана в разделе Модификация имени абонента.
    Описание параметров "nai", "incomplete", "npi", "category", "apri", "ni" аналогично описанию параметров элемента "rnn" секции "conditions".

2.2.5 <cn>

Операция модификации параметров подключенного номера:

<cn digits="Digits" 
    nai="Nai" 
    npi="Npi" 
    apri="Apri" 
    ni="Ni" 
    empty="Empty" 
    display_name="DisplayName" 
    caller_id="CallerId" 
    transit_display_name="boolean"/>
CODE

где

  • digits — маска модификации цифр номера или новые цифры номера.
    Подробное описание приведено в разделе Модификация цифр номера.
  • display_name — модификация имени абонента описана в разделе Модификация имени абонента.
  • caller_id — маска модификации caller id, синтаксис аналогичен полю digits.
  • empty — удалить из сигнализации параметр ConnectedNumber (если выставлен в true, то остальные атрибуты не должны быть выставлены).
    Описание параметров "nai", "npi", "apri", "ni" аналогично описанию параметров элемента "cn" секции "conditions".

2.2.6 <empty_cn>

Удалить из сигнализации параметр ConnectedNumber.
Этот элемент атрибутов не имеет.

2.2.7 <empty_rgn>

Удалить из сигнализации параметр RedirectingNumber.
Этот элемент атрибутов не имеет.

2.2.8 <empty_ocdpn>

Удалить из сигнализации параметр OriginalNumber.
Этот элемент атрибутов не имеет.

2.3 <result>

В этом обязательном элементе <result> описывается результат отработки правила модификации:

<result>
   Result
</result>
CODE

где

  • Result — результат выполнения правила, принимает значения: finish; error; next; continue.

2.3.1 <finish>

Завершение модификации.
Модификация прошла успешно, будет возвращен результат модификации номеров в соответствии с правилами.

Синтаксис в упрощенном варианте:

<result>
 <finish/>
</result>
CODE

2.3.2 <error>

Ошибка модификации.

Синтаксис:

<result>
 <error isup_cause="ISUPCause" 
        acp_cause="ACPCause" 
        description="Description"/>
</result>
CODE

где

  • isup_cause — опциональный параметр, число, isup причины, которое будет использовано в сообщении rel.
  • acp_cause — опциональный параметр, строка, acp причины, которая будет использована в сообщении rel.
  • description — опциональный параметр, описание причины, которое будут использованы в сообщении rel.

2.3.3 <continue>

Продолжить модификацию в текущем контексте данной виртуальной АТС (домена).

Синтаксис:

<result>
   <continue type="Type" tag="Tag"/>
</result>
CODE

    
      где
    
  
  • type — опциональное поле, может принимать значения:
    • start — продолжить в текущем контексте с первого правила;
    • next — продолжить в текущем контексте со следующего правила (будет сконвертирован в <next>).
  • tag — опциональное поле, возможность выставить значение параметра "tag", который далее можно использовать в условиях срабатывания правил модификации при последующем анализе, дает возможность делать некое подобие условной параметрической модификации.

2.3.4 <next>

Продолжить модификацию в текущем контексте со следующего правила. Если условия выполняются, будет применен набор действий из элемента <actions>.

Синтаксис:

<result>
   <next tag="Tag"/>
</result>
CODE
  • tag — опциональное поле, возможность выставить значение параметра "tag", который далее можно использовать в условиях срабатывания правил модификации при последующем анализе, дает возможность делать некое подобие условной параметрической модификации.


Маска цифр номера

Маска цифр номера в поле условий срабатывания правил. Предоставляет удобный и гибкий синтаксис описания различных номеров.
Регулярные выражения не используются умышленно, т.к. это значительно повышает порог квалификации инженера, который необходим для использования механизма.

Маска номера задается в виде строки, в которую вводится номер для осуществления сравнения. Можно указать диапазон через «-», либо перечислить через «,». Диапазон, или перечисление заключается в круглые скобки "(" ")" Так же возможны следующие служебные символы:

  • "?" — один любой не пустой элемент номера (цифры 0 - 9, либо буквы A, B, C, D);
  • "%" — 0 или несколько элементов номера (внимание: после символа "%" не может идти других символов).

Для сравнения общего префикса параметров cgpn, cdpn, ocdpn, rgn, cn, rnn между собой, используется следующий синтаксис  [cgpn|cdpn|rgn|ocdpn|cn|rnn{DIGITS}].

Примеры масок номера в правилах:

<conditions>
   <cgpn digit="8%"/>
</conditions>
CODE

Условию удовлетворяют номера длинной больше либо равный 1 и начинающиеся с цифры 8.

<conditions>
   <cgpn digit="345???????"/>
</conditions>
CODE

Условию удовлетворяют номера длинной 10 знаков, начинающиеся с 345.

<conditions>
   <cgpn digit="%"/>
</conditions>
CODE

Условию удовлетворяют любые номера.

<conditions>
   <cdpn digit="???"/>
</conditions>
CODE

Условию удовлетворяют любые номера длинной 3 знака.

Далее примеры использования диапазонов и перечислений в масках номеров:

<conditions>
   <cdpn digit="(1-3)7%"/> 
</conditions>
CODE

Равносильно трем правилам с масками 17% 27% 37%.

<conditions>
   <cdpn digit="(2010000-2029999)"/> 
</conditions>
CODE

Условию будут удовлетворять любые 7ми значные номера указанного диапазона.

<conditions>
   <cdpn digit="(1,5,7)7%"/> 
</conditions>
CODE

Равносильно трем правилам с масками 17% 57% 77%.

Пример сравнения общего префикса параметров cgpn и cdpn:

<conditions>
 <cdpn digits="????"/>
 <cgpn digits="[cdpn{1,2}]??"/>
</conditions>
CODE

Известные ошибки при сравнении параметров:

  • Сравнивание параметров друг с другом

    <conditions>
     <cdpn digits="[cgpn{1,2}]??"/>
     <cgpn digits="[cdpn{1,2}]??"/>
    </conditions>
    CODE
  • Использование параметра которого не существует

    <conditions>
     <cgpn digits="[cdpn{1,2}]??"/>
    </conditions>
    CODE
  • Выход за границы сравниваемого параметра

    <conditions>
     <cdpn digits="????"/>
     <cgpn digits="[cdpn{5,6}]??"/>
    </conditions>
    CODE

Маска времени

Маска времени задает диапазон значений времени суток.
Формат задания времени "ЧЧ:ММ - ЧЧ:ММ", где ЧЧ — значение часа, ММ — значение минут.
Вместо указания конкретных значений часа или минут можно указать служебный символ "*", который соответствует любому значению.

Примеры масок времени в правилах:

<conditions>
   <time value="09:00 - 18:00"/>
</conditions>
CODE
Условию удовлетворяют вызовы, обслуживаемые в период времени с 09:00 по 18:00 (рабочее время).
<conditions>
   <time value="*:20 - *:30"/>
</conditions>
CODE

Условию удовлетворяют вызовы, обслуживаемые в период времени с 20 по 30 минут каждого часа в сутках.

Маска даты

Маска даты задает диапазон дат.
Формат задания маски даты: "ДД1.ММ1.ГГГГ1 - ДД2.ММ2.ГГГГ2", где ДД — день, ММ — месяц, ГГГГ — год.
Так же возможно применение на любой позиции служебного символа "*", который соответствует любому значению.

Примеры масок даты в правилах:

<conditions>
   <date value="01.01.* - 31.01.*"/>
</conditions>
CODE

Условию удовлетворяют вызовы, обслуживаемые в январе (1 месяц).

<conditions>
   <date value="10.*.* - 20.*.*"/>
</conditions>
CODE

Условию удовлетворяют вызовы, обслуживаемые в период с 10 по 20-е число каждого месяца.

<conditions>
   <date value="13.10.2019 - 13.10.2019"/>
</conditions>
CODE

Условию удовлетворяют вызовы, обслуживаемые 13 октября 2019 года.

Маска дня недели

Маска дня недели задает набор дней недели.
Формат описания маски дней недели: "ДН1,ДН2,...,ДНX", где ДН — номер дня недели (числа от 1 до 7). Может быть указано от 1 до 7 дней недели.
Работает по григорианским календарю.

Примеры масок дней недели в правилах:

<conditions>
   <weekday value="1,2,3,4,5"/>
</conditions>
CODE

Условию удовлетворяют вызовы, обслуживаемые с понедельника по пятницу (рабочие дни).

<conditions>
   <weekday value="6,7"/>
</conditions>
CODE

Условию удовлетворяют вызовы обслуживаемые в субботу и воскресенье (выходные дни).

Модификация цифр номера

В действиях по модификации параметров вызова одним из основных элементов для корректировки является изменение цифр номера абонента А или Б.
Существуют разные подходы к способу описания синтаксиса такой модификации: модификация на шаблонах, регулярные выражения и т.п.

Регулярные выражения являются самым гибким способом, позволяющим делать все возможные преобразования, но у него есть существенные недостатки:

  • сложность синтаксиса — регулярные выражения — это универсальный механизм, используемый в разных сферах IT. Обладает своим сложным языком описания, что повышает входной порог знаний человека, который их использует;
  • вычислительная сложность — вычисление результата модификации на базе регулярных выражений (в том числе в перекомпилированном варианте) требует больших вычислительных ресурсов по сравнению с модификацией на шаблонах.

Чтобы избавится от недостатков регулярных выражений, в системе ECSS-10 используется модификация номера на шаблонах.

При модификации номера используется следующая нотация:

  • каждая цифра исходного номера (до модификации) обозначается либо числом описывающим ее позицию, либо буквой английского алфавита на соответствующей позиции (исходный семизначный номер без изменения можно записать в виде: "1,2,3,4,5,6,7" или "abcdefg");
  • как и в условиях срабатывания правил, поддерживается спец символ "%", который означает ту часть номера, которая соответствует символу % в секции <conditions> (можно считать, что на этапе условия правила для соответствующего номера формируется переменная с именем "%", которая заполняется цифрами номера, а на этапе модификации она используется);
  • для того, чтобы была возможность модифицировать номер (абонента А или абонента Б) он обязательно должен присутствовать в элементе <conditions> правила (это гарантирует соблюдение формата номера);
  • для того, чтобы были возможны модификации с определенными цифрами в номере, в элементе <conditions> в условии для соответствующего номера цифры на требуемых позициях должны присутствовать либо сами цифры номера (шаблон по цифрам), либо цифры должны быть закрыты спецсимволами "?";
  • для правил, обрабатывающих номер произвольной длины (в элементе <conditions> для цифр номера стоит условие со спец символом "%"), возможно только префиксирование (дописывание дополнительного префикса), либо постфиксирование (дописывание постфикса в конце номера);
  • если необходимо вставить дополнительные цифры, которые не входили в исходный номер, то они просто записываются в поле "digits" в нужной позиции, поддерживается указание собственно цифр номера от 0 до 9 и букв A, B, C, D (либо a,b,c,d);
  • если требуется записать элементы исходного номера в виде кодов (номеров позиции, либо буквенных кодов), либо в виде спец символа "%", то они записываются в фигурных скобках (например {abc}, либо {3,5,4}, либо {5,%}.
  • если требуется скопировать часть цифр из cgpn в cdpn, rgn, rnn, cn, ocdpn (аналогично для остальных типов номеров), которые совпали в рамках секции conditions, в секции actions используется [cgpn|cdpn|rgn|rnn|cn|ocdpn{DIGITS,%}].

Примеры:

Удаление префикса 345 от десятизначного номера:

<conditions>
   <cgpn digits="345???????"/>
</conditions>
<actions>
   <cgpn digits="{4,5,6,7,8,9,10}"/>
</actions>
CODE
Удаление префикса 345 от номера произвольной длины с префиксом 345:
<conditions>
   <cgpn digits="345%"/>
</conditions>
<actions>
   <cgpn digits="{%}"/>
</actions>
CODE
Перестановка цифр 2 и 3 в трехзначном номере (сами цифры любые):
<conditions>
   <cgpn digits="???"/>
</conditions>
<actions>
   <cgpn digits="{1,3,2}"/>
</actions>
CODE

Например, для того, чтобы в CGPN скопировать первые два символа из CDPN, можно написать следующее условие:

<rule name="test">
  <conditions>
    <cgpn digits="???"/>
    <cdpn digits="?????"/>
  </conditions>
  <actions>
    <cgpn digits="[CGPN{1,2}]{abc}"/>
  </actions>
</rule>
CODE

Префиксирование произвольного трехзначного номера с префиксом 008:

<conditions>
   <cgpn digits="???"/>
</conditions>
<actions>
   <cgpn digits="008{1,2,3}"/>
</actions>
CODE

Правило, которое может использоваться для выхода на междугородную станцию. В частности видно, что правило сработает для вызовов, в которых у абонента А семизначный местный номер, номер абонента Б начинается на 8. Задача модификации преобразовать местный номер к междугородному, который понимает междугородка, для этого дописывается префикс и меняется «ni» и «nai». Номер Б не изменяется, его разбором занимается междугородка.

<conditions>
   <cgpn digits="???????" ni="local"/>
   <cdpn digits="8%"/>
</conditions>
<actions>
   <cgpn digits="8383{1,2,3,4,5,6,7}" ni="intercity" nai="nationalNumber"/>
</actions>
CODE

Модификация имени абонента

Конвертирование имени абонента во внутреннюю кодировку на модификаторах по входу:

  • $latin1_to_utf8
  • $cp1251_to_utf8

Конвертирование имени абонента на модификаторах по выходу:

  • $utf8_to_latin1
  • $utf8_to_cp1251

При помощи макропеременных

%CITY%|%REGION%|%OPERATOR%

в качестве имени, можно задать город/регион/оператора абонента.

Во всех остальных случаях в качестве имени абонента будет подставлена переданная строка.