Имена екстеншенов и шаблоны в плане набора Asterisk.


Имена екстеншенов.


Именами для екстеншенов в плане набора могут быть обычные номера, такие как “412” или “0”. Также они могут состоять из букв или строк, содержащих, как цифры, так и буквы, например, “john” или “A93”. Однако, на обычном телефоне невозможно набрать номер екстеншена, такой как “john”, там просто нет таких символов. Однако, на некоторых телефонных аппаратах можно исхитриться и набрать такой номер (например, на телефонах Cisco, с помощью алфавитно-цифровой клавиатуры). Но для таких экстеншенов есть другое логичное применение. Суть его состоит в том, что, проектируя логику Вашего плана набора, может возникнуть желание совершить переход с обработки последовательности команд одного екстеншена, на обработку последовательности команд, которые связаны с другим екстеншеном. Имя екстеншена, на который совершается переход, можно выбрать по Вашему желанию, т.к. в этом случае, вызов не попадает непосредственно в него, а используется скорее, как ветвление алгоритма плана набора, для изначального екстаншена (того, на который непосредственно попадает вызов).

И еще один момент, кнопочные телефоны часто содержат не только цифры от 0 до 9. У них еще бывают кнопки: * (звездочка) и # (называемые “pound” или “hash”, в зависимости от того, где вы живете). А некоторые кнопочные (DTMF) телефоны имеют еще и четыре дополнительные “цифровые” кнопки: A, B, C и D. Если в вашей организации есть подобные телефонные трубки, то ничего не мешает использовать в Вашем плане набора имена екстеншенов с этими символами, для каких-либо целей по Вашему усмотрению.

Замечание: Для того чтобы задать номер екстеншена, который вызывается набором символа #, Вам необходимо использовать шаблонный екстеншен (смотри ниже). Астериск не воспринимает # как обычный “символ”, хотя он есть у всех DTMF телефонов.

exclaimЗамечание: Екстеншен X - (без подчеркивания), это не шаблон, который совпадает с любой цифрой от 0 до 9, а простой екстеншен с именем "X".


Шаблоны для екстеншенов.


Имена екстеншенов не ограничиваются однозначно определенными “номерами телефонов”. Один экстеншен может быть сопоставлен целому набору номеров, на основе шаблона.
exclaimВ файле extensions.conf имя екстеншена является шаблоном, если оно начинается с символа подчеркивания (_).
В именах шаблонных екстеншенов, следующие символы имеют специальное значение и трактуются особым образом:


X соответствует любому числу от 0 до 9
Z соответствует любому числу от 1 до 9
N соответствует любому числу от 2 до 9
[1237-9] соответствует любому числу или диапазону чисел, которые заключены в квадратные скобки (в данном случае: 1,2,3,7,8,9)
. специальный символ, соответствует одному или более символов (не только цифрам)
! специальный символ, соответствует отсутствию, одному или более символов (не только цифрам) (Asterisk 1.2 и более поздние версии, см. замечание)


Замечание: Символ шаблона "!" доступен, начиная с версии Asterisk 1.2 и в более поздних, он ведет себя особенно — как только все маски или символы до него совпали с набираемым номером и набираемый номер (на данный момент) не совпадает ни с одним шаблонным или простым екстеншеном в контексте, будет использоваться данный екстеншен, причем, не дожидаясь пока номер будет введен полностью. Это было сделано для следующих сценариев, например, как описано в контексте ниже, как только набираемый номер перестал совпадать с '001800...', будет задействована обычная телефонная линия и все последующие номера набираемого номера будут донабираться непосредственно в линию (с аудиоконтролем состояния линии) .


Context "outgoing":
Extension Description
_001800NXXXXXX Вызовы на бесплатные номера в US производим через VoIP
_X! Все остальные вызовы - через обычного телефонного оператора, с донабором в линию.


Пример


Посмотрим на следующий контекст:


Context "routing":
Extension Description
_61XX Dallas Office
_63XX Dallas Office
_62XX Huntsville Office
_7[1-3]XX San Jose Office
_7[04-9]XX Los Angeles Office


Этот контекст с именем “routing”, отправляет вызовы на другие сервера, в зависимости от номера екстеншена. Предполагается, что все номера в организации содержат 4 цифры. Если пользователь набрал номер, начинающийся с 61 или 63, то вызов будет отправлен на сервер "Dallas office"; 62 – на сервер "Huntsville office"; 71, 72, или 73 – в San Jose, 70, 74, 75, 76, 77, 78 или 79 – на сервер "Los Angeles office".

Еще примеры шаблонных екстеншенов.



_NXXXXXX соответствует обычному 7-значному телефонному номеру (стоит отметить, что забугром обычные номера не могут начинаться с цифры 0 или 1)
_1NXXNXXXXXX соответствует коду зоны и телефонному номеру
_9011. соответствует любой строке минимум из пяти символов, которая начинается с 9011, но не соответствует самому номеру 9011.
_9011! в отличие от предыдущего примера, соответствует еще и самому четырехзначному номеру 9011.
_# соответствует единичному нажатию клавиши #


Предупреждение


Не используйте шаблон _., т.к. он будет соответствовать вообще всему, включая специальные екстеншены сервера Астериска типа i, t, h, т.д. Вместо этого используйте шаблоны вида: _X. или _X, под которые не будут подпадать специальные екстеншены asterisk.

Порядок сортировки и поиска совпадений с шаблонными екстеншенами.


Если более чем один шаблон соответствует набранному номеру, Астериск может выбрать совсем не тот екстеншен, что Вы ожидаете.
Для дополнительной информации, смотри страницу:

Ссылки по теме