ALOE Systems is a new identity of MERA Systems
MVTS (MERA VoIP Transit Softswitch) - это полнофункциональный пограничный контроллер сессий, предназначенный для гибкого управления VoIP-трафиком в сетях операторского класса. Основная задача MVTS — концентрация и коммутация VoIP-потоков, трансляция их между сетями с разнородной сигнализацией.
$ echo "select product,version,product_title from version;" | mysql -uroot mvtspro product version product_title logic 2.0.0-77 Logic mvtspro 1.5.0-81 MVTS Pro ts 4.0.1-51 TS webdb 1.5.0-65 WEB+DB webengine 1.5.0-45 WEBENGINE
Регулярные выражения используются при задании значений следующим конфигурационным параметрам:
dialpeer.cfg:
user.cfg; gateway.cfg
При необходимости указания пустого номера в описании объектов набора (dialpeer) используется ключевое слово «empty».
При возникновении ошибки (недопустимый символ в регулярном выражении) результат проверки выводится в трассировочный журнал, который записывается в файл с названием mp.kernel.sh.log-<date>
Наиболее часто используемые конструкции:
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