Содержание

MVTS

ALOE Systems is a new identity of MERA Systems

MVTS (MERA VoIP Transit Softswitch) - это полнофункциональный пограничный контроллер сессий, предназначенный для гибкого управления VoIP-трафиком в сетях операторского класса. Основная задача MVTS — концентрация и коммутация VoIP-потоков, трансляция их между сетями с разнородной сигнализацией.

Использование регулярных выражений в MVTS

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

dialpeer.cfg:

user.cfg; gateway.cfg

При необходимости указания пустого номера в описании объектов набора (dialpeer) используется ключевое слово «empty».

При возникновении ошибки (недопустимый символ в регулярном выражении) результат проверки выводится в трассировочный журнал, который записывается в файл с названием mp.kernel.sh.log-<date>

Регулярные выражения допускают использование следующих символов: ^0123456789*#\&

Наиболее часто используемые конструкции:

dst_pattern=777[0-9]+

Комментарий: номера, начинающиеся с 777 и состоящие далее любого количества цифр от 0 до 9. удачные примеры: 77711, 777922 неудачные примеры: 77811, 7767

dst_pattern=777[0-5]{1}[0-9]+

Комментарий: номера начинающиеся с 777, далее следует любая цифра в диапазоне от 0 до 5 и затем любое количество цифр от 0 до 9. удачные примеры: 77711, 777422 неудачные примеры: 777, 77811, 77761, 7775

dst_pattern=...... или dst_pattern=.{6}

Комментарий: шесть любых знаков, включая все разрешенные цифры и знаки – например, символ # удачные примеры: 123456, 976065, 123#56 неудачные примеры: 1111111, 111, 123456#

Трансляция номеров

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

Примеры преобразования номеров

Задача 1: добавить префикс 78 к номеру 12345:

dst_translate = 12345/78&

результат: 12345 → 7812345

Задача 2: добавить префикс 78312 к любому шестизначному номеру:

dst_pattern=.{6}
dst_translate =.{6}/78312&

результат: 123456 → 78312 123456 результат: 654321 → 78312 654321

Задача 3: добавить префикс 78312 к номеру, начинающемуся с 777:

dst_pattern=<.*>
dst_translate=777.*/78312&

результат: 777123456 → 78312777123456 результат: 777121212 → 78312777121212

Задача 4: добавить последовательность символов 77 в конец строки

dst_translate=.*/&77

результат: 1234 → 123477

Задача 1: из любого номера с префиксом 095 удалять префикс

dst_pattern=.*
dst_translate=095|.*/\2

результат: 095123456# → 095 | 123456# → 123456#

Комментарий: выражение 095|.*/ в данном случае является шаблоном поиска, поэтому преобразованию подлежат только номера, начинающиеся с 095 + любое количество любых символов. Символ «|» делит шаблон поиска на две логические части. Строка замены состоит лишь из выражения «\2», что означает «взять вторую логическую часть из разделенного шаблона поиска».

Задача 2: из любого номера с префиксом 8182 удалять префикс

dst_pattern= .*
dst_translate=8182|[0-9]*/\2

результат: 8182123456 → 8182 | 123456 → 123456

Задача 3: удалять символ # из середины строки

dst_translate=[0-9]*|#|[0-9]*/\1\3

результат: 123#45 → 123 | # | 45 → 12345

Комментарий: в данном регулярном выражении шаблон поиска делится двумя символами «|» на три части: [0-9]* - любое количество цифр от 0 до 9. # - символ «решетка». [0-9]* - любое количество цифр от 0 до 9. Из синтаксиса строки замены данного регулярного выражения видно, что для создания нового номера берется только первая и третья логические части из трех выделенных в шаблоне поиска.

Задача 1: заменять префикс 8182 в любых номерах с таким префиксом на 777

dst_pattern= .*
dst_translate=8182|[0-9]*/777\2

результат: 8182123456 → 8182 | 123456 → 777 123456

Комментарий: как и в предыдущих случаях, шаблон поиска делится на две логические части символом «|» (8182 – первая логическая часть, [0-9]* - вторая логическая часть). В данном случае строка замены содержит дополнительную подстроку (777), которая будет подставлена перед второй логической частью ([0-9]*), т.е. фактически вместо первой логической части (8182). Таким образом, мы осуществляем замену первой логической части шаблона дополнительной подстрокой.

Задача 2 заменять префикс 1212 в любых номерах с таким префиксом на 1718

dst_pattern= .*
bill_translate=1212|.*/1718\2

результат: 121212345 → 1212 | 12345 → 1718 | 12345 → 171812345

Задача 3: заменять символ # в середине строки на последовательность цифр 555

dst_translate=[0-9]*|#|[0-9]*/\1 555\3

результат: 123#45 → 123 | # | 45 → 123 | 555 | 45 →12355545

Примечание: обратите внимание на пробел между \1 и 555. Отсутствие пробела будет воспринято системой как выражение \1555 – «взять одна тысяча пятьсот пятьдесят пятую логическую часть из шаблона поиска»

Задача 4: заменять символ # в конце строки на последовательность цифр 123

dst_bill_translate=[0-9]*|#/\1 123

результат: 123456# → 123456 | # → 123456123

Комментарий: Символ «|» делит шаблон поиска на две логические части, причем символ «решетка» находится во второй. Строка замены использует только первую логическую часть и добавляет к ней 123.

Примечание: обратите внимание на пробел между \1 и 123. Отсутствие пробела будет воспринято системой как выражение \1123 – «взять одна тысяча сто двадцать третью логическую часть из строки поиска».

Примеры

Задача. Добавить префикс к исходящему номеру.

Out DST translate - на выходе со свича. В таком виде терминатор получает B-номер.
dst_translate=[0-9]*/0030#&

, где

Задача. Нужно удалить префикс 0030# из входящего номера.

Первый вариант
In DST translate - входящий звонок на Меру
dst_translate=0030#|.*/\2

результат: 0030#123456# → 0030# | 123456# → 123456#

Комментарий: выражение 0030#|.*/ в данном случае является шаблоном поиска, поэтому преобразованию подлежат только номера, начинающиеся с 0030# + любое количество любых символов. Символ «|» делит шаблон поиска на две логические части. Строка замены состоит лишь из выражения «\2», что означает «взять вторую логическую часть из разделенного шаблона поиска».

Второй вариант. Более правильный так как в преобразованном номере разрещает только цифры.
In DST translate
dst_translate=0030#|[0-9]*/\2