Приоритеты

Каждый добавочный номер может включать множество шагов, называемых приоритетами. Каждый приоритет пронумерован последовательно, начиная с 1, и выполняет одно определённое приложение. Например, следующий добавочный номер овечает на звонок (в приоритете под номером 1) и затем выполняет разъединение (в приоритете под номером 2):

exten => 123,1,Answer() exten => 123,2,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. Однако следует отметить, что приоритет под номером 1 должен быть задан ОБЯЗАТЕЛЬНО. Если случайно для идущего первым приоритета задать n вместо 1, добавочный номер будет недоступен.

Asterisk допускает выполнение простых арифметических операций с приоритетами (зачем?), таких как n + 200, или использование приоритета s (от английского same - такой же), но для их применения вам нужно быть профессионалом. Обратите внимание, что добавочный номер s и приоритет s - это две разные вещи.

Метки приоритетов

Начиная с версии 1.2 в Astersik стало общепринятой практикой присваивать приоритетам текстовые метки. Это обеспечивает возможность ссылаться на приоритет не по номеру, который может быть неизвестен, потому что теперь в диалпланах, как правило, используются ненумерованные приоритеты. Чтобы присвоить приоритету текстовую метку, просто добавляем её в круглых скобках после приоритета:

exten => 123,n(метка),Приложение()

Очень распространённой ошибкой является использование запятой между символами n и (, как в данном примере:

exten => 123,n,(метка),Приложение() ;ЭТО НЕ БУДЕТ РАБОТАТЬ!

Это приведёт к нарушению данной части диалплана, будет выдано сообщение об ошибке из-за того что приложение не найдено.

Далее рассмотрим приложение

Поддержите проект, если он помог вам

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