Вы здесь

Манипуляция номерами в CUCME (Wildcards, Number Translating)

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

Использование шаблонов или Dial-Peer Wildcards

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

Шаблон (Wildcard) Описание
Period (.) Точка соответствует любому набранному символу 0 - 9, например 30.. соответствует любым номерам начиная от 3000 до 3099
Plus (+) Соответствует одному и более повторению предыдущего символа, например: 6+345 соответствует 66345, 666345, 6666345 и т.д. до общейдниы не более 32 символов.
Brackets ([]) Квадратными скобками можно задать диапазон, например [1-3]47 соответствует 147, 247, 347.
T Соответствует любому последующему символу и любому их количеству (от 0 до 32 символов)
Comma (,) Добавление запятой добавляет паузу в 1 секунду между набираемыми цифрами.

Примеры использования квадратных скобок

333[1-3]... Соответствует набираемым номерам, начинающимся с 333, имеющим 1 или 2 или 3 как четвертую цифру и и заканчивается любыми тремя цифрами
[14-6]444 Соответствует набираемым номерам, где первая цифра 1, 4, 5, 6 и последние три цифры 444
11[56]12 Соответствует набираемым номерам, где первые две цифры 11, третья цифра 5 или 6 и последние две цифры 12
[^1-7]..[135] Соответствует набираемым номерам, первая цифра не является 1-7, вторая и третья цифры - любые, последняя цифра 1 или 3 или 5

Выход в город

Выход в город обеспечивается несколькими шаблонами, их еще называют PSTN Dial Plan.

С первого взгляда выход в город можно сделать простым шаблоном 9T. Проблема тут в том, что шаблон T соответствует номеру длиной до 32 символов. Поэтому после набора к примеру 7-ми значного московского номера, система будет ждать дальнейших цифр в течение 10 секунд (T302 timer) и только после этого отдаст номер на PSTN.
Поэтому на практике стараются явно обозначить длину ожидаемого номера.

Пример PSTN Dial Plan для выхода в город в Москве

9....... Выход в город
98.......... Выход в межгород и на мобильные
9810T Выход на международную связь

В виде диалпиров это будет выглядеть следующим образом:
dial-peer voice 910 pots
description Local Calls
preference 4
destination-pattern 9.......
port 1/0/8

dial-peer voice 808 pots
description National Calls
preference 2
destination-pattern 98..........
port 1/0/8
forward-digits 11

dial-peer voice 809 pots
description International Calls
preference 2
destination-pattern 98011T
port 1/0/8
prefix 8011

Вообще, следует отметить, что бывают диалпиры двух типов:

  • Pots - plain old telephone system dialpeer - Как понятно из названия, используется для подключения к аналоговым линиям или к E1
  • Voip - используется для подключения к шлюзам VoIP

У pots есть свойство автоматически "откусывать" явно заданные цифры из шаблона. Поэтому в 910-м диалпире 9-ка будет откусана автоматом.
С остальными двумя диалпирами есть проблема, т.к. в 808-м нам нужно сохранить 8-ку, а в 809-м нужно сохранить 8011.

Здесь нам помогут следующие две команды:
forward-digits - команда позволяет определить число символов, считая справа, которые мы хотим сохранить или не откусывать (NOT strip)
Таким образом, в 808-м диалпире, если считать справа, попадет 8.......... и от общего номера откусится только 9-ка.

prefix - Команда приставляет указанные цифры слева к номеру.
Это очень полезно для 809-ого диалпира. Там используется международные номера и в конце указана T, т.е. номер допускается переменной длины, в результате чего команда forward-digits в данном случае бесполезна.
Что происходит при использовании prefix 8011: от номера система откусывает явно указанные цифры 98011, но затем мы слева добавляем 8011 и отдаем получившийся номер в город.

Использование Translation Profiles

Для более тонких преобразований можно использовать Translation Profiles. Более того, с помощью них можно сделть все что делается через forward-digits или prefix.

Создание Translation Profiles включает три этапа:

  1. Определяем Translation Rule
  2. Ассоциируем Translation Rule с translation profile
  3. Добавляем translation profile к dial-peer

Синтаксис Translation Rule:
Router(config)# voice translation-rule rule number
Router(cfg-translation-rule)# rule 1 /match/ /set/
Router(cfg-translation-rule)# rule 2 /match/ /set/
Router(cfg-translation-rule)# rule 3 /match/ /set/ ...и т.д.

Мы можем предварительно тестировать Translation Rule командой:
test voice translation-rule

Пример 1

Задача:
- У всех номеров called убрать девятку.
- Все номера calling должны быть заменены на 3467361869

Определяем Translation Rule
voice translation-rule 9
rule 1 /^9/ //

voice translation-rule 361869
rule 1 /.*/ /3467361869/

Ассоциируем Translation Rule с translation profile
voice translation-profile kmg-pbx
translate calling 361869
translate called 9

Добавляем translation profile к dial-peer
dial-peer voice 361869 voip
corlist outgoing call-pbx
description kmg -- UgrTel PBX-style calls
translation-profile outgoing kmg-pbx
preference 3
destination-pattern 9T
session protocol sipv2
session target sip-server
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
dtmf-relay rtp-nte
no vad

Пример 2

Задача:
- Замена called вида [1-5].. на 70[1-5]..

Задачу можно легко сделать используя prefix, посмотрим как добиться того же через Translation Rule
voice translation-rule 333
rule 1 /\([1-5]..\)/ /70\1/
!
voice translation-profile short_calls
translate called 333
!
dial-peer voice 3001 voip
description Short calls
translation-profile outgoing short_calls
destination-pattern [1-5]..
session target ipv4:172.16.2.11
dtmf-relay h245-alphanumeric
codec g711ulaw
no vad

Пример 3

Задача:
- Заменить все номера вида 9839162..... на номера 9.....

Пожалуй подобную задачу можно выполнить только через Translation Rule
voice translation-rule 9839162
rule 1 /^9839162\(.....\)/ /9\1/
!
voice translation-profile national_code_strip
translate called 9839162
!
dial-peer voice 4108 pots
description Local calls from Filials
translation-profile outgoing national_code_strip
preference 3
destination-pattern 9839162.....
port 1/0/12

Примеров можно много найти на:
http://www.cisco.com/en/US/tech/tk652/tk90/technologies_tech_note09186a0...

Как итог - по возможности не следует усложнять конфигурацию, Translation Rule очень мощный инструмент, но даже собственные шаблоны через некоторое время воспринимаются с трудом.

Комментарии

"333[1-3]... Соответствует набираемым номерам, начинающимся с 555" - у Вас опечатка.

Исправил, спасибо!

в dial-peer voice 809 pots исправь destination-pattern 98011T и prefix 8011 тут должно быть 9810Т и 810

Если я звоню по на номер 9801112345 или на номер 981234567 (кол-во цифр не важно в данном примере), то я буду по падать всегда в dial-peer 808. Потому что destination-pattern 98.......... будет рассматриваться выше чем 98011Т. Все что с "Т" всегда имеет наименьший приоритет!

Подскажите, пожалуйста, обязательно ли ставить знак $ в конце 98.......... если хотим, чтобы правило сработало только когда количество точек полностью соответствует указанному (и не меньше). Нужно ли ставить в начале перед девяткой знак ^, чтобы указать что набор номера точно начинается с 9?

В принципе необязательно. Цифры и точки задают и так задают начало и конец однозначно

Лучше применять символы ^ и $ для начала и конца номера. Правила трансляции ищут совпадение заданной последовательности и неважно где она находится - в начале, в конце или в середине номера. Так что лучше жестко задавать длину транслируемого номера.

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image