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
   429   430   431   432   433   434   435   436   437   438   439