Asterisk Extension Language (AEL)

Wer einmal ein ls im Verzeichnis /etc/asterisk/ ausgeführt hat, wird dort nicht nur eine Datei extensions.conf, sondern auch eine Datei extensions.ael gefunden haben. In dieser Datei ist ein Teil des Dialplanes in der Asterisk Extension Language (kurz AEL) abgespeichert. AEL ist ein Versuch die Programmierung des Dialplanes syntaktisch mehr an andere Programmiersprachen anzulehnen. Wenn ein sonst üblicher Dialplan wie folgt aussieht:

[meine-telefone]
exten => 23,1,Wait(1)
exten => 23,2,Answer()
exten => 23,3,Playback(hello-world)
exten => 23,4,Wait(1)
exten => 23,5,Hangup()

Dann sieht die gleiche Extension im gleichen Context in AEL wie folgt aus:

context meine-telefone {
        23 => {
                Wait(1);
                Answer();
                Playback(hello-world);
                Wait(1);
                Hangup();
        };
};

Wie spielen die beiden Versionen des Dialplanes zusammen? Asterisk lädt erst die Datei extensions.conf und dann konvertiert es die Datei extensions.ael in das .conf Format, um es danach zu laden. Es werden also beide Dateien geladen und als Dialplan ausgeführt! Da die AEL erst noch in das alte Format umkonvertiert werden muss, könnte man sogar mit einem leichten zeitlichen Nachteil argumentieren. Wenn in beiden Dateien die gleiche Extension im gleichen Context definiert ist, dann nimmt Asterisk die extensions.conf Variante.

Ob man den traditionellen oder den AEL Weg wählt, muss jeder selbst entscheiden. Vom technischen Standpunkt gibt es keine Unterschiede in der Funktionalität. Wer sich für AEL interessiert, sollte einmal einen Blick in die Datei /etc/asterisk/extensions.ael werfen. Dort gibt es einige praktische Beispiele.

In diesem Buch werden alle Beispiele immer im traditionellen Modus beschrieben. Einer der Gründe dafür ist, das AEL bei der Asterisk Version 1.2 noch als experimentell eingestuft wurde. Erst mit der Asterisk Version 1.4 ist AEL vom Status "stable" .