Конфигурационный файл представляет собой файл в формате XML, который оформлен в соответствии со схемой данных, приведенной в файле ecss_modificators.xsd.
Актуальный файл с описанием схемы данных находится на развернутой системе по пути /usr/lib/ecss/ecss-ds/lib/rm_lib-x.x.x.x/priv/ecss_modificators.xsd.
Каждый XML-файл представляет собой описание одного контекста адаптации (группы правил) в рамках виртуальной АТС.
Формат описания контекста адаптации:
<adaptation> <rule> <conditions> </conditions> <actions> </actions> <result> </result> </rule> <rule> </rule> </adaptation
1. <adaptation>
Базовый элемент файла адаптации, описывающий параметры контекста адаптации.
Структура элемента <adaptation> имеет следующий вид:
<adaptation name="string" description="string"> </adaptation>
где
- name - строка с именем контекста адаптации, должна быть уникальной в рамках виртуальной АТС;
- description - текстовое описание контекста адаптации.
Далее в рамках тега <adaptation> между закрывающим и открывающим тегом идет набор тегов, описывающих правила адаптации.
Анализ условий срабатывания правил производится в том порядке, в котором они указаны в файле - сверху вниз.
Примечание: в одном контексте адаптации не может быть больше 1000 правил. Ограничение введено искусственно, так как количество правил влияет на скорость обработки адаптации.
2. <rule>
Элементом <rule> описывается правило адаптации.
Структура правила адаптации имеет следующий вид:
<rule name="RuleName"> <conditions> </conditions> <actions> </actions> <result> </result> </rule>
где
- RuleName - имя правила адаптации. Строка, которая должна быть уникальной в рамках контекста адаптации, выводится при трассировке адаптации;
- <conditions> - обязательный элемент, описывающий условия срабатывания правила адаптации;
- <actions> - опциональный элемент, описывающий набор операций, которые применяются к параметрам вызова при срабатывании правила адаптации;
- <result> - обязательный элемент, описывающий результат отработки правила адаптации.
2.1 <conditions>
В элементе <conditions> описывается набор условий, выполнение которых приводит к выполнению правила.
Формат описания элемента <conditions> имеет следующий вид:
<conditions> <cgpn/> <cdpn/> <rgn/> <rnn/> <ocdpn/> <cn/> <time/> <date/> <weekday/> <tag/> </conditions>
где
- 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"/>
где
- 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 - имя списка номеров определенных для домена;
- 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"/>
где
- 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 - имя списка номеров определенных для домена;
- city - город абонента полученный из БД реестра плана нумерации РФ;
При задании через xml нужно учитывать знаки: точки, тире, пробелы.
Для обозначения города используется сокращения:
- Г. - город;
- ПГТ. - поселок городского типа;
- Р-Н - район
- operator - оператор абонента полученный из БД реестра плана нумерации РФ;
- region - регион абонента полученный из БД реестра плана нумерации РФ.
- category - категория абонента, может принимать строковое либо цифровое значение согласно таблице:
Таблица 1 – Категории абонента
| Строковое значение | Цифровой код (ISUP) | Цифровой код (АОН) |
|---|---|---|
| unknownAtThisTime | 0 | |
| operatorFrench | 1 | |
| operatorEngish | 2 | |
| operatorGerman | 3 | |
| operatorRussian | 4 | |
| operatorSpanish | 5 | |
| reserved | 9 | |
| ordinarySubscriber | 10 | 1 - ОАО "Ростелеком" |
| subscriberWithPriority | 11 | 4 - ООО "Эквант" |
| dataCall | 12 | 8 - ОАО "АРКТЕЛ" |
| testCall | 13 | |
| spare | 14 | |
| payphone | 15 | 6 - ЗАО "Компания ТрансТелеКом" |
| category0 | 224 | |
| hotelsSubscriber | 225 | 2 - ОАО "КОМСТАР-ОТС" |
| freeSubscriber | 226 | |
| paidSubscriber | 227 | 7 - ЗАО "Синтерра" |
| localSubscriber | 228 | 3 - ОАО "Вымпелком" (ранее ООО "СЦС Совинтел") |
| localTaksofon | 229 | 9 - ОАО "Межрегиональный Транзит Телеком" |
| autoCallI | 240 | |
| semiautoCallI | 241 | |
| autoCallII | 242 | |
| semiautoCallII | 243 | |
| autoCallIII | 244 | |
| semiautoCallIII | 245 | |
| autoCallIV | 246 | |
| semiautoCallIV | 247 |
2.1.3 <rgn>
Параметры номера, который выполнил переадресацию:
<rgn digits="Digits"
nai="Nai"
incomplete="boolean"
npi="Npi"
apri="Apri"
ni="Ni"
empty="Empty"
in_list="List"/>
где
- 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 - имя списка номеров определенных для домена.
2.1.4 <rnn>
Параметры номера на который выполнили переадресацию:
<rnn digits="Digits"
nai="Nai"
incomplete="boolean"
npi="Npi"
apri="Apri"
ni="Ni"
empty="Empty"
category="Category"
in_list="List"/>
где
- 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 - имя списка номеров определенных для домена.
- 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"/>
где
- 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 - имя списка номеров определенных для домена.
- category - категория абонента, может принимать строковое либо цифровое значение согласно Таблице 1.
2.1.6 <cn>
Параметры номера подключенного номера
<cn digits="Digits"
nai="Nai"
npi="Npi"
apri="Apri"
ni="Ni"
empty="Empty"
in_list="List"/>
где
- 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 - имя списка номеров определенных для домена.
2.1.7 <time>
Время суток, задается в виде: ЧЧ:ММ - ЧЧ:ММ, где ЧЧ - часы, ММ - минуты:
<time value="TimeMask"/>
где
- value - маска времени суток. Подробное описание приведено в разделе Маска времени
2.1.8 <date>
Дата, задается в виде: ДД1.ММ1.ГГГГ1 - ДД2.ММ2.ГГГГ2, где ДД - день, ММ - месяц, ГГГГ - год:
<date value="DateMask"/>
где
- value - маска даты. Подробное описание приведено в разделе Маска даты.
2.1.9 <weekday>
День недели, задается в виде ДН1,ДН2,...,ДНX, где ДН - номер дня недели (числа от 1 до 7). Может быть указано от 1 до 7 дней недели.
<weekday value="WeekdayMask"/>
где
- value - маска дня недели. Подробное описание приведено в разделе Маска дня недели;
2.1.10 <tag>
Специальный параметр, который можно установить для вызова при адаптации.
Параметр действует только на этапе адаптации, устанавливается в правиле адаптации и в последующем используется для изменения отработки логики адаптации.
<tag value="Tag"/>
где
- value - строка, значение поля "tag" для вызова, проверяется на полное совпадение. По умолчанию значение - "undefined".
2.2 <actions>
Формат описания элемента <actions> имеет следующий вид:
<actions> <cgpn/> <cdpn/> <rgn/> <rnn/> <ocdpn/> <cn/> <empty_rgn/> <empty_ocdpn/> <empty_cn/> </actions>
где
- 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"/>
где
- digits - маска адаптации цифр номера или новые цифры номера.
Подробное описание приведено в разделе Модификация цифр номера. - display_name - адаптация имени абонента описана в разделе Модификация имени абонента.
- caller_id - маска адаптации caller id, синтаксис аналогичен полю digits.
Описание параметров "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"/>
где
- 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"/>
где
- 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"/>
где
- 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"/>
где
- 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"/>
где
- 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>
где
- Result - результат выполнения правила, принимает значения: finish; error; next; continue.
2.3.1 <finish>
Завершение адаптации.
Модификация прошла успешно, будет возвращен результат адаптации номеров в соответствии с правилами.
Синтаксис в упрощенном варианте:
<result> <finish/> </result>
2.3.2 <error>
Ошибка адаптации.
Синтаксис:
<result>
<error isup_cause="ISUPCause"
acp_cause="ACPCause"
description="Description"/>
</result>
где
- isup_cause - опциональный параметр, число, isup причины, которое будет использовано в сообщении rel.
- acp_cause - опциональный параметр, строка, acp причины, которая будет использована в сообщении rel.
- description - опциональный параметр, описание причины, которое будут использованы в сообщении rel.
2.3.3 <continue>
Продолжить адаптацию в текущем контексте данной виртуальной АТС (домена).
Синтаксис:
<result> <continue type="Type" tag="Tag"/> </result>
- type - опциональное поле, может принимать значения:
- start - продолжить в текущем контексте с первого правила;
- next - продолжить в текущем контексте со следующего правила (будет сконвертирован в <next>).
- tag - опциональное поле, возможность выставить значение параметра "tag", который далее можно использовать в условиях срабатывания правил адаптации при последующем анализе, дает возможность делать некое подобие условной параметрической адаптации.
2.3.4 <next>
Продолжить адаптацию в текущем контексте со следующего правила. Если условия выполняются, будет применен набор действий из элемента <actions>.
Синтаксис:
<result> <next tag="Tag"/> </result>
- 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>
Условию удовлетворяют номера длинной больше либо равный 1 и начинающиеся с цифры 8.
<conditions> <cgpn digit="345???????"/> </conditions>
Условию удовлетворяют номера длинной 10 знаков, начинающиеся с 345.
<conditions> <cgpn digit="%"/> </conditions>
Условию удовлетворяют любые номера.
<conditions> <cdpn digit="???"/> </conditions>
Условию удовлетворяют любые номера длинной 3 знака.
Далее примеры использования диапазонов и перечислений в масках номеров:
<conditions> <cdpn digit="(1-3)7%"/> </conditions>
Равносильно трем правилам с масками 17% 27% 37%.
<conditions> <cdpn digit="(2010000-2029999)"/> </conditions>
Условию будут удовлетворять любые 7ми значные номера указанного диапазона.
<conditions> <cdpn digit="(1,5,7)7%"/> </conditions>
Равносильно трем правилам с масками 17% 57% 77%.
Пример сравнения общего префикса параметров cgpn и cdpn:
<conditions>
<cdpn digits="????"/>
<cgpn digits="[cdpn{1,2}]??"/>
</conditions>
Известные ошибки при сравнении параметров:
Сравнивание параметров друг с другом
<conditions> <cdpn digits="[cgpn{1,2}]??"/> <cgpn digits="[cdpn{1,2}]??"/> </conditions>Использование параметра которого не существует
<conditions> <cgpn digits="[cdpn{1,2}]??"/> </conditions>Выход за границы сравниваемого параметра
<conditions> <cdpn digits="????"/> <cgpn digits="[cdpn{5,6}]??"/> </conditions>
Маска времени
Маска времени задает диапазон значений времени суток.
Формат задания времени "ЧЧ:ММ - ЧЧ:ММ", где ЧЧ - значение часа, ММ - значение минут.
Вместо указания конкретных значений часа или минут можно указать служебный символ "*", который соответствует любому значению.
Примеры масок времени в правилах:
<conditions> <time value="09:00 - 18:00"/> </conditions>
Условию удовлетворяют вызовы, обслуживаемые в период времени с 09:00 по 18:00 (рабочее время).
<conditions> <time value="*:20 - *:30"/> </conditions>
Условию удовлетворяют вызовы, обслуживаемые в период времени с 20 по 30 минут каждого часа в сутках.
Маска даты
Маска даты задает диапазон дат.
Формат задания маски даты: "ДД1.ММ1.ГГГГ1 - ДД2.ММ2.ГГГГ2", где ДД - день, ММ - месяц, ГГГГ - год.
Так же возможно применение на любой позиции служебного символа "*", который соответствует любому значению.
Примеры масок даты в правилах:
<conditions> <date value="01.01.* - 31.01.*"/> </conditions>
Условию удовлетворяют вызовы, обслуживаемые в январе (1 месяц).
<conditions> <date value="10.*.* - 20.*.*"/> </conditions>
Условию удовлетворяют вызовы, обслуживаемые в период с 10 по 20-е число каждого месяца.
<conditions> <date value="13.10.2019 - 13.10.2019"/> </conditions>
Условию удовлетворяют вызовы, обслуживаемые 13 октября 2019 года.
Маска дня недели
Маска дня недели задает набор дней недели.
Формат описания маски дней недели: "ДН1,ДН2,...,ДНX", где ДН - номер дня недели (числа от 1 до 7). Может быть указано от 1 до 7 дней недели.
Работает по григорианским календарю.
Примеры масок дней недели в правилах:
<conditions> <weekday value="1,2,3,4,5"/> </conditions>
Условию удовлетворяют вызовы, обслуживаемые с понедельника по пятницу (рабочие дни).
<conditions> <weekday value="6,7"/> </conditions>
Условию удовлетворяют вызовы обслуживаемые в субботу и воскресенье (выходные дни).
Модификация цифр номера
В действиях по модификации параметров вызова одним из основных элементов для корректировки является изменение цифр номера абонента А или Б.
Существуют разные подходы к способу описания синтаксиса такой модификации: модификация на шаблонах, регулярные выражения и т.п.
Регулярные выражения являются самым гибким способом, позволяющим делать все возможные преобразования, но у него есть существенные недостатки:
- сложность синтаксиса - регулярные выражения - это универсальный механизм, используемый в разных сферах 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>
Удаление префикса 345 от номера произвольной длины с префиксом 345:
<conditions>
<cgpn digits="345%"/>
</conditions>
<actions>
<cgpn digits="{%}"/>
</actions>
Перестановка цифр 2 и 3 в трехзначном номере (сами цифры любые):
<conditions>
<cgpn digits="???"/>
</conditions>
<actions>
<cgpn digits="{1,3,2}"/>
</actions>
Например, для того, чтобы в CGPN скопировать первые два символа из CDPN, можно написать следующее условие:
<rule name="test">
<conditions>
<cgpn digits="???"/>
<cdpn digits="?????"/>
</conditions>
<actions>
<cgpn digits="[CGPN{1,2}]{abc}"/>
</actions>
</rule>
Префиксирование произвольного трехзначного номера с префиксом 008:
<conditions>
<cgpn digits="???"/>
</conditions>
<actions>
<cgpn digits="008{1,2,3}"/>
</actions>
Правило, которое может использоваться для выхода на междугородную станцию. В частности видно, что правило сработает для вызовов, в которых у абонента А семизначный местный номер, номер абонента Б начинается на 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>
Модификация имени абонента
Конвертирование имени абонента во внутреннюю кодировку на модификаторах по входу:
- $utf8_to_latin1
- $utf8_to_cp1251
Конвертирование имени абонента на модификаторах по выходу:
- $utf8_to_latin1
- $utf8_to_cp1251
При помощи макропеременных
%CITY%|%REGION%|%OPERATOR%
в качестве имени, можно задать город/регион/оператора абонента.
Во всех остальных случаях в качестве имени абонента будет подставлена переданная строка.