AEL is a specialized language intended purely for
describing Asterisk dial plans.
The current version was written by Steve Murphy, and is a rewrite of
the original version.
This new version further extends AEL, and
provides more flexible syntax, better error messages, and some missing
functionality.
AEL is really the merger of 4 different 'languages', or syntaxes:
- The first and most obvious is the AEL syntax itself. A BNF is
provided near the end of this document.
- The second syntax is the Expression Syntax, which is normally
handled by Asterisk extension engine, as expressions enclosed in
$[...]. The right hand side of assignments are wrapped in $[ ... ]
by AEL, and so are the if and while expressions, among others.
- The third syntax is the Variable Reference Syntax, the stuff
enclosed in ${..} curly braces. It's a bit more involved than just
putting a variable name in there. You can include one of dozens of
'functions', and their arguments, and there are even some string
manipulation notation in there.
- The last syntax that underlies AEL, and is not used
directly in AEL, is the Extension Language Syntax. The
extension language is what you see in extensions.conf, and AEL
compiles the higher level AEL language into extensions and
priorities, and passes them via function calls into
Asterisk. Embedded in this language is the Application/AGI
commands, of which one application call per step, or priority
can be made. You can think of this as a "macro assembler"
language, that AEL will compile into.
Any programmer of AEL should be familiar with its syntax, of course,
as well as the Expression syntax, and the Variable syntax.
lmadsen
2010-01-14