Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

В некоторых случаях возникает необходимость в модификации номеров (Calling, Called, Original called, Redirecting, Connected, а так же их свойств (ni, nai, apri и т.п.)) при входе с транков или при выходе на транк. Зачастую это вызвано тем, что один и тот же вызов может быть отправлен одним правилом маршрутизации в два или несколько транков (балансировка, резервирование), форматы номеров в которых различаются:

<rule name="to_trunk">
      <result>
        <external>
          <trunk value="Trunk1" />
          <trunk value="Trunk2" />
        </external>
      </result>
    </rule>

Также возможны случаи, когда необходима модификация при записях в CDR или для СОРМ.

Для реализации данных требований были разработаны соответствующие инструменты:

  • Модификаторы номеров - набор правил модификации номеров, которые применяются при звонке с определенного интерфейса или на определенный интерфейс. Модификатор назначается на интерфейс ECSS-10 (транк, абонент), группу интерфейсов.
  • Адаптация номеров - набор правил модификации номеров для СОРМ, TTS. Технически, это те же модификаторы номеров, но только применимые для адаптации номеров из внутреннего формата к формату СОРМ, TTS.

Модификаторы выставляются на интерфейсах, адаптация - на свойства домена (для СОРМ, TTS) и позволяют изменять номера при входе/выходе с/на интерфейс, а также при передаче номеров в СОРМ, TTS.

Модификаторы состоят из двух секций - in и out, каждая из которых содержит правила модификации. Файлы контекстов размещаются по пути: /var/lib/ecss/modification/ctx/src/<DOMAIN>
Адаптация состоит из одной секции adaptation, которая содержит в себе правила модификации. Файлы контекстов размещаются по пути: /var/lib/ecss/adaptation/ctx/src/<DOMAIN>.
Каждое правило состоит из условия/маски, действия(action) и результата. При совпадении условия над переданными номерами применяются описанные в правиле действия, после чего в зависимости от результата происходит следующее:

  • finish - модификация/адаптация номеров закончена, новые номера возвращаются из модификатора / адаптации ;
  • continue - необходимо повторить модификатор / адаптацию, но с уже измененными в текущем правиле номерами;
  • error - изменение номеров закончено, т.к. переданные номера имеют невалидный формат (в этом случае абоненту, приславшему данные номера пойдет релиз).

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

  • modificator - модификатор номеров по входу/выходу с интерфейса.

Для адаптации номеров для СОРМа используется параметр:

domain/p.city/sorm/info adaptation
┌─────────────────────────────┬──────┬───────────────────────────────┐
│          Property           │Domain│             Value             │
├─────────────────────────────┼──────┼───────────────────────────────┤
│adaptation                   │p.city│to_sorm                        │
└─────────────────────────────┴──────┴───────────────────────────────┘

для адаптации номеров для CDR используется параметр:

domain/p.city/tts/properties/info adaptation
┌─────────────────────────────┬──────┬───────────────────────────────┐
│          Property           │Domain│             Value             │
├─────────────────────────────┼──────┼───────────────────────────────┤
│adaptation                   │p.city│to_tts                         │
└─────────────────────────────┴──────┴───────────────────────────────┘

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

Описание:
Вызов приходит с абонента / транка на ECSS. На входе в систему (на ecss-core) выполняется модификация номеров по входу (на основе контекста модификации, назначенного на входящий интерфейс). Если контекст модификации не назначен, то номера проходят без модификации. После чего модифицированные номера заходят в сервисы абонента А. После того, как все сервисы абонента А отрабатывают, выполняется маршрутизация вызова.

На указанной схеме предполагается, что маршрутизация закончилась правилом с выходом на N транков, поэтому будет осуществляться перебор маршрутов.
Сперва выбирается Маршрут 1, выполняются сервисы абонента Б, после чего идет модификация номера по выходу на Транк 1,
который закреплен за Маршрут 1. Таким образом в Транк 1 номера пойдут в том формате, который нужен именно Транку 1. Параллельно информация о вызове посылается на TTS, СОРМ, предварительно выполнив адаптацию номеров для TTS, СОРМ соответственно.

Если окажется, что Транк 1 недоступен или переполнен, то будет взят следующий Маршрут 2. И все повторится аналогично, как и с Маршрутом 1. Таким образом, для Транка 2 из Маршрута 2 номера будут такие, какие нужны именно Транку 2 (при этом они могут отличаться от номеров для Транка 1).

Замечания:

  • если маршрутизация вызова не прошла, то информация о вызове уйдет на TTS, СОРМ сразу с уровня сервисов абонента А с адаптацией номеров TTS, СОРМ соответственно;
  • если параметры вызова не соответствуют ни одному условию в контексте модификации или адаптации, то вызов отбивается:

    │      806009978│09.10.2018 11:16:0│released│    240101│    240505│    240101│    240505│n│   0s│tException │12│S│Number's modification stopp│N│ │
    │               │        0         │        │          │          │          │          │ │     │           │7 │ │ed by no rule              │ │ │

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

<modificators name="ContextName" description="Description">
  <in>
    <rule name="RuleNameIn" description="Description">
        <conditions>
           <!-- описание полей можно посмотреть в разделе 6.7 Детальное описание конфигурационного файла маршрутизации -->
           <cdpn/>
           <cgpn/>
           <rgn/>
           <ocdpn/>
           <cn/>
           <time/>
           <date/>
           <weekday/>
           <tag/>
        </conditions>
        <actions>
           <!-- описание полей можно посмотреть в разделе 6.7 Детальное описание конфигурационного файла маршрутизации -->
           <cdpn/>
           <cgpn/>
           <rgn/>
           <ocdpn/>
           <cn/>
           <tag/>
        </actions>
        <result>
            <finish/>
            <continue/>
            <error/>
        </result>
    </rule>
  </in>
  <out>
      <rule name="RuleNameOut" description="Description">
          <conditions>
             <!-- описание полей можно посмотреть в разделе 6.7 Детальное описание конфигурационного файла маршрутизации -->
             <cdpn/>
             <cgpn/>
             <rgn/>
             <ocdpn/>
             <cn/>
             <time/>
             <date/>
             <weekday/>
             <tag/>
          </conditions>
          <actions>
             <!-- описание полей можно посмотреть в разделе 6.7 Детальное описание конфигурационного файла маршрутизации -->
             <cdpn/>
             <cgpn/>
             <rgn/>
             <ocdpn/>
             <cn/>
             <tag/>
          </actions>
          <result>
              <finish/>
              <continue/>
              <error/>
          </result>
      </rule>
    </out>
</modificators>

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

<adaptation name="ContextName" description="Description">
    <rule name="RuleNameIn" description="Description">
        <conditions>
           <!-- описание полей можно посмотреть в разделе 6.7 Детальное описание конфигурационного файла маршрутизации -->
           <cdpn/>
           <cgpn/>
           <rgn/>
           <ocdpn/>
           <cn/>
           <time/>
           <date/>
           <weekday/>
           <tag/>
        </conditions>
        <actions>
           <!-- описание полей можно посмотреть в разделе 6.7 Детальное описание конфигурационного файла маршрутизации -->
           <cdpn/>
           <cgpn/>
           <rgn/>
           <ocdpn/>
           <cn/>
           <tag/>
        </actions>
        <result>
            <finish/>
            <continue/>
            <error/>
        </result>
    </rule>
</adaptation>

Поля в узлах cdpn, cgpn, rgn, ocdpn, cn, time, date, weekday, tag такие же, как и в контексте маршрутизации. Но для поля digits в полях cdpn, cgpn, rgn, ocdpn, cn будет одно расширение.

Если первый символ - S, то считается что условия/модификация, описанная в данном digits, будет задаваться в формате условий/модификаторов SMG.

Например:

<?xml version="1.0"?>
  <modificators xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd" name="city">
    <rule name="ecss10_rule">
      <conditions>
        <rgn digits="111???"/>
      </conditions>
      <actions>
        <rgn digits="810{4,5,6}999"/>
      </actions>
      <result>
        <finish/>
      </result>
    </rule>
    <rule name="smg_rule">
      <conditions>
        <cgpn digits="S111xxx"/>
      </conditions>
      <actions>
        <cgpn digits="S---+810XXX999"/>
      </actions>
      <result>
        <finish/>
      </result>
    </rule>
  <modificators>

В данном примере оба правила одинаково обновляют номер rgn (в случае ECSS10) и rgn (в случае SMG) соответственно.

Пример настройки модификаторов на транке/группе интерфейсов

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

## Выставление модификатора на определенном транке

antoniy@[mycelium1@ryabkov]:/$ domain/p.city/iface/user-set pa_sip eltex_office EltexOffice modificator modification_context_1
Property 'modificator' successfully changed to 'modification_context_1' for interfaces:
EltexOffice

## Выставление модификатора для всех интерфейсов в определенной группе

antoniy@[mycelium1@ryabkov]:/$ domain/p.city/iface/group-set -g eltex_office -p modificator modification_context_1
Defined iface resources group property modificator for eltex_office

## Выставление контекста модификатора для интерфейсов в домене

antoniy@[mycelium1@ryabkov]:/$ domain/p.city/iface/group-set -p modificator modification_context_1
Defined iface resources group property modificator for *

Команды по управлению контекстами модификации описаны в разделе /domain/<DOMAIN>/modificators/.

Команды по управлению адаптациями описаны в разделе domain/<DOMAIN>/adaptation/.

  • Нет меток