Asterisk. Команда NoOp.

NoOp() - Не производит никаких действий. Используется для отладки.

NoOp(текст)

Это приложение ничего не делает, является просто заполнителем. Используется в основном  как инструмент отладки.

Если уровень детальности сообщений ядра Asterisk равен 3 или более, Asterisk обрабатывает и выводит каждую строку диалплана перед ее выполнением. Это означает, что любые аргументы, переданные в приложение NoOp() (в параметре текст), выводятся в консоли. Вывод консоли нужен в основном  для отладки диалплана.

Пример:

exten => 123,1,NoOp(CallerID is ${CALLERID})

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

 

Когда использовать NoOp() и Verbose()
Разница между Verbose() и NoOp() несущественна.

Приложение Verbose() пригодится, если надо что-то вывести в консоль. Используя команду set verbose (с указанием требуемого уровня детальности, от 0 до 4), можно настроить вывод так, чтобы на экране отображались не все операции системы, а лишь те, которые имеют такой же или меньший уровень детальности. (Можно задать  любую детальность, но задавать уроовень детальности выше 4 смысла в основном не имеет). Это означает, что можно выводить всевозможную информацию, имеющую отношение к тестируемому разделу кода, без необходимости просматривать другие сообщения системы. Если записать в диалплане следующее: 

exten => _X.,n,Verbose(2, ${SOME_VAR})

можно будет в CLI задать детальность 2 или меньше (core set verbose 2) и просматривать вывод различных вызовов Verbose(), но очень мало другой информации.

Приложение NoOp() лучше всего использовать как заполнитель. Например, если в диалплане имеется Goto() с использованием метки приоритета, NoOp() можно применять как точку перехода из этого приложения.

Например, exten => _X.,n(call_forward),NoOp() является превосходным маркером для указания перехода в ди­алплане в определенную точку. Из этой точки можно продолжать выполнение любой логики, которую требуется применить к этой части добавочного номера (судя по метке, речь идет о пересылке вызова).

NoOp() применяется, когда вы неизвестно, какие действия придется выполнять за этой меткой, и чтобы гарантированно не менять в коде саму метку. Эта команда не делает ничего другого, кроме как предоставляет точку перехода для Goto(). Поэтому NoOp() можно помещать куда угодно и быть увереннным, что это не станет причиной какого-либо неожиданного поведения.
 

 

См. также: Verbose(), Log()