Общая информация

При маршрутизации телефонных вызовов существует класс задач, связанный с организацией различного рода ограничений установления соединений.

(смотрите также статьи: Команды управления режимами обслуживания абонентов, Команды управления типами доступа и Детальное описание конфигурационного файла маршрутизации).

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

1. Оператор должен уметь ограничивать для пользователя возможность установления соединения через сети определенного типа (вызовы через междугороднюю сеть, вызовы через международную сеть, местные вызовы и т.п.).
2. Оператор должен уметь ограничивать для пользователя возможность принимать соединения из сетей определенного типа.
3. Оператор должен уметь оперативно вводить такого рода ограничения в случае несвоевременной оплаты пользователем услуг связи.
4. Оператор должен уметь предоставить абоненту возможность введения ограничений такого рода устанавливаемых самим абонентом.
5. Оператор должен уметь ограничивать возможность вызовов одной группы пользователей на другую (матрица связности).

Подобный функционал требует, с одной стороны, возможности различать вызовы на входящие/исходящие, с другой стороны, способы классифицирования вызова (с какой сети вызов поступил или на какую сеть уходит).
Телефонная станция может четко определить входящий вызов или исходящий.

Задача классификации вызов по типам сетей является не тривиальной и, кроме как для возможности организации разного рода ограничений, необходима еще для корректной работы с ПУ СОРМ, т.к. протокол взаимодействия с ПУ СОРМ требует указания аналогичного "класса" сети для номера вызывающего и/или вызываемого абонента (параметр называется "признак номера").

Маршрутизатор является местом, где производится анализ номера и классификация характера вызова (местный, междугородный и т.п.). Именно здесь осуществляется анализ цифр номера, определяются способы обработки вызова (соединение с локальным абонентом или выход на другую АТС), здесь же можно классифицировать вызов.

Для классификации определения типа номера в ISUP используется такое поле как nai — Nature of Address Indicator, которое показывает как интерпретировать цифры номера.
В ISUP предусмотрены типы:

  • unknown
  • subscriberNumber
  • nationalNumber
  • internationNumber

В то же время для операторов связи для введения ограничений, а также для СОРМ требуется различать такие типы как зоновая связь, вызов экстренных служб, а это невозможно при использовании NAI.
Поэтому в нашей системе параллельно с nai был введен параметр ni — Number Indicator (признак номера), который существует только в рамках нашего софтсвича, на другие станции не передается и может принимать значения:

  • emergency
  • private
  • local
  • zone
  • intercity
  • international

Признак номера ni является параметром номера вызывающего (CGPN) и вызываемого (CDPN) абонента.
Для вызывающего абонента его значение в CGPN берется из абонентских данных (alias info) и может быть изменено в процессе маршрутизации (при выходе на другие станции при префиксировании).
Для вызываемого абонента его значение при начале маршрутизации не определено (undefined) и полностью определяется правилами маршрутизации.

Задавая в настройках маршрутизации правила по изменению признака номера для CDPN и CGPN, определяется характер (тип) вызова.

Ограничения

Различаются следующие виды ограничений, которые доступны оператору:

  1. Долговременные ограничения, которые вводятся при подключении абонента и прописываются в договоре с абонентом, называются типом доступа (access_type);
  2. Временные ограничения, связанные с неоплатой абонентом счетов, называются режимом обслуживания (regime);
  3. Ограничения, которые задает себе сам абонент, называются баррингами (barring) по аналогии с сотовыми сетями.

Все эти виды ограничений являются независимыми, изменение одного не влечет за собой изменения другого.
Но решение о разрешении или запрете определенного вызова по причине ограничений принимается на основании сочетания этих трех параметров. Если хотя бы в одном из параметров определенный тип вызова будет закрыт, то вызов будет запрещен.

Для каждого из параметров (access_type, regime) существует справочник (таблица), в которой приводятся поддерживаемые режимы ограничений, которые задает оператор.
Каждый из этих параметров для определенного абонента (номера) может принимать одно из значений, описанных в соответствующей таблице.

Рассмотрим пример определения конкретного режима обслуживания абонента (regime), для которого открыты все виды связи: (определение типов доступа и баррингов производится аналогично).Описание конкретного режима обслуживания можно представить как таблицу. Каждому режиму присваивается его идентификатор (название), которому соответствует набор правил ограничения типов связи по входу и выходу.
Например режим "normal" можно описать в виде:

+-----------------------------------------------------------------------------------------------+
|тип вызова     | направление вызова | значение     | Описание                                  |
|               | in — входящая      | true  - Вкл  |                                           |
|               | out - исходящая    | false - Выкл |                                           |
|-----------------------------------------------------------------------------------------------|
| emergency     | in                 | true         | Входящий с экстренных служб               |
|               | out                | true         | Исходящий на экстренные службы            |
|-----------------------------------------------------------------------------------------------|
| private       | in                 | true         | Входящий с абонентов своей АТС            |
|               | out                | true         | Исходящий на абонентов своей АТС          |
|-----------------------------------------------------------------------------------------------|
| local         | in                 | true         | Входящий с абонентов местной сети         |
|               | out                | true         | Исходящий на абонентов местной сети       |
|-----------------------------------------------------------------------------------------------|
| zone          | in                 | true         | Входящий с абонентов зоновой сети         |
|               | out                | true         | Исходящий на абонентов зоновой сети       |
|-----------------------------------------------------------------------------------------------|
| intercity     | in                 | true         | Входящий с абонентов междугородной сети   |
|               | out                | true         | Исходящий на абонентов междугородной сети |
|-----------------------------------------------------------------------------------------------|
| international | in                 | true         | Входящий с абонентов международной сети   |
|               | out                | true         | Исходящий на абонентов международной сети |
+-----------------------------------------------------------------------------------------------+

Соответственно для режима обслуживания, который устанавливает ограничение на все виды связи кроме выхода на экстренные службы с именем disabled1, можно сделать следующие настройки:

+-----------------------------------------------------------------------------------------------+
|тип вызова     | направление вызова | значение     | Описание                                  |
|               | in - входящая      | true  - Вкл  |                                           |
|               | out - исходящая    | false - Выкл |                                           |
|-----------------------------------------------------------------------------------------------|
| emergency     | in                 | true         | Входящий с экстренных служб               |
|               | out                | true         | Исходящий на экстренные службы            |
|-----------------------------------------------------------------------------------------------|
| private       | in                 | false        | Входящий с абонентов своей АТС            |
|               | out                | false        | Исходящий на абонентов своей АТС          |
|-----------------------------------------------------------------------------------------------|
| local         | in                 | false        | Входящий с абонентов местной сети         |
|               | out                | false        | Исходящий на абонентов местной сети       |
|-----------------------------------------------------------------------------------------------|
| zone          | in                 | false        | Входящий с абонентов зоновой сети         |
|               | out                | false        | Исходящий на абонентов зоновой сети       |
|-----------------------------------------------------------------------------------------------|
| intercity     | in                 | false        | Входящий с абонентов междугородной сети   |
|               | out                | false        | Исходящий на абонентов междугородной сети |
|-----------------------------------------------------------------------------------------------|
| international | in                 | false        | Входящий с абонентов международной сети   |
|               | out                | false        | Исходящий на абонентов международной сети |
+-----------------------------------------------------------------------------------------------+

Принцип работы ограничений:

Исходящий вызов

Абонент А набирает номер Б. Информация об абоненте А, его номер и набранный номер Б поступает в маршрутизатор. Маршрутизатор осуществляет поиск правила. Когда правило обнаружено, производятся модификации, в частности определяется ni для номера Б, по умолчанию установлено значение «undefined». Определяется результат маршрутизации: локальный вызов или выход на другую АТС (определяется пучек СЛ). После чего запускается механизм проверки ограничений. В наборе параметров абонента А могут присутствовать параметры «access_type», «regime» и «barring». По умолчанию, если параметр не определен, считается, что ограничений нет. Если параметр задан (установлен определенный идентификатор), то считываются определенные параметры доступа для выбранного идентификатора. Далее по параметру ni из номера абонента Б проверяется, какое значение стоит в поле тип вызова (ni) абонента Б и направление вызова (out). Если стоит значение «true», то вызов разрешается и возвращаются результаты маршрутизации, если установлено значение «false», то возвращается ошибка с информацией о том, что для вызова введены ограничения.

Входящий вызов

Работает аналогично. В систему поступает вызов от абонента с номером А на абонента с номером Б. Система считывает абонентские параметры по номеру А, если такие доступны.
На основании указанных параметров маршрутизатор осуществляет поиск правила.
При срабатывании правила могут быть выполнены модификации параметров номера А и/или Б. В частности могут быть определены ni для номера А. Маршрутизатор производит анализ номера А, классифицируя тип вызова (с какой сети пришел вызов, также это можно делать на базе назначения параметра ni для всех вызовов с определенного интерфейса, но тут могут быть ограничения). В результате маршрутизации, если вызов производится на абонента софтсвича, то будет найдено правило, по которому будет определено, что абонента Б является локальным абонентом. В результате маршрутизации система найдет интерфейс абонента Б и абонентские параметры абонента Б.
В наборе параметров абонента Б могут присутствовать параметры «access_type», «regime» и «barring». По умолчанию, если параметр не определен, считается, что ограничений нет.
Если параметр задан (установлен определенный идентификатор), то считываются определенные параметры доступа для выбранного идентификатора.
Далее по параметру ni из номера абонента А и проверяется, какое значение стоит в поле тип вызова (ni) абонента А, направление вызова (in). Если стоит значение «true», то вызов разрешается и возвращаются результаты маршрутизации, если установлено значение «false», то возвращается ошибка с информацией о том, что для вызова введены ограничения.
Механизм отработки баррингов аналогичен типам доступа и режиму обслуживания, но задается в другом виде. Основное отличие — количество вариаций ограничений, которые может задать пользователь меньше, чем может сделать оператор.

Категории

Категории абонентов были введены еще в период аналоговых систем сигнализации типа 2ВСК и перешли в ОКС7. Изначально категории использовались для большей гибкости начисления оплаты за разговор.

В настоящее время категории используются для выбора оператора дальней связи. В зависимости от того, какого оператора дальней связи решил использовать абонент, для него в абонентских параметрах устанавливается соответствующая категория. Далее в маршрутизации конфигурируются правила выхода на различных операторов дальней связи, в которых одним из условий срабатывания правила является определенная категория вызывающего абонента.

Группы доступа (access_group)

Оператор должен иметь возможность группировать абонентов некоторым образом и затем описывать возможность выхода абонентов одной группы на абонентов другой группы.

Пример: АТС является транзитным коммутатором, который осуществляет коммутацию вызовов между транками, выходящими на сети трех операторов: A, B и C.

Задача дать возможность устанавливать соединения в следующих направлениях:

B->А, C->А, А->B, А->C.

Решать такую задачу можно разными способами, например, на уровне маршрутизации, логически разнеся транки каждого оператора в независимые контексты и прописав независимо для них маршрутизацию. Но группы доступа и матрица доступа дает возможность решения этой задачи по другому, делая одну общую маршрутизацию. Для этого объявляются три группы доступа (access_group). Создается три независимых сущности. Транки идущие от/к каждому из операторов прописываются в соответствующих группах (domain/alias/set-for-iface trunk access_group имя_группы).

Далее создается матрица доступа следующего вида:

+-----------------------------------------+
|            | rostelecom | mts | beeline |
|-----------------------------------------|
| rostelecom |      *     |  *  |    *    |
| mts        |      *     |  *  |         |
| beeline    |      *     |     |    *    |
+-----------------------------------------+

Эта матрица задает требуемые правила выхода абонентов одних групп на другие (символ «*» — выход разрешен).

Далее необходимо описать маршрутизацию таким образом, чтобы в ней учитывалась группа доступа. Достигается это за счет того, что, например, при описании правила выхода на транки оператора А в условиях срабатывания правила добавляется условие:

<calling have_access_to="rostelecom"/>

Условие такого рода приведет к тому, что правило пройдет проверку тогда и только тогда, когда по матрице доступа будет разрешено выходить абонентам А с группой доступа Х, а абонентам Б с группой доступа Y.

Под абонентами А с группой доступа X подразумеваются вызовы, для которых в абонентских параметрах вызывающего абонента присутствует параметр «access_group», в частности это могут быть вызовы с какого-то транка, которому соответствует определенный интерфейс в системе и для которого объявлены абонентские параметры в профиле алиаса уровня интерфейса, а именно параметр «access_group» (эти параметры из профиля автоматически наследуются на вызов). Это же замечание справедливо для стороны абонента Б.

Тип доступа


Тип доступа — свойство алиаса (хранится на ds).

Дает возможность запрещать/разрешать определенным абонентам производить вызовы на номера с определенным "признаком" (см. Признак номера) без изменения маршрутизации.
При этом возможно раздельно управлять входящей и исходящей связью.

Типы:

  1. private — абонент данной станции;
  2. local — абонент местной сети (местный номер);
  3. zone — абонент данной зоновой сети (зоновый номер);
  4. intercity — абонент другой зоновой сети (междугородний номер);
  5. international — абонент другой страны (международный номер);
  6. emergency — экстренные службы.

Например в alias_info:

[
...
{[access_type, emergency,     in ], true},
{[access_type, emergency,     out], true},
{[access_type, private,       in ], true}, 
{[access_type, private,       out], true},
{[access_type, local,         in ], true},
{[access_type, local,         out], true},
{[access_type, zone,          in ], true},  % разрешены входящие внутри зоны
{[access_type, zone,          out], false}, % но запрещены исходящие
{[access_type, intercity,     in ], false},
{[access_type, intercity,     out], false},
{[access_type, international, in ], false},
{[access_type, international, out], false},
...
]

Режимы обслуживания

Режим обслуживания — свойство алиаса (хранится на ds).

По своей структуре режимы обслуживания полностью повторяют типы доступа, но различаются по своему назначению. Режим обслуживания чаще всего служит для блокирования абонента без смены типа доступа. Для управления режимами обслуживания (создание, удаление, просмотр) предназначены команды, располагающиеся по пути: /domain/<ИМЯ_ДОМЕНА>/regime/.
Для массового выставления режимов обслуживания у абонентов служат команды import-regime , import-regime-to-domain , располагающиеся по путям:

  • /node/<ИМЯ_НОДЫ>/import-regime (общий формат файла описания режима обслуживания)
  • /node/<ИМЯ_НОДЫ>/import-regime-to-domain (формат файла описания режима обслуживания для домена)
  • /cluster/storage/<ИМЯ_КЛАСТЕРА_DS>/alias/import-regime (общий формат файла описания режима обслуживания)
  • /domain/<ИМЯ_ДОМЕНА>/import-regime (формат файла описания режима обслуживания для домена)

Общий формат файла описания режима обслуживания

Каждая строка файла предназначена для выставления режима обслуживания одного абонента и имеет следующий вид:

ИМЯ_ДОМЕНА АДРЕС_АБОНЕНТА РЕЖИМ_ОБСЛУЖИВАНИЯ

В качестве строчного комментария используется символ процент (%).

Например:

p.city 710 regime1
p.city 711 regime1
p.city 712 regime1
p.city 713 regime2

d.external 1234567 regime3

Файлы должны располагаться по пути: <data_root>/regime

<data_root> по умолчанию равен: /var/lib/ecss

Формат файла описания режима обслуживания для домена

Каждая строка файла предназначена для выставления режима обслуживания одного абонента и имеет следующий вид:

АДРЕС_АБОНЕНТА РЕЖИМ_ОБСЛУЖИВАНИЯ

В качестве строчного комментария используется символ процент (%).Например:

710 regime1
711 regime1

712 regime2

Файлы должны располагаться по пути: <data_root>/regime/<ИМЯ_ДОМЕНА>

<data_root> по умолчанию равен: /var/lib/ecss

Команды для создания/удаления/просмотра режимов обслуживания

Команды по управлению режимами обслуживания располагаются по пути:

/domain/<ИМЯ_ДОМЕНА>/regime

Для создания режима обслуживания служит команда  declare :

declare <NAME> <PRIVATE_IN> <PRIVATE_OUT> <LOCAL_IN> <LOCAL_OUT> <ZONE_IN> <ZONE_OUT> <INTERCITY_IN> <INTERCITY_OUT> <INTERNATIONAL_IN> <INTERNATIONAL_OUT> <EMERGENCY_IN> <EMERGENCY_OUT> <CAUSE> <DESCRIPTION>
      <NAME>            :: имя режима обслуживания, которое будет использоваться для задания режима обслуживания абонента;
      <PRIVATE_IN>        :: true | false - флаг, показывающий, разрешена или запрещена входящая связь внутри домена
      <PRIVATE_OUT>       :: true | false - флаг, показывающий, разрешена или запрещена исходящая связь внутри домена
      <LOCAL_IN>          :: true | false - флаг, показывающий, разрешена или запрещена входящая локальная связь
      <LOCAL_OUT>         :: true | false - флаг, показывающий, разрешена или запрещена исходящая локальная связь
      <ZONE_IN>           :: true | false - флаг, показывающий, разрешена или запрещена входящая зоновая связь
      <ZONE_OUT>          :: true | false - флаг, показывающий, разрешена или запрещена исходящая зоновая связь
      <INTERCITY_IN>      :: true | false - флаг, показывающий, разрешена или запрещена входящая междугородняя связь
      <INTERCITY_OUT>     :: true | false - флаг, показывающий, разрешена или запрещена исходящая междугородняя связь
      <INTERNATIONAL_IN>  :: true | false - флаг, показывающий, разрешена или запрещена входящая международная связь
      <INTERNATIONAL_OUT> :: true | false - флаг, показывающий, разрешена или запрещена исходящая международная связь
      <EMERGENCY_IN>      :: true | false - флаг, показывающий, разрешена или запрещена входящая неотложная связь
      <EMERGENCY_OUT>     :: true | false - флаг, показывающий, разрешена или запрещена исходящая неотложная связь
      <CAUSE>             :: ISUP причина данного режима обслуживания. Может быть пустой.
      <DESCRIPTION>       :: Короткое описание предназначения данного режима обслуживания

Например:

antoniy@[ecss_mycelium@ryabkov]:/node#> /domain/p.city/regime/declare regime1 true true true true true true false false false false true true 21 Test regimeRestriction 'regime1' successfully declared.

Для просмотра имеющихся в домене режимов обслуживания служит команда  info :

info [<NAME>]
   <NAME> :: имя режима обслуживания

Например:

antoniy@[ecss_mycelium@ryabkov]:/node#>  /domain/p.city/regime/info regime1
----------------------------------------------------------------------------------------------------
| Name  |Domain| Private |  Local  |  Zone   | Intercity |International|Emergency|Cause|Description|
|       |      | in/out  | in/out  | in/out  |  in/out   |   in/out    | in/out  |     |           |
|-------+------+---------+---------+---------+-----------+-------------+---------+-----+-----------|
|regime1|p.city|true/true|true/true|true/true|false/false|false/false  |true/true|21   |Test regime|
----------------------------------------------------------------------------------------------------


antoniy@[ecss_mycelium@ryabkov]:/node#>  /domain/p.city/regime/info        
---------------------------------------------------------------------------------------------------------------------------
|     Name      |Domain|  Private  |   Local   |   Zone    | Intercity |International| Emergency |Cause|   Description    |
|               |      |  in/out   |  in/out   |  in/out   |  in/out   |   in/out    |  in/out   |     |                  |
|---------------+------+-----------+-----------+-----------+-----------+-------------+-----------+-----+------------------|
|regime1        |p.city|true/true  |true/true  |true/true  |false/false|false/false  |true/true  |21   |Test regime       |
|full_access    |p.city|true/true  |true/true  |true/true  |true/true  |true/true    |true/true  |502  |Full access regime|
---------------------------------------------------------------------------------------------------------------------------

Для удаления режима обслуживания служит команда  remove :

remove [<NAME>]
   <NAME> :: имя режима обслуживания

Например:

antoniy@[ecss_mycelium@ryabkov]:/node#> /domain/p.city/regime/remove regime1
Restriction 'regime1' successfully removed.

Признак номера

Признак номера — свойство CDPN и CGPN (определяется в маршрутизации, является одним из результатов маршрутизации).

Похож на nai (но в nai нет зонового типа).
Множество значений признака номера совпадает с множеством значений типа доступа, нерасширяемо и определено в компайл тайм.
Признак номера устанавливается в секции <actions> правила маршрутизации (см. пример контекста маршрутизации).
После маршрутизации признак номера используется для проверки типа доступа для алиаса, а также в модуле СОРМ.

Категория доступа

Группировка абонентов. Например: советский район, абоненты оператора А и т.д. Свойство алиаса. В случае если интерфейс является транком, свойство задается для всех алиасов с этим интерфейсом (сам алиас не создается).

Дает возможность запрещать/разрешать определенным группам абонентов осуществлять звонки на другие группы без изменения маршрутизации.

Контроль доступа осуществляется на основе access-матрицы A (NxN, где N — кол-во категорий).
A(i,j) принимает значения true и false (разрешено и запрещено).

A(i,j) = true тогда и только тогда когда категории i разрешено звонить на категорию j.

Множество категорий и access матрица могут изменяться в риал тайме.

Как хранятся в alias_info(или interface_info):

[
...
{[access_groups], [mts,sovetskiy,...]} % перечисление групп в которые входит алиас
...
]

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

например, имеем: {[access_groups], [all]}

тогда:
ssw@[ds@alex]:/#> domain/d.408/alias/set-for-iface sip_directions * access_group all  
Affected ifaces in domain: d.408
  *  
ssw@[ds@alex]:/#> domain/d.408/access-group/add all                                  
ok
ssw@[ds@alex]:/#> domain/d.408/access-group/add-access all all                       
ok
ssw@[ds@alex]:/#> domain/d.408/access-group/access-matrix

Пример контекста

 Нажмите здесь для раскрытия...


<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" 
         name="ctx_city_local" digitmap="auto">

  <rule name="local_subscribers1">
    <conditions>
      <!--
             -->
      <calling access_private="true"/> 
      <cdpn digits="77???"/>
    </conditions>
    <actions>
      <cdpn ni="private">  <!-- валидация типа доступа для A + выставление признака номера для СОРМ -->
    </actions>
    <result>
      <local/>
    </result>
  </rule>

  <rule name="blocked_russian1">
    <conditions>
      <calling access_private="false"/>
      <cdpn digits="77???"/>
    </conditions>
    <result>
      <external>
        <direction value="auto.rus.no_access"/>
      </external>
    </result>
  </rule>

  <rule name="blocked_other1">
    <conditions>
      <calling access_private="false"/>
      <cdpn digits="77???"/>
    </conditions>
    <result>
      <external>
        <direction value="auto.en.no_access"/>
      </external>
    </result>
  </rule>

  <rule name="external_subscribers">
    <conditions>
      <!-- просто получаем no_route если не разрешена local связь -->
      <!--calling access_local="true"/-->
      <time value="9:00 - 18:00"/>
      <date value="*.*.* - *.*.*"/>
      <weekday value="1,2,3,4,5"/>
      <cdpn digits="200??"/>
    </conditions>
    <result>
      <external>
        <direction value="port_sipt1"/>
        <direction value="port_sipt2"/>
      </external>
    </result>
  </rule>
  </ruleset>

  <rule name="to_international">
    <conditions>
      <!-- просто получаем no_route если не разрешена international связь -->
      <!--calling access_international="true"/-->
      <cdpn digits="810??????????"/>
      <cgpn digits="%"/>
    </conditions>
    <actions>
      <cgpn digits="7383{%}" nai="internationNumber" ni="international"/>
    </actions>
    <result>
      <continue context="ctx_intercity"/>
    </result>
  </rule>

  <!-- 

  Категории доступа (пример матрицы):

         local  pstn  mts 

  local    *           *

  pstn     *              

  mts      * 

  -->

  <rule name="to_intercity(mts)">
    <conditions>

      <!-- абоненту разрешена междугородняя связь (тип доступа) -->
      <calling access_intercity="true"/>

      <!-- Попадаем в правило только, если этому абоненту можно звонить на абонентов с категорией mts (категория доступа).
           Проверка проходит если в матрице с координатами (local,mts) стоит * -->
      <calling have_access_to="mts"> 
      <cdpn digits="8913??????"/>
      <cgpn digits="%"/>
    </conditions>
    <actions>
      <cgpn digits="383{%}" ni="intercity"/>
    </actions>
    <result>
      <continue context="ctx_intercity"/>
    </result>
  </rule>

  <rule name="to_intercity">
    <conditions>

      <!-- абоненту разрешена междугородняя связь(тип доступа) -->
      <calling access_intercity="true"/>

      <!-- попадаем в правило только, если этому абоненту можно звонить на абонентов с категорией pstn -->
      <calling have_access_to="pstn">

      <cdpn digits="8?????????"/>
      <cgpn digits="%"/>
    </conditions>
    <actions>
      <cgpn digits="383{%}" ni="intercity"/>
    </actions>
    <result>
      <continue context="ctx_intercity"/>
    </result>
  </rule>

  <rule name="emergency.01">
    <conditions>
      <!-- просто получаем no_route, если не разрешена emergency связь -->
      <!-- calling access_emergency="true"/ -->
      <cdpn digits="01"/>
    </conditions>
    <actions>
      <cgpn ni="emergency"/>
    </actions>
    <result>
      <external>
        <direction value="sip.emergency.01"/>
      </external>
    </result>
  </rule>

  <rule name="emergency.02">
    <conditions>
      <!-- просто получаем no_route, если не разрешена emergency связь -->
      <!-- calling access_emergency="true"/ -->
      <cdpn digits="02"/>
    </conditions>
    <actions>
      <cgpn ni="emergency"/>
    </actions>
    <result>
      <external>
        <direction value="sip.emergency.02"/>
      </external>
    </result>
  </rule>

  <rule name="emergency.03">
    <conditions>
      <!-- просто получаем no_route, если не разрешена emergency связь -->
      <!-- calling access_emergency="true"/-->
      <cdpn digits="03"/>
    </conditions>
    <actions>
      <cgpn ni="emergency"/>
    </actions>
    <result>
      <external>
        <direction value="sip.emergency.03"/>
      </external>
    </result>
  </rule>

  <rule name="emergency.112">
    <conditions>
      <!-- просто получаем no_route, если не разрешена emergency связь -->
      <!--calling access_emergency="true"/-->
      <cdpn digits="112"/>
    </conditions>
    <actions>
      <cgpn ni="emergency"/>
    </actions>
    <result call_type="emergency">
      <external>
        <direction value="sip.emergency.01"/>
      </external>
    </result>
  </rule>

  <rule name="routing_error_other">
    <conditions/>
    <result>
      <external>
        <direction value="auto.en.system_failure"/>
      </external>
    </result>
  </rule>

</context>
XML

Барринги

Барринги в ECSS-10 реализуются средствами услуг Ограничение исходящих вызовов (RBP).