// // Example AEL config file // // // Static extension configuration file, used by // the pbx_ael module. This is where you configure all your // inbound and outbound calls in Asterisk. // // This configuration file is reloaded // - With the "ael reload" command in the CLI // - With the "reload" command (that reloads everything) in the CLI // The "Globals" category contains global variables that can be referenced // in the dialplan by using the GLOBAL dialplan function: // ${GLOBAL(VARIABLE)} // ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid // Unix/Linux environmental variables are reached with the ENV dialplan // function: ${ENV(VARIABLE)} // // NOTE! NOTE! NOTE! // Asterisk by default will load both extensions.conf and extensions.ael files. // Upon loading these files the dialplans generated from both with be merged, // so you must make sure that you don't have any overlapping contexts or global // variables. If you do, then unexpected behavior may result when the data is // merged. // NOTE! NOTE! NOTE! globals { CONSOLE-AEL="Console/dsp"; // Console interface for demo //CONSOLE-AEL=Zap/1; //CONSOLE-AEL=Phone/phone0; IAXINFO-AEL=guest; // IAXtel username/password //IAXINFO-AEL="myuser:mypass"; OUTBOUND-TRUNK="Zap/g2"; // Trunk interface // // Note the 'g2' in the OUTBOUND-TRUNK variable above. It specifies which group (defined // in chan_dahdi.conf) to dial, i.e. group 2, and how to choose a channel to use in // the specified group. The four possible options are: // // g: select the lowest-numbered non-busy DAHDI channel // (aka. ascending sequential hunt group). // G: select the highest-numbered non-busy DAHDI channel // (aka. descending sequential hunt group). // r: use a round-robin search, starting at the next highest channel than last // time (aka. ascending rotary hunt group). // R: use a round-robin search, starting at the next lowest channel than last // time (aka. descending rotary hunt group). // OUTBOUND-TRUNKMSD=1; // MSD digits to strip (usually 1 or 0) //OUTBOUND-TRUNK2=IAX2/user:pass@provider; }; // // Any category other than "General" and "Globals" represent // extension contexts, which are collections of extensions. // // Extension names may be numbers, letters, or combinations // thereof. If an extension name is prefixed by a '_' // character, it is interpreted as a pattern rather than a // literal. In patterns, some characters have special meanings: // // X - any digit from 0-9 // Z - any digit from 1-9 // N - any digit from 2-9 // [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9) // . - wildcard, matches anything remaining (e.g. _9011. matches // anything starting with 9011 excluding 9011 itself) // ! - wildcard, causes the matching process to complete as soon as // it can unambiguously determine that no other matches are possible // // For example the extension _NXXXXXX would match normal 7 digit dialings, // while _1NXXNXXXXXX would represent an area code plus phone number // preceded by a one. // // Each step of an extension is ordered by priority, which must // always start with 1 to be considered a valid extension. The priority // "next" or "n" means the previous priority plus one, regardless of whether // the previous priority was associated with the current extension or not. // The priority "same" or "s" means the same as the previously specified // priority, again regardless of whether the previous entry was for the // same extension. Priorities may be immediately followed by a plus sign // and another integer to add that amount (most useful with 's' or 'n'). // Priorities may then also have an alias, or label, in // parenthesis after their name which can be used in goto situations // // Contexts contain several lines, one for each step of each // extension, which can take one of two forms as listed below, // with the first form being preferred. One may include another // context in the current one as well, optionally with a // date and time. Included contexts are included in the order // they are listed. // //context name { // exten-name => { // application(arg1,arg2,...); // // Timing list for includes is // //