|  |
5.5. Трансляторы
Трансляторы номеров являются одним из 2х поддерживаемых типов
преобразователей номерной емкости, поддерживаемых решениями SmartGate.
Их основное отличие - возможность работы только на уже заданом номере и
отсутствие механизмов распределения номерной емкости.
Общий синтаксис трансляторов
Каждый транслятор представляет собой поименованую последовательность
строк вида:
<шаблон> -> <подстановка> [continue]
- <шаблон> - стандартный шаблон префиксов, используемый в SmartGate.
- <подстановка> - макровыражение, подставляемое вместо транслируемого
номера в результате применения действия.
На транслятор можно в дальнейшем ссылаться как на "translator://". Трансляторы используются в качестве преобразователей номеров в описании точек доступа, портов или ПОС любого вида.
Работа трансляторов
Строки правила трансляции просматриваются последовательно.
В случае попадания транслируемого номера под <шаблон> очередной
строки номер заменяется на соответствующую <подстановку> и правило
считается примененным.
В <подстановке> разрешено использование DTMF символов
(0-9#*,) а также мета-символов ~, %, P.
| % | Транслируемый номер. |
| P | Префикс транслируемого номера, попавший под <шаблон>. |
| ~ | Остальная часть транслируемого номера ( за совпавшим префиксом ). |
Для мета-символов определена функция взятия подстроки.
Записывается сразу после метасимвола в виде
{<позиция первого символа>,<длина>}.
Любой параметр может отсутствовать, тогда позиция первого символа берется
как 0 (соответствует первому символу), длина - как максимально возможная.
В случае применения строки правила с флагом [continue]
номер модифицируется, но просмотр правила продолжается. При отсутствии этого
флага все правило считается примененным и его просмотр прекращается,
даже если действие не изменило номер по существу.
Пример правила трансляции:
| 011 | -> | ~ | continue | Удалить префикс 011 и продолжить проверки. |
| 380[57] | -> | P{1,}~ | | Номера на 3805,3807 -> номера на 805,807 |
| 80 | -> | 3% | | К номерам на 80 приписывает 3 в начало. |
| 1!1 | -> | 01#% | | Префикс 01# для номеров на 1, но не на 11. |
Пример правила, 'сбивающего' все тех. префиксы вида ..#, .# и префикс 011, выполняющего замену префиксов 80[56] -> 380[56], 80[1-47-9] -> 70[1-47-9] а всем остальным номерам приписывающего префикс 38056.
| {{.}.}#|011 | -> | ~ | continue |
| 80[56] | -> | 3% | |
| 80[147-9] | -> | 7P{1,}~ |
|
| All | -> | 38056% |
|
Пример правила, 'заворачивающего' все звонки с префиксом 0 на номер 008, уничтожающего все тех. префиксы вида .# и приписывающего на направления [1-3] тех.префикс 891#
| 0 | -> | 008 |
| .# | -> | ~ |
| [1-3] | -> | 891#% |
Пример правила, сдвигающего префиксы 1->2, 2->3 и только на преобразованных таким образом номерах имеющих второй цифорй '#' передвигающего эту цифру в конец ( сдвиг классов доступа с переходом в явный номер ).
| ### | -> | % |
| 1 | -> | ###2 | continue |
| 2 | -> | ###3 | continue |
| ###.# | -> | ~P{3,1} | |
|