6.4. Makro
Ein Makro ist eine Art Unterprogramm. Es kann komplexe Workflows
enthalten und dann im restlichen Dialplan immer mit einer einzigen Zeile
aufgerufen werden. Ein einfaches Beispiel kann so
aussehen:
[macro-anruf] exten => s,1,Dial(SIP/${MACRO_EXTEN},10) exten => s,n,VoiceMail(${MACRO_EXTEN})
Ein solches Makro würde im Rest des Dialplans dann wie folgt
aufgerufen werden:
[verkauf] exten => _2XXX,1,Macro(anruf) [hausmeister] exten => _2XXX,1,Macro(anruf)
Bei einem zweizeiligen Makro ist der Effekt natürlich nicht so groß
wie bei einem langen Makro, aber es ist klar, worum es geht.
Die Benutzung oder Nichtbenutzung von Makros spaltet die
Asterisk-Entwicklergemeinde in zwei Lager. Für die eine Hälfte machen sie
den Dialplan übersichtlicher, und für die andere Hälfte machen sie ihn
total unübersichtlich. Entscheiden Sie selbst, zu welcher Gruppierung Sie
gehören!
6.4.1. Makro-Basics
Bei der Definition eines Makros sind folgende Punkte zu
beachten:
- Bei der Definition eines Makros gibt es nur eine Extension (die
s
-Extension). - Auf die ursprünglichen Variablen
${EXTEN}
und${CONTEXT}
kann innerhalb des Makros nicht direkt zugegriffen werden. Das geschieht über die Variablen${MACRO_EXTEN}
und${MACRO_CONTEXT}
. - Beim Aufruf eines Makros können zusätzliche Argumente übergeben werden (durch Komma oder Pipe abgetrennt). Diese können im Makro mit
${ARGn}
(n
ist dabei eine natürliche Zahl) abgerufen werden. - Ein Makro wird durch
[macro-macroname]
definiert und mit der ApplikationMacro()
im Dialplan aufgerufen.
Weitere Informationen zu Makros finden Sie unter Abschnitt C.81, „
Macro()
“.Tipp
Mit der Applikation
MacroExclusive()
kann
man sicherstellen, dass das konkrete Makro immer nur einmal zu einem
gegebenen Zeitpunkt aufgerufen wird (siehe Abschnitt C.82, „MacroExclusive()
“).