Name
Macro() — Calls a previously defined macro
Synopsis
Macro(macroname
,arg1
,arg2
...)
Executes a macro defined in the context named macro-
macroname
,
jumping to the s
extension of that
context and executing each step, then returning when the steps
end.
The calling extension, context, and priority are stored in
${MACRO_EXTEN}
, ${MACRO_CONTEXT}
, and ${MACRO_PRIORITY}
, respectively. Arguments
arg1
, arg2
, etc.
become ${ARG1}
, ${ARG2}
, etc. in the macro context.
Macro()
returns -1
if any step in the macro returns -1
, and 0
otherwise. If ${MACRO_OFFSET}
is
set at termination, this application will attempt to continue at
priority MACRO_OFFSET
+n
+1 if such a step exists, and at n
+1 otherwise. (In both cases, n
stands for the current priority.)
If you call the Goto()
application inside of the macro, the macro will terminate and control
will go to the destination of the Goto()
.
; 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() ; call our macro with two different values [example] exten => 123,1,Macro(countdown,10) exten => 124,1,Macro(countdown,5)
Get Asterisk: The Future of Telephony now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.