Cisco translation rules

Если вам скучно и хочется немного сломать мозг, то прошу поупражняться с правилами преобразования номеров в cisco!
Преобразовывать мы можем как ANI(CallerID) так и DNIS(куда звоним).
После Астериска проделывая аналогичные действия на цыске, мне захотелось рыдать кровавыми слезами и рвать волосы в самых неприличных местах.
Если вы все еще хотите этого, то прошу

Например у нас есть удаленный офис с номерами 659ХХХ, а внутренние ХХХ, написав правила трансляции, если упала IP связь между офисами, то мы сможем звонить в удаленный офис по внутр номеру ХХХ, а шлюз уж сам дорисует все что нужно и отправит вызов куда нужно)
Как добавить правило преобразования:
1. enable
2. configure terminal
3. voice translation-rule name-tag(произвольное число)
4. rule num-tag /input-matched-pattern/ /substituted-pattern/ [match-type substituted-type]
num-tag — число от 0 до 10
input-matched-pattern — что ищем
substituted-pattern — на что заменяем
match-type(опционально)- Задает тип нумерации которую вы хотите сменить. Укажите any если хотите заменять ЛЮБОЙ тип нумерации.
substituted-type(опционально) — тип нумерации на какой меняем.
Стандартные значения:
• abbreviated
• international
• national
• network
• reserved
• subscriber
• unknown

Что мы можем использовать в pattern:
Period (.) — любая одна цифра
Circumflex (^), начало строки
Dollar sign ($), конец строки
Backslash symbol (\), однозначное определение символа, например \+ ищем именно +
Brackets ( [ ] ), диапазон цифр например [1-6], внутри скобок ^ означает НЕ
Question mark (?), предыдущий символ повторяется 0 или 1 раз
Asterisk (*), предыдущий символ повторяется 0 или более раз
Plus (+), предыдущий символ повторяется 1 или более раз.
Pipe (|), Логическое ИЛИ
.* Любая цифра, за которой не следует ни одного вхождения или следует более одного. Это работает во всех случаях, включая нули.
.+ Любая цифра, за которой следует одно или более вхождений. Это работает во всех случаях, исключая нули.
^$ Нет цифр, ноль

Пример 1(любой пятизначный номер, который начинается с «40», заменяется номером «6666000»):
voice translation-rule 1
rule 1 /^40.../ /6666000/

Пример 2(все номера заменяются на «5554000»)
voice translation-rule 2
rule 1 /.*/ /5554000/

Пример 3(все номера, которые начинаются с комбинации нулей (0, 00 итд), заменяются на «909»):
voice translation-rule 3
rule 1 /^0+/ /909/

Пример 4(любой 3знач номер, который начинается с 45 46 47 38 49, заменяется номером «660») :
voice translation-rule 4
rule 1 /^4[5-9]./ /660/

Раздел номера можно использовать, если нужно копировать части совпадающего номера в номер замены. Совпавший номер разделяется на части, которые можно сохранять или игнорировать.

\ Указывает в шаблоне согласования, где разделять номер.
\ В шаблоне замены указывает, куда копировать части, которые нужно сохранить.
( ) Показывает, какие части совпавшего номера надо сохранить.
(a\) Сохранить выражение «a».
b\ Игнорировать выражение «b».
\1 Копировать первую часть в номер замены.

Общий пример
В этом примере приводится общее объяснение.
/ (x\) y\ (z\) / /w\1\2/
Разделить совпавший номер на три части: x, y и z. Знак обратной косой черты (\) показывает место разделения номера. Скобки () означают, какие части номера нужно использовать в шаблоне замены. Часть w представляет собой дополнительные цифры для вставки в номер замены.
Часть 1 становится выражением x.
Часть 2 становится выражением z.
Выражение y игнорируется.
Номером замены является объединенный номер: wxz.

Пример 5(В этом примере приводится более подробное объяснение):
voice translation-rule 5
rule 1 /^\(12\)3\(45\)$/ /6\1\2/
Часть 1: 12
Часть 2: 45
Игнорировать: 3

Тип нумерации
Совпадения можно ограничивать определенными типами номеров или планов. Можно также изменять тип или план замены.
Пример 6(если номер начинается с цифры «4» и его тип — «national», по правилу к нему добавляется в виде префикса «90». Если его тип — «international», по правилу к нему добавляется добавляется префикс «900»):
voice translation-rule 6
rule 1 /^4/ /904/ type national national
rule 2 /^4/ /9004/ type international international

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

Пример 7(В этом примере заменяются тип номера и план):
voice translation-rule 8
rule 1 /^2\(...$\)/ /01779345\1/ type unknown national plan unknown isdn

По этому правило сопоставляются все четырехзначные номера, которые начинаются с «2». Правило удаляет «2», добавляет в виде префикса номер «01779345», устанавливает план «isdn» и тип «national».

Пример 8(Обрезание номеров до последних двух цифр):
rule 1 /^.*\(..\)/ /\1/

Пример 9(Вырезаем дефис из номера(кто их вообще ставит):
voice translation-rule 12
rule 1 /^\(01...\)\-\(......?$\)/ /\1\2/
rule 2 /^\(0[12]..\)\-\(...\)\-\(....$\)/ /\1\2\3/

Пример 10(номер формата 95555… заменяем на 9480555…)
voice translation-rule 10
rule 1 /\(9\)\(5555...\)/ /\1480\2/

Отклонение вызовов
Используйте ключевое слово reject для отклонения совпадающих вызовов. В этом примере отклоняются все звонки, которые начинаются с «234».
rule 1 reject /^234/

Тестирование правил трансляции:
test voice translation-rule 1 1234

Применение правил
Правила трансляции голоса применяются к профилям трансляции голоса. Эти профили затем применяются к одноранговым узлам или голосовым портам. Профили могут быть применены к одноранговым узлам или голосовым портам VoIP или ТфОП, а также ко входящим и исходящим звонкам. Профиль может преобразовывать вызываемый, вызывающий или перенаправленный номера.
voice translation-rule 3
rule 1 /123/ /456/
voice translation-profile profile1
translate calling 3
dial-peer voice 10 pots
translation-profile outgoing profile1

Можно попробовать так:
Входящие на POTS порту:
voice-port location
translate {called | calling} name-tag
Пример:
Router(config)# voice-port 1/0:1
Router(config-voiceport)# translate called 4

ВСЕ Входящие на VOIP портах:
voip-incoming translation-rule {called | calling} name-tag
Пример:
Router(config)# voip-incoming translation-rule called 5
Исходящие вызовы:
!Если задан Prefix он выполняется перед translate-outgoing
dial-peer voice number pots | voip | vofr| voatm
translate-outgoing {called | calling} name-tag
Пример:
Router(config)# dial-peer voice 345 pots
Router(config-dialpeer)#translate-outgoing called 6

Пример0: отпиливаем 9ку
translation-rule 20
rule 1 91 1 international national
!
dial-peer voice 10 pots
destination-pattern 91..........
translate-outgoing called 20
port 0/0/1:15


Комментарии: