Letzte Woche => Endspurt!Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ. Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/ |
Ruft ein zuvor definiertes Makro auf.
Macro(macroname
[,Arg1
[,Arg2
[,...
]]])
Führt ein im Kontext macro-
definiertes Makro aus, indem es zur macroname
s
-Extension dieses Kontextes springt und nach der Ausführung des Makros zurückkehrt.
Die angerufene Extension, Kontext und Priorität sind innerhalb des Makros in ${MACRO_EXTEN}
, ${MACRO_CONTEXT}
und ${MACRO_PRIORITY}
verfügbar. Die Parameter Arg1
, Arg2
... werden im Makrokontext 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
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 10.39, „Goto()
“, Abschnitt 10.37, „Gosub()
“
© by Stefan Wintermeyer