Asterisk. Команда MacroIf.

MacroIf() - Вызывает заранее определенный макрос по условию.

MacroIf(условие?макросеслиистинно,аргументы:макросеслиложно,аргументы)

Вычисляет условие, а затем выполняет макросеслиистинно или макросесли-ложно. Во всем остальном, кроме вычисления условия, MacroIf() ведет себя идентично приложению  Macro().

Пример:

; определяем макрос для обратного счета от заданного значения

[macro-countdown]
exten => s,1,Set(COUNT=${ARG1})
exten => s,2,While($[ ${COUNT} > 0])
exten => s,3,SayNumber(${COUNT})
exten => s,4,Set(COUNT=$[ ${COUNT} - 1])
exten => s,5,EndWhile()
; определяем макрос для прямого счета от заданного значения
[macro-countup]
exten => s,1,Set(COUNT=1)
exten => s,2,While($[ ${COUNT} < ${ARG1}])
exten => s,3,SayNumber(${COUNT})
exten => s,4,Set(COUNT=$[ ${COUNT} + 1])
exten => s,5,EndWhile()
; вызываем наш макрос с двумя разными значениями
[example]
exten => 123,1,MacroIf($[ ${foo} < 5 ]?countup,${foo}:countdown,${foo})

 

См. также: GotoIf(), GosubIf(), IF