Ruft ein zuvor definiertes Makro auf.
Macro(macroname
[,Arg1
[,Arg2
[,...
]]])
Führt ein im Context
macro-
definiertes Makro
aus, indem es zur macroname
s
-Extension dieses Contextes springt und
nach der Ausführung des Makros zurückkehrt.
Die angerufene Extension, Context und Priorität sind innerhalb
des Makros in ${MACRO_EXTEN}
, ${MACRO_CONTEXT}
und ${MACRO_PRIORITY}
verfügbar. Die Parameter
Arg1
, Arg2
... werden im MakroContext zu
${ARG1}
, ${ARG2}
usw.
Macro()
liefert -1 zurück, falls irgendein Schritt
des Makros -1 zurückliefert, sonst 0. Falls bei Beendigung des Ablaufs
${MACRO_OFFSET}
gesetzt ist, versucht die Anwendung bei
Priorität n+1+MACRO_OFFSET
fortzufahren, falls ein solcher
Schritt existiert, sonst bei n+1.
Falls die Goto()
-Anwendung aus dem Makro heraus
aufgerufen wird, wird das Makro enden und die Kontrolle an das Ziel von
Goto()
gehen.
; ein Makro definieren, das vom übergebenen Wert runterzählt: [macro-countdown] exten => s,1,Set(COUNT=${ARG1}) exten => s,n,While($[ ${COUNT} > 0]) exten => s,n,SayNumber(${COUNT}) exten => s,n,Set(COUNT=$[ ${COUNT} - 1 ]) exten => s,n,EndWhile() [default] exten => 123,1,Macro(countdown,3) ; das Makro "countdown" mit ARG1=3 aufrufen exten => 124,1,Macro(countdown,5) ; das Makro "countdown" mit ARG1=5 aufrufen
Anmerkung | |
---|---|
Interner Hilfetext zu dieser Applikation in Asterisk 1.4: -= Info about application 'Macro' =- [Synopsis] Macro Implementation [Description] Macro(macroname|arg1|arg2...): Executes a macro using the context '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 become ${ARG1}, ${ARG2}, etc in the macro context. If you Goto out of the Macro context, the Macro will terminate and control will be returned at the location of the Goto. If ${MACRO_OFFSET} is set at termination, Macro will attempt to continue at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise. WARNING: Because of the way Macro is implemented (it executes the priorities contained within it via sub-engine), and a fixed per-thread memory stack allowance, macros are limited to 7 levels of nesting (macro calling macro calling macro, etc.); It may be possible that stack-intensive applications in deeply nested macros could cause asterisk to crash earlier than this limit. Differenz zum internen Hilfetext in Asterisk 1.2: 22,23c22,23 < may be possible that stack-intensive applications in deeply nested macros < could cause asterisk to crash earlier than this limit. --- > may be possible that stack-intensive applications in deeply nested > macros could cause asterisk to crash earlier than this limit. |
Siehe auch. Abschnitt 49, „Goto()
“, Abschnitt 47, „Gosub()
“
Asterisk Schulung
- 27.10. - 28.10.2008 in Koblenz
2.1 Beta-Version!
2.1 Beta-Version des Asterisk Buches. Die 1.0 stabile Version ist ebenfalls online. Bitte melden Sie Fehler und Feedback per E-Mail an den Autor.
YouTube Screencasts
Kostenlose Asterisk Screencasts mit jeweils 10 minütigen Erklärungen zu Spezial-Themen.
Shameless Plug
Das gedruckte Buch
Werbung
Asterisk-Tag.org 2008
Auf der Asterisk-Tag.org Webseite finden Sie die Folien und Videos der Vorträge.