Name

MacroIf() — Conditionally calls a previously defined macro

Synopsis

MacroIf(condition?macroiftrue,args:macroiffalse,args)

Evaluates condition, then executes one of either macroiftrue or macroiffalse. Once beyond the condition, however, note that MacroIf() behaves identically to Macro().

; define a macro to count down from the specified value
[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()

; define a macro to count up to the specified value
[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()

; call our macro with two different values
[example]
exten => 123,1,MacroIf($[ ${foo} < 5 ]?countup,${foo}:countdown,${foo})

See Also

GotoIf(), GosubIf(), IF, Chapter 6, More Dialplan Concepts