Шаблоны имен файлов. Курс «Введение в Linux и Bash»

Bash, а также другие командные оболочки Linux и средства языков программирования позволяют находить в структуре дерева каталогов те файлы, имена которых соответствуют определенному шаблону имени файла. В случае командной оболочки именно она сравнивает с шаблоном имя очередного файла. Если оно соответствует шаблону, то файл будет учтен, если нет – будет пропущен. Шаблон можно сравнить с коробкой, в которую влезет не каждый объект. Не только из-за размеров, также из-за несовпадения формы коробки и предмета.

Зачем нужны шаблоны имен? Часто требуется выполнить однотипные действия над группой файлов. Описывать эти действия по отношению к каждому отдельному файлу или перечислять их все после команды было бы трудоемкой задачей. Таким образом, шаблоны позволяют выделить группу файлов, чьи имена удовлетворяют определенным условиям, из общей массы.

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

Шаблоны имен файлов и каталогов задаются с помощью специальных символов. Чаще используются два: * – звездочка, ? – знак вопроса.

Звездочкой (*) в шаблоне обозначают любую группу символов. Их количество роли не играет. Это могут быть пять, десять, один символ или даже ни одного. Так, например, шаблону, состоящему всего из одного символа *, будет соответствовать абсолютно любой файл. Использование шаблона *.html позволит выделить все html-файлы, а шаблон my*.odt – файлы, начинающиеся с «my» и оканчивающиеся на «.odt». Шаблон *2010* определяет все файлы, в именах которых присутствует группа символов 2010.

Знаком вопроса (?) в шаблоне обозначают любой один символ. Например, под шаблон otchet.??? подойдут файлы, имеющие расширение из любых трех букв, но начинающиеся именно так, как задано в шаблоне. Шаблону descrip?ion.pdf будут соответствовать файлы с заданным именем, но вместо знака вопроса может стоять любой символ.

Кроме символов звезды и вопроса, существуют более сложные правила записи шаблонов. Так использование квадратных скобок [ ] со списком вложенных значений позволяет осуществлять более гибкий поиск файлов. Пусть требуется найти все файлы, имена которых начинаются с буквы m, при этом регистр не учитывается. Шаблон будет выглядеть так: [mM]*.

Если надо одновременно найти файлы, начинающиеся на буквы, идущие подряд в алфавите, то задается диапазон. Например, под шаблон [m-pM-P]???.png подойдут все файлы с расширением png, имена которых состоят из четырех букв, причем первая буква m или n или o или p без учета регистра.

Понятно, что в одном шаблоне имени файла можно использовать разные специальные символы. Например, [aA]*.???.

В Bash шаблоны имен используются с командами, которые в качестве аргументов принимают имена файлов. Например, ls – просмотр каталогов, cp – копирование файлов, find – поиск файлов и др. Однако на самом деле командам передается не шаблон, а уже подошедшие под него файлы. Определением подходящих под шаблон объектов занимается сама командная оболочка Linux, в данном случае Bash.

Курс с ответами к заданиям и дополнительными уроками

в PDF

Использование общих шаблонов команд в Центре администрирования — Microsoft Teams





Twitter




LinkedIn




Facebook




Адрес электронной почты










  • Статья



  • Применяется к:

    Microsoft Teams

Обзор

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

Используйте шаблоны команд для развертывания согласованных команд в организации. Шаблоны также помогают пользователям ориентироваться на эффективное использование Teams. Вы также можете расширить шаблоны, чтобы создавать команды, адаптированные к конкретным потребностям организации.

Teams включает готовые шаблоны, созданные для конкретных бизнес-потребностей и проектов. В этой статье мы познакомим вас с общей категорией шаблонов, которые можно использовать в вашей организации для различных сценариев.

Дополнительные сведения о шаблонах команд см. в статье Начало работы с шаблонами команд в Центре администрирования Teams.

Примечание.

Звездочка (*) указывает, что шаблон является подключенным шаблоном Microsoft 365. Когда пользователи создают команду с помощью шаблона, подключенный шаблон SharePoint применяется к сайту и команде. Компоненты SharePoint, такие как страницы, списки и интеграции Power Platform, автоматически добавляются и закрепляются как вкладки в канале «Общие» в команде. Пользователи могут редактировать эти страницы и списки прямо из Teams.

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

Управление проектом*

Управляйте задачами, делитесь документами, проводите собрания проекта и документируйте риски и решения с помощью этого шаблона для общего управления проектами.

Тип шаблонаTemplateIdСвойства этого шаблона
Управление проектомcom.microsoft.teams.template.ManageAProjectКаналы:

  • Общий
  • Объявления
  • Ресурсы
  • Планирование

Приложения:

  • Утверждения
  • Бюллетени
  • Списки
    • Средство отслеживания проектов
    • Средство отслеживания проблем
  • Вехи
  • OneNote
  • Power Automate
  • SharePoint Pages
    • Наш сайт
  • Задачи планировщика и задачи
  • Вики

Управление событием*

Управление задачами, документами и совместная работа над всем, что необходимо для проведения привлекательных мероприятий. Пригласите гостевых пользователей для безопасной совместной работы в организации и за ее пределами.

Возможно, у вас нет доступа к определенным приложениям на основе политики разрешений приложений.

Тип шаблонаTemplateIdСвойства этого шаблона
Управление событиемcom.microsoft.teams.template.ManageAnEventКаналы:

  • Общий
  • Объявления
  • Бюджет
  • Содержимое
  • Логистика
  • Планирование
  • Маркетинг и PR

Приложения:

  • Утверждения
  • Бюллетени
  • Идеи сотрудников
  • Списки
    • Планировщик содержимого
  • Вехи
  • OneNote
  • Power Automate
  • SharePoint Pages
    • Наш сайт
    • О нашем мероприятии
  • Задачи планировщика и задачи
  • Вики

Подключение сотрудников*

Улучшайте свою культуру и оптимизируйте адаптацию сотрудников с помощью этой центральной команды для получения ресурсов, вопросов и немного удовольствия.

Тип шаблонаTemplateIdСвойства этого шаблона
Подключение сотрудниковcom.microsoft.teams.template.OnboardEmployeesКаналы:

  • Общий
  • Объявления
  • Чат для сотрудников
  • Учебный курс

Приложения:

  • Бюллетени
  • Идеи сотрудников
  • Списки
    • Контрольный список подключения
  • Вехи
  • Power Automate
  • SharePoint Pages
    • Начало работы
    • Учебный курс
  • Задачи планировщика и задачи
  • Viva Engage
  • Вики

Принять Office 365

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

Тип шаблонаTemplateIdСвойства этого шаблона
Принять Office 365com.microsoft.teams. template.AdoptOffice365Каналы:

  • Общий
  • Объявления
  • Уголок чемпионов
  • Формы группы
  • Календарь

Приложения:

  • Вики
  • Календарь канала
  • Вехи
  • Бюллетени

Упорядочение службы технической поддержки*

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

Тип шаблонаTemplateIdСвойства этого шаблона
Упорядочение службы технической поддержкиcom.microsoft.teams.template.OrganizeHelpDeskКаналы:

  • Общий
  • Объявления
  • Вопросы и ответы

Приложения:

  • Отчеты о проблемах
  • Списки
    • Устройства
    • Tix
  • OneNote
  • Power Automate
  • SharePoint Pages
    • Наш сайт
    • Вопросы и ответы
  • Задачи планировщика и задачи
  • Вики

Кризисные коммуникации*

Централизация коммуникаций и критически важных ресурсов для группы по управлению кризисом или реагированию на инциденты. Используйте онлайн-собрания для улучшения потока информации и ситуационной осведомленности.

Тип шаблонаTemplateIdСвойства этого шаблона
Кризисные коммуникацииcom.microsoft.teams.template.CollaborateOnAGlobalCrisisOrEventКаналы:

  • Общий
  • Объявления
  • Обновление для руководителей
  • Планирование
  • Логистика

Приложения:

  • Утверждения
  • Отчеты о проблемах
  • Списки
    • Планировщик содержимого
    • План проекта
  • OneNote
  • Power Automate
  • SharePoint Pages
    • Наш сайт
    • Последнее обновление
  • Задачи планировщика и задачи
  • Начало работы с шаблонами команд в Центре администрирования Teams
  • Создание команды на основе шаблона






Сопоставление с образцом — проект Asterisk

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

Когда Алиса набирает номер на своем телефоне, Asterisk сначала ищет добавочный номер (в контексте, заданном конфигурацией драйвера канала), который точно соответствует тому, что набрала Алиса. Если точного совпадения нет, Asterisk ищет соответствующий шаблон. После того, как мы покажем синтаксис и несколько основных примеров сопоставления с образцом, мы объясним, как Asterisk находит наилучшее совпадение, если есть два или более образца, которые соответствуют набранному номеру.

Совпадения с образцом всегда начинаются со знака подчеркивания. Так Asterisk распознает, что расширение является шаблоном, а не просто расширением с забавным названием. В шаблоне мы используем различные буквы и символы для представления наборов или диапазонов чисел. Вот наиболее распространенные буквы:

X

Буква X или x представляет одну цифру от 0 до 9. 9.

N

Буква N или n соответствует любой цифре от 2 до 9.

 

Можно использовать числовой диапазон для сопоставления с набранным номером. Это также называется набором символов

 

[1237-9]

Этот шаблон соответствует любой цифре или букве в скобках. В этом примере шаблон будет соответствовать: 1,2,3,7,8,9

 

Следующие специальные символы считаются подстановочными знаками

  • . ‘.’ символ соответствует одному или нескольким символам
  • ! ‘!’ соответствует нулю или более символов сразу

 

Подстановочный знак восклицательного знака (!), ведет себя особым образом и будет объяснен ниже в разделе «Другие специальные символы».

Обязательно прочтите ниже пункт «Будьте осторожны с подстановочными знаками в сопоставлении с образцом».

  • Специальные символы, используемые при сопоставлении с образцом
    • Х
    • З
    • Н
  • Диапазоны, используемые при сопоставлении с образцом
    • [1237-9]
  • Подстановочные знаки, используемые в сопоставлении с образцом
  • Базовый пример
  • Сложные примеры
  • Наборы символов
  • Другие специальные символы
  • Порядок сопоставления с образцом
  • Сопоставление с идентификатором вызывающего абонента

 

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

 exten => _64XX,1,SayDigits(${EXTEN})
 

В этом примере каждый X представляет одну цифру с любым значением от нуля до девяти.

Приведенный выше шаблон будет соответствовать следующим примерам:

  • 6400
  • 6401
  • 6450
  • 6499

По сути, мы говорим, что вторая цифра должна быть четвертой, первая цифра должна быть шестой. третья цифра может быть любой от нуля до девяти, а четвертая цифра может быть любой от нуля до девяти».

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

 exten => _64X[4-9],1,SayDigits(${EXTEN})
exten => _[6-4]4[4-9],1,SayDigits(${EXTEN})
exten => _64.,1,SayDigits(${EXTEN}) 

Первый пример: первая цифра должна быть шестеркой, вторая цифра должна быть четверкой, третья цифра может быть любой от нуля до девяти, а четвертая цифра должна быть от четырех до девяти

Второй пример: первая цифра должна быть от шести до четырех, вторая цифра должна быть от четырех, третья цифра должна быть от четырех до девяти

Третий пример: Первая цифра должна быть шестеркой, вторая цифра должна быть четверкой, третья цифра может быть вообще любой (включая буквы), и мы будем продолжать собирать цифры, пока пользователь не перестанет вводить цифры

Если мы хотим уточнить диапазон чисел, мы можем поместить эти числа или диапазоны чисел в квадратные скобки, чтобы определить набор символов. Например, что, если мы хотим, чтобы вторая цифра была тройкой или четверкой? Один из способов — создать два шаблона ( _64XX и _63XX ), но более компактным методом будет _6[34]XX . Это указывает, что первая цифра должна быть шестеркой, вторая цифра может быть либо тройкой, либо четверкой, а последние две цифры могут быть любыми от нуля до девяти.

Вы также можете использовать диапазоны в квадратных скобках. Например, [1-468] будет соответствовать одной цифре от одного до четырех, шести или восьми. Оно не соответствует ни одному числу от одного до четырехсот шестидесяти восьми!

В шаблонах Asterisk мы также можем использовать несколько других символов для представления диапазонов чисел. Символ точки ( . ) в конце шаблона соответствует одному или нескольким оставшимся символам . Вы помещаете его в конец шаблона, когда хотите сопоставить расширения неопределенной длины. Например, шаблон _9876. будет соответствовать любому числу, которое начинается с 9876 и содержит хотя бы еще один символ или цифру.

Восклицательный знак ( ! ) похож на точку и соответствует нулю или более оставшимся символам. Он используется при наборе с перекрытием для набора номера через Asterisk. Например, _9876! будет соответствовать любому числу, начинающемуся с 9876 , включая 9876 , и ответит, что число завершено, как только будет однозначное совпадение.

Теперь давайте покажем, что происходит, когда набранному номеру соответствует более одного шаблона. Как Asterisk узнает, какой шаблон лучше всего подходит?

Asterisk использует простой набор правил для сортировки расширений и шаблонов таким образом, чтобы наилучшее совпадение находилось первым. Лучшее совпадение — это просто наиболее конкретный образец. Правила сортировки:

  1. Символ дефиса ( ) игнорируется в расширениях и шаблонах, за исключением случаев, когда он используется в шаблоне для указания диапазона в наборе символов. Это не влияет на сопоставление или сортировку расширений.
  2. Расширения, не являющиеся шаблонами, сортируются в порядке сортировки ASCII перед шаблонами.
  3. Шаблоны сначала сортируются по наиболее ограниченному набору символов для каждой цифры. Под наиболее ограниченным мы подразумеваем шаблон, который имеет наименьшее количество возможных совпадений для цифры. Например, символ N имеет восемь возможных совпадений (от двух до девяти), а X имеет десять возможных совпадений (от нуля до девяти), поэтому N сортируется первым.
  4. Наборы символов с одинаковым количеством символов сортируются в порядке сортировки ASCII, как если бы наборы были строками из набора символов. Например, X — это 0123456789 и [a-j] — это abcdefghij , поэтому X сортируется первым. Такой порядок сортировки важен, если наборы символов перекрываются, например, [0-4] и [4-8] .
  5. Точка ( . ) сортирует подстановочные знаки после наборов символов.
  6. Восклицательный знак ( ! ) сортируется после подстановочного знака точки.

Давайте рассмотрим пример, чтобы лучше понять, как это работает. Предположим, Алиса набирает добавочный номер 9.0013 6421 , и в ее диалплане есть следующие шаблоны:

 exten => _6XX1,1,SayAlpha(A)
exten => _64XX,1,SayAlpha(B)
exten => _640X,1,SayAlpha(C)
exten => _6.,1,SayAlpha(D)
exten => _64NX,1,SayAlpha(E)
exten => _6[45]NX,1,SayAlpha(F)
exten => _6[34]NX,1,SayAlpha(G)
 

Можете ли вы сказать (не читая заранее), какой из них подойдет?

Используя описанные выше правила сортировки, расширения сортируются следующим образом:
_640X сортирует до _64NX из-за правила 3 ​​в позиции 4. (0 перед N)
_64NX сортирует до _64XX из-за правила 3 ​​в позиции 4. (N перед X)
_64XX сортирует до

_X6[] из-за правила 3 ​​в позиции 3. (4 перед [34])
_6[34]NX сортирует перед _6[45]NX из-за правила 4 в позиции 3. ([34] перед [45])
_6[45]NX сортирует до _6XX1 из-за правила 3 ​​в позиции 3. ([45] перед X)
_6XX1 сортирует до _6. из-за правила 5 в позиции 3. (X перед .)

 exten => _640X,1,SayAlpha(C)
exten => _64NX,1,SayAlpha(E)
exten => _64XX,1,SayAlpha(B)
exten => _6[34]NX,1,SayAlpha(G)
exten => _6[45]NX,1,SayAlpha(F)
exten => _6XX1,1,SayAlpha(A)
exten => _6.,1,SayAlpha(D)
 

Когда Алиса набирает 6421 , Asterisk просматривает свой список отсортированных расширений и использует первое подходящее расширение. В данном случае _64NX найден.

Чтобы убедиться, что Asterisk действительно сортирует расширения так, как мы показали, добавьте следующие расширения в контекст [users] вашего собственного диалплана.

 exten => _6XX1,1,SayAlpha(A)
exten => _64XX,1,SayAlpha(B)
exten => _640X,1,SayAlpha(C)
exten => _6. ,1,SayAlpha(D)
exten => _64NX,1,SayAlpha(E)
exten => _6[45]NX,1,SayAlpha(F)
exten => _6[34]NX,1,SayAlpha(G)
 

Перезагрузите диалплан и введите 9Диалплан 0013 показывает [email protected] в интерфейсе командной строки Asterisk. Asterisk покажет вам все расширения, соответствующие контексту [users] . Если вы наберете добавочный номер 6421 в контексте [users] , будет выполнен первый найденный добавочный номер.

 server*CLI> диалплан показать [электронная почта защищена]
[Контекст «пользователи», созданный «pbx_config»]
  '_64NX' => 1. SayAlpha(E) [pbx_config]
  '_64XX' => 1. SayAlpha(B) [pbx_config]
  '_6[34]NX' => 1. SayAlpha(G) [pbx_config]
  '_6[45]NX' => 1. SayAlpha(F) [pbx_config]
  '_6XX1' => 1. SayAlpha(A) [pbx_config]
  _6.' => 1. SayAlpha(D) [pbx_config]
-= 6 расширений (6 приоритетов) в 1 контексте. "="
 
 server*CLI> диалплан показать пользователей
[Контекст «пользователи», созданный «pbx_config»]
  '_640X' => 1.  SayAlpha(C) [pbx_config]
  '_64NX' => 1. SayAlpha(E) [pbx_config]
  '_64XX' => 1. SayAlpha(B) [pbx_config]
  '_6[34]NX' => 1. SayAlpha(G) [pbx_config]
  '_6[45]NX' => 1. SayAlpha(F) [pbx_config]
  '_6XX1' => 1. SayAlpha(A) [pbx_config]
  _6.' => 1. SayAlpha(D) [pbx_config]
-= 7 расширений (7 приоритетов) в 1 контексте. "="
 

Вы можете набрать добавочный номер 6421 , чтобы попробовать это самостоятельно.

В обработчике внутренних номеров также возможно сопоставление на основе идентификатора вызывающего абонента входящего канала путем добавления косой черты к набираемому расширению или шаблону, за которым следует шаблон идентификатора вызывающего абонента для сопоставления. Рассмотрим следующий пример с телефонами с идентификаторами вызывающего абонента 101, 102 и 103.

 exten => 306,1,NoOp()
то же самое => n, Фон (до свидания)
то же самое => n, повесить трубку ()

exten => 306/_101,1,NoOp()
то же => n, фон (год)
то же самое => n, повесить трубку ()

exten => 306/_102,1,NoOp()
то же самое => n, Фон (звуковой сигнал)
то же => n,Повесить() 

Телефон с идентификатором вызывающего абонента 101 при наборе номера 306 услышит подсказку «год» и повесит трубку. Телефон с идентификатором вызывающего абонента 102 при наборе номера 306 услышит звуковой сигнал и повесит трубку. Телефон с идентификатором вызывающего абонента 103 или любой другой вызывающий абонент при наборе 306 услышит приглашение «до свидания» и повесит трубку.

Шаблоны диалплана Asterisk — VoIP-Info

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

Имена расширений

Расширения диалплана могут быть простыми номерами, такими как «412» или «0». Это могут быть буквенно-цифровые имена, такие как «john» или «A93*». Хотя обычный телефон не может набрать добавочный номер с именем «джон» (хотя некоторые могут), часто логика вашего диалплана будет включать переход от одного добавочного номера к другому добавочному номеру, и для этих переходов вы можете определить имена добавочных номеров с любым именем, которое вам нравится. поскольку вы не хотите, чтобы их набирали напрямую.

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

Примечание. Чтобы иметь добавочный номер, активируемый набором символа #, необходимо использовать шаблон добавочного номера (см. ниже). Asterisk не распознает # как обычную «цифру», хотя она появляется на всех телефонах с DTMF.

«Почему люди в США называют символ # фунт ?» Кажется, это не имеет ничего общего ни с деньгами (например, британский фунт стерлингов), ни с весом (фунты).
Ответ: Знак фунта стерлингов

Шаблоны расширений

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

Специальные символы для сопоставления с образцом

  • X или x соответствует любой цифре от 0 до 9
  • Z или z соответствует любой цифре от 1 до 9
  • N или n соответствует любой цифре от 2 до 9
  • [1237-9] соответствует любой цифре или букве в скобках
  • (в данном примере 1,2,3,7,8,9)
  • [a-z] соответствует любой строчной букве (появилась в какой версии Asterisk?)
  • [A-Z] соответствует любой букве ЗАГЛАВНОГО регистра (введено в какой версии Asterisk?)
  • . подстановочный знак, соответствует одному или нескольким символам
  • ! подстановочный знак, сразу соответствует нулю или более символам (только Asterisk 1.2 и выше, см. примечание)

Примечание : Подстановочный знак восклицательного знака, доступный только в Asterisk 1.2 и более поздних версиях, ведет себя особым образом — он совпадет, как только сможет, не дожидаясь завершения набора, но не совпадет, пока не станет однозначным. При этом набираемый номер не может совпадать ни с каким другим расширением в контексте.

Поскольку восклицательный знак соответствует не только цифрам, но и символам, вы должны быть особенно осторожны при их использовании. Убедитесь, что вы фильтруете ввод от ваших вызывающих абонентов, так как в противном случае подстановочный знак может сделать вашу систему уязвимой для атак, в результате чего вызывающий абонент может эффективно избежать границ безопасности вашей системы.

Он был разработан для использования следующим образом, так что, как только набранные цифры не совпадают с «001800…», будет поднята исходящая телефонная линия и будет использоваться набор с перекрытием (с полной звуковой обратной связью от «earlyb3» и т. д. .)

Контекст «исходящий»:
Внутренний номер Описание
_001800NXXXXXX Звонки на бесплатные номера США, сделанные VoIP
_X! Другие звонки через обычную телефонную компанию с перекрывающимся набором номера.

Пример

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

Контекст «маршрутизация»:
Описание внутреннего номера
_61XX Офис в Далласе
_63XX Офис в Далласе
_62XX Офис в Хантсвилле
_7[1-3]XX Сан-Хосе1 Офис 902] XX Офис в Лос-Анджелесе

Этот контекст, получивший название «маршрутизация», отправляет вызовы на различные серверы в соответствии с их расширением. Эта организация решила, что все их добавочные номера будут состоять из 4 цифр. Если пользователь набирает добавочный номер, начинающийся с 61 или 63, он будет отправлен в офис в Далласе; 62 отправятся в офис в Хантсвилле; все, что начинается с 71, 72 или 73, отправится в Сан-Хосе, а все, что начинается с 70, 74, 75, 76, 77, 78 или 79пойдет в офис в Лос-Анджелесе.

Дополнительные примеры шаблонов

_NXXXXXX соответствует 7-значному номеру телефона NANP, например 555-1212
_1NXXNXXXXXX соответствует коду города и номеру телефона, перед которыми стоит единица, например 1-860-555-1212
_9011. соответствует любой строке из не менее пяти символов, которая начинается с 9011,
, но не соответствует самой строке из четырех символов 9011.
_9011! также соответствует 9011
_# соответствует одиночному нажатию #

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

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

Итак, что вы используете вместо _. ? Эта конструкция используется во многих примерах, но если вы ее используете, вы можете увидеть предупреждающее сообщение в журнале с советом изменить _. до _Х. Но просто заменив _. с _Х. не всегда работает, в зависимости от расширения, входящего в контекст. Обычно в Asterisk 1.2 и более поздних версиях будет работать ОДИН из следующих вариантов:

_Х! соответствует любому числовому шаблону из одной или нескольких цифр (но не * или #)
_[*#0-9]! то же, что и предыдущая запись, но также включает символы * и #
_[*0-9]! То же, что и предыдущая запись, за исключением того, что исключается символ #
s, если шаблона вообще нет, то использование s часто будет соответствовать

Шаблон s может быть полезен для входящих вызовов, когда DID недоступен, и в некоторых других ситуациях, когда расширение ничему не соответствует.

Или вы можете использовать пользовательский шаблон. Допустим, вы перескакиваете из одного контекста в другой, и нет особой причины использовать числовой шаблон. Вы можете использовать такое утверждение, как Перейти к (голосовая почта, с, 1) , а затем использовать расширение s в целевом контексте, что вполне допустимо. Но если вы хотите сделать свой номерной план немного более читаемым (или по какой-то другой причине не хотите использовать s ), вы можете вместо этого сделать Goto(voicemail,vm,1) , а затем в голосовой почте контекста на самом деле используйте расширение vm , например:

[голосовая почта]
exten => vm,1,NoOp(вход в контекст голосовой почты)
…..

Если по какой-то причине вы просто должны использовать _. временно, потому что больше ничего не будет работать, затем включите отладку и наблюдайте за интерфейсом командной строки, пока вызов проходит через этот контекст, чтобы вы могли видеть, что такое фактическое расширение. Затем перепишите контекст, чтобы использовать это расширение непосредственно вместо _. или используйте шаблон, который поймает это расширение. В крайнем случае, если вам не нужно сохранять расширение, вы можете использовать два контекста, чтобы избавиться от двусмысленности (что все еще имеет некоторый риск, но ограничивает время воздействия):

[unknownextension]
exten => _.,1,Goto(itmatches,s,1)
…..
[itmatches]
exten => s,1,NoOp(Теперь используется расширение s)
…..

Пример набора URI

[uri]
exten => _[az].,1,Macro(uridial,${EXTEN}@${SIPDOMAIN})
exten => _[A-Z].,1,Macro(uridial ,${EXTEN}@${SIPDOMAIN})
exten => _X.,1,Macro(uridial,${EXTEN}@${SIPDOMAIN})

Теперь добавьте приведенный ниже макрос в extensions.conf в область, где у вас определены другие макросы:

[макро-уридиал]
exten => s,1,NoOp(вызов удаленного узла SIP ${ARG1})
exten => s,n,Dial(SIP/${ARG1},120,tr)
exten = > s,n,Congestion()

Asterisk разбивает все, что находится после «@» в вызове, и создает переменную ${EXTEN} и переменную ${SIPDOMAIN}. Если мы сопоставляем букву нижнего регистра в ${EXTEN}, мы просто набираем [email protected] и вперед!

Порядок сортировки

Если набранному номеру соответствует более одного шаблона, Asterisk может не использовать тот, который вы ожидаете.

Asterisk использует ряд правил для определения того, что происходит, когда набранному номеру соответствует более одного шаблона.

  1. (-) – указывает диапазон в наборе; это не влияет на сопоставление и сортировку расширений.
  2. Порядок сортировки ASCII используется для расширений без шаблонов перед другими шаблонами.
  3. Первым идет самый ограниченный символ (тот, у которого меньше всего совпадений с цифрой). т.е. N перебирается раньше X, так как у него 8 возможных совпадений, а не 10.
  4. Наборы, состоящие из одинакового количества символов, следуют порядку ASCII.
  5. (.) — сортировка по наборам символов.
  6. (!) — сортировка после точки (.)

Дополнительные сведения см.