Присвоение имен добавочным номерам может показаться революционной идеей, но если вспомнить, что многие транспортные протоколы VoIP поддерживают (или даже активно поощряют) вызовы по имени или адресу электронной почты, а не просто по номеру, это действительно имеет смысл. Это одно из свойств, делающих Asterisk такой гибкой и мощной системой.
Полный добавочный номер состоит из трех компонентов:
• Имени (или номера).
• Приоритета (каждый добавочный номер может включать множество шагов; порядковый номер шага называется его приоритетом).
• Приложения (или команды), которое выполняет некоторое действие
над вызовом. Эти три компонента разделяются запятыми:
exten => имя,приоритет,
exten => 123,1,Answer В этом примере имя добавочного номера - 123, приоритет - 1, а приложение - Answer. Теперь пойдем дальше и рассмотрим, что такое приоритеты и приложения.
Приоритеты
Каждый добавочный номер может включать множество шагов, называемых
exten => 123,1,Answer exten => 123,2,Hangup
Не переживайте, если вы не понимаете, что такое Answer и Hangup, мы очень скоро их рассмотрим. Здесь главное - запомнить, что для отдельного добавочного номера Asterisk выполняет приоритеты по порядку.
Ненумерованные приоритеты
В более старых версиях Asterisk нумерация приоритетов вызывала множество проблем. Представьте, что в добавочном номере 15 приоритетов и требуется добавить что-то в шаге 2. Номера всех последующих приоритетов пришлось бы менять вручную. Asterisk не обрабатывает пропущенные шаги или неправильно пронумерованные приоритеты, и отладка ошибок такого типа превращалась в бесцельную и досадную трату времени.
Начиная с версии 1.2 Asterisk решила эту проблему. Был введен приоритет n, что означает «следующий». Каждый раз, когда Asterisk встречает приоритет n, она берет номер предыдущего приоритета и добавляет 1. Это упрощает внесение изменений в диалплан, поскольку теперь не надо изменять номера всех шагов. Например, диалплан может быть таким:
exten => | 123,1 | Answer | |
exten => | 123,n | ||
exten => | 123,n | ||
exten => | 123,n | ||
exten => | 123,n | Hangup |
Asterisk будет самостоятельно вычислять номер следующего приоритета при каждой встрече с приоритетом n[69]. Однако следует отметить, что приоритет под номером 1 должен быть задан
Метки приоритетов
Начиная с версии 1.2 в Asterisk стало общепринятой практикой присваивать приоритетам текстовые метки. Это обеспечивает возможность ссылаться на приоритет не по номеру, который может быть неизвестен, потому что теперь в диалпланах, как правило, используются ненумерованные приоритеты. Чтобы присвоить приоритету текстовую метку, просто добавляем ее в круглых скобках после приоритета: exten =>
Очень распространенной ошибкой является использование запятой между символами n и (, как в данном примере:
exten => 123,n,(
В следующей главе мы рассмотрим, как переходить с одного приоритета на другой, используя логику диалплана. Вы будете встречать множество меток приоритетов и станете очень часто использовать их в своих диалпланах.
Приложения
Приложения - это рабочие лошадки диалплана. Каждое приложение выполняет определенное действие над данным каналом, например воспроизведение звука, прием тонального ввода, вызов канала, разрыв соединения и т. д. В предыдущем примере было представлено два простых приложения: Answer и Hangup. Сейчас мы подробнее рассмотрим, как они работают.
Для выполнения некоторых приложений, таких как Answer и Hangup, не требуется никаких дополнительных инструкций. Некоторым приложениям необходима дополнительная информация. Эти данные, называемые