Importing rev 7939 from 1.2
[asterisk/asterisk.git] / doc / README.ael
old mode 100755 (executable)
new mode 100644 (file)
index ec2d798..e2014a4
@@ -5,6 +5,25 @@ Over time, people have been pushing to add features to extensions.conf to make
 it more like a programming language.  AEL is intended to provide an actual
 programming language that can be used to write an Asterisk dialplan.
 
+Getting Started
+-------------------------
+The AEL parser (pbx_ael.so) is completely separate from the module
+that parses extensions.conf (pbx_config.so).  To use AEL, the only thing that
+has to be done is the module pbx_ael.so must be loaded by Asterisk.  This will
+be done automatically if using 'autoload=yes' in /etc/asterisk/modules.conf.
+When the module is loaded, it will look for 'extensions.ael' in /etc/asterisk/.
+Both extensions.conf and extensions.ael can be used in conjunction with each 
+other if that is what is desired.  Some users may want to keep extensions.conf
+for the features that are configured in the 'general' section of 
+extensions.conf.
+
+
+Reloading extensions.ael
+-------------------------
+To reload extensions.ael, the following command can be issued at the CLI.
+
+       *CLI> reload pbx_ael.so
+
 
 Contexts
 -------------------------
@@ -177,7 +196,7 @@ specified with the name of the macro.  They are then reffered to by that same
 name.  A catch block can be specified to catch special extensions.
 
 macro std-exten( ext , dev ) {
-        Dial(${ext}/${dev},20);
+        Dial(${dev}/${ext},20);
         switch(${DIALSTATUS) {
         case BUSY:
                 Voicemail(b${ext});
@@ -194,7 +213,7 @@ macro std-exten( ext , dev ) {
 A macro is then called by preceeding the macro name with an ampersand.
 
 context example {
-       _5XXX => &std-exten(${EXTEN});
+       _5XXX => &std-exten(${EXTEN}, "IAX2");
 };
 
 
@@ -217,30 +236,38 @@ instructions:
        };
        2 => {
                Background(demo-moreinfo);
-               goto instructions;
+               goto s|instructions;
        };
        3 => {
                LANGUAGE()=fr;
-               goto restart;
+               goto s|restart;
        };
        500 => {
                Playback(demo-abouttotry);
-               exten => 500,n,Dial(IAX2/guest@misery.digium.com)
+               Dial(IAX2/guest@misery.digium.com);
                Playback(demo-nogo);
-               goto instructions;
+               goto s|instructions;
        };
        600 => {
                Playback(demo-echotest);
                Echo();
                Playback(demo-echodone);
-               goto instructions;
+               goto s|instructions;
        };
        # => {
 hangup:
                Playback(demo-thanks);
                Hangup();
        };
-       t => goto hangup;
+       t => goto #|hangup;
        i => Playback(invalid);
 };
 
+
+Syntax Note
+------------------------
+Please note that all opening {'s are on the same line as the keyword.  For
+the time being, that syntax is mandatory.  We are looking at ways to allow
+other syntax in the future for flexibility, but for now, that is the way
+you must write AEL clauses.
+