Page 434 - Asterisk™: The Future of Telephony
P. 434
Runs the specified macro, but ensures that only one channel is running inside that
macro at one time. If another channel is already executing that macro, then
MacroExclusive() will pause the channel until that channel has exited the macro.
See Also
Macro()
MacroExit() Explicitly returns from a macro
MacroExit()
Explicitly return from a macro. Normally, Macro() automatically exits when it runs out
of priorities. MacroExit() provides a method by which a macro may be terminated early.
See Also
Macro()
MacroIf() Conditionally calls a previously defined macro
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
406 | Appendix B: Application Reference