| 
									
										
										
										
											2005-06-16 08:47:06 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // Example AEL config file | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // Static extension configuration file, used by | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // the pbx_ael module. This is where you configure all your | 
					
						
							|  |  |  | // inbound and outbound calls in Asterisk. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // This configuration file is reloaded | 
					
						
							| 
									
										
										
										
											2007-08-30 15:34:18 +00:00
										 |  |  | // - With the "ael reload" command in the CLI | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // - With the "reload" command (that reloads everything) in the CLI | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // The "Globals" category contains global variables that can be referenced | 
					
						
							| 
									
										
										
										
											2006-08-31 10:40:24 +00:00
										 |  |  | // in the dialplan by using the GLOBAL dialplan function: | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | //  ${GLOBAL(VARIABLE)} | 
					
						
							| 
									
										
										
										
											2006-08-31 10:40:24 +00:00
										 |  |  | // ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid | 
					
						
							|  |  |  | // Unix/Linux environmental variables are reached with the ENV dialplan | 
					
						
							|  |  |  | // function: ${ENV(VARIABLE)} | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | // 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! | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | globals { | 
					
						
							| 
									
										
										
										
											2010-03-16 18:48:22 +00:00
										 |  |  | 	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"; | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 	OUTBOUND-TRUNK="Zap/g2";		// Trunk interface | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 	// 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 | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// 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). | 
					
						
							|  |  |  | 	// | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 	OUTBOUND-TRUNKMSD=1;					// MSD digits to strip (usually 1 or 0) | 
					
						
							| 
									
										
										
										
											2010-03-16 18:48:22 +00:00
										 |  |  | 	//OUTBOUND-TRUNK2=IAX2/user:pass@provider; | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Any category other than "General" and "Globals" represent | 
					
						
							|  |  |  | // extension contexts, which are collections of extensions. | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // 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) | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | //   . - wildcard, matches anything remaining (e.g. _9011. matches | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | //	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 | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // For example the extension _NXXXXXX would match normal 7 digit dialings, | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // while _1NXXNXXXXXX would represent an area code plus phone number | 
					
						
							| 
									
										
										
										
											2006-09-11 16:41:49 +00:00
										 |  |  | // preceded by a one. | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // 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 | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // and another integer to add that amount (most useful with 's' or 'n'). | 
					
						
							|  |  |  | // Priorities may then also have an alias, or label, in | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // 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,...); | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // 	Timing list for includes is | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | //   <time range>|<days of week>|<days of month>|<months> | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | //	includes { | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | //		daytime|9:00-17:00|mon-fri|*|*; | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | //      }; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // 	ignorepat can be used to instruct drivers to not cancel dialtone upon | 
					
						
							|  |  |  | // 	receipt of a particular pattern.  The most commonly used example is | 
					
						
							|  |  |  | // 	of course '9' like this: | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //	ignorepat => 9; | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // 	so that dialtone remains even after dialing a 9. | 
					
						
							|  |  |  | //}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Sample entries for extensions.conf | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-dundi-e164-canonical { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// List canonical entries here | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	// 12564286000 => &ael-std-exten(6000,IAX2/foo); | 
					
						
							|  |  |  | 	// _125642860XX => Dial(IAX2/otherbox/${EXTEN:7}); | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-dundi-e164-customers { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// If you are an ITSP or Reseller, list your customers here. | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	//_12564286000 => Dial(SIP/customer1); | 
					
						
							|  |  |  | 	//_12564286001 => Dial(IAX2/customer2); | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-dundi-e164-via-pstn { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// If you are freely delivering calls to the PSTN, list them here | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	//_1256428XXXX => Dial(DAHDI/G2/${EXTEN:7}); // Expose all of 256-428 | 
					
						
							|  |  |  | 	//_1256325XXXX => Dial(DAHDI/G2/${EXTEN:7}); // Ditto for 256-325 | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-dundi-e164-local { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Context to put your dundi IAX2 or SIP user in for | 
					
						
							|  |  |  | 	// full access | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 	 ael-dundi-e164-canonical; | 
					
						
							|  |  |  | 	 ael-dundi-e164-customers; | 
					
						
							|  |  |  | 	 ael-dundi-e164-via-pstn; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-dundi-e164-switch { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Just a wrapper for the switch | 
					
						
							|  |  |  | 	// | 
					
						
							| 
									
										
										
										
											2009-05-28 14:32:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	switches { | 
					
						
							|  |  |  | 		DUNDi/e164; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-dundi-e164-lookup { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Locally to lookup, try looking for a local E.164 solution | 
					
						
							|  |  |  | 	// then try DUNDi if we don't have one. | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-dundi-e164-local; | 
					
						
							|  |  |  | 		ael-dundi-e164-switch; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	// | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // DUNDi can also be implemented as a Macro instead of using | 
					
						
							|  |  |  | // the Local channel driver. | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | macro ael-dundi-e164(exten) { | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // ARG1 is the extension to Dial | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	goto ${exten}|1; | 
					
						
							|  |  |  | 	return; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Here are the entries you need to participate in the IAXTEL | 
					
						
							|  |  |  | // call routing system.  Most IAXTEL numbers begin with 1-700, but | 
					
						
							|  |  |  | // there are exceptions.  For more information, and to sign | 
					
						
							|  |  |  | // up, please go to www.gnophone.com or www.iaxtel.com | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-iaxtel700 { | 
					
						
							| 
									
										
										
										
											2010-03-16 18:48:22 +00:00
										 |  |  | 	_91700XXXXXXX => Dial(IAX2/${IAXINFO-AEL}@iaxtel.com/${EXTEN:1}@iaxtel); | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2006-09-11 16:41:49 +00:00
										 |  |  | // The SWITCH statement permits a server to share the dialplan with | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // another server. Use with care: Reciprocal switch statements are not | 
					
						
							|  |  |  | // allowed (e.g. both A -> B and B -> A), and the switched server needs | 
					
						
							|  |  |  | // to be on-line or else dialing can be severly delayed. | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-iaxprovider { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	switches { | 
					
						
							|  |  |  | 	// IAX2/user:[key]@myserver/mycontext; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-trunkint { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// International long distance through trunk | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-dundi-e164-lookup; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	_9011. => { | 
					
						
							|  |  |  | 		&ael-dundi-e164(${EXTEN:4}); | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 		Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-trunkld { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Long distance context accessed through trunk | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-dundi-e164-lookup; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	_91NXXNXXXXXX => { | 
					
						
							|  |  |  | 		&ael-dundi-e164(${EXTEN:1}); | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 		Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-trunklocal { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Local seven-digit dialing accessed through trunk interface | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	_9NXXXXXX => { | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 		Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-trunktollfree { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Long distance context accessed through trunk interface | 
					
						
							|  |  |  | 	// | 
					
						
							| 
									
										
										
										
											2009-05-28 14:32:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-15 20:52:32 +00:00
										 |  |  | 	_91800NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							|  |  |  | 	_91888NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							|  |  |  | 	_91877NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							|  |  |  | 	_91866NXXXXXX => Dial(${OUTBOUND-TRUNK}/${EXTEN:${OUTBOUND-TRUNKMSD}}); | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-international { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Master context for international long distance | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	ignorepat => 9; | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-longdistance; | 
					
						
							|  |  |  | 		ael-trunkint; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-longdistance { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Master context for long distance | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	ignorepat => 9; | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-local; | 
					
						
							|  |  |  | 		ael-trunkld; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-local { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Master context for local, toll-free, and iaxtel calls only | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	ignorepat => 9; | 
					
						
							|  |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-default; | 
					
						
							|  |  |  | 		ael-trunklocal; | 
					
						
							|  |  |  | 		ael-iaxtel700; | 
					
						
							|  |  |  | 		ael-trunktollfree; | 
					
						
							|  |  |  | 		ael-iaxprovider; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // You can use an alternative switch type as well, to resolve | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // extensions that are not known here, for example with remote | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // IAX switching you transparently get access to the remote | 
					
						
							|  |  |  | // Asterisk PBX | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // switch => IAX2/user:password@bigserver/local | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // An "lswitch" is like a switch but is literal, in that | 
					
						
							|  |  |  | // variable substitution is not performed at load time | 
					
						
							|  |  |  | // but is passed to the switch directly (presumably to | 
					
						
							|  |  |  | // be substituted in the switch routine itself) | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // lswitch => Loopback/12${EXTEN}@othercontext | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // An "eswitch" is like a switch but the evaluation of | 
					
						
							|  |  |  | // variable substitution is performed at runtime before | 
					
						
							|  |  |  | // being passed to the switch routine. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // eswitch => IAX2/context@${CURSERVER} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-16 08:47:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | macro ael-std-exten-ael( ext , dev ) { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  |         Dial(${dev}/${ext},20); | 
					
						
							|  |  |  |         switch(${DIALSTATUS}) { | 
					
						
							|  |  |  |         case BUSY: | 
					
						
							|  |  |  |                 Voicemail(${ext},b); | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |         default: | 
					
						
							|  |  |  |                 Voicemail(${ext},u); | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |         catch a { | 
					
						
							|  |  |  |                 VoiceMailMain(${ext}); | 
					
						
							|  |  |  |                 return; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  | 	return; | 
					
						
							| 
									
										
										
										
											2005-06-16 08:47:06 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | context ael-demo { | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	s => { | 
					
						
							|  |  |  | 		Wait(1); | 
					
						
							|  |  |  | 		Answer(); | 
					
						
							|  |  |  | 		Set(TIMEOUT(digit)=5); | 
					
						
							|  |  |  | 		Set(TIMEOUT(response)=10); | 
					
						
							| 
									
										
										
										
											2005-06-16 08:47:06 +00:00
										 |  |  | restart: | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 		Background(demo-congrats); | 
					
						
							| 
									
										
										
										
											2005-06-16 08:47:06 +00:00
										 |  |  | instructions: | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 		for (x=0; ${x} < 3; x=${x} + 1) { | 
					
						
							|  |  |  | 			Background(demo-instruct); | 
					
						
							|  |  |  | 			WaitExten(); | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	2 => { | 
					
						
							|  |  |  | 		Background(demo-moreinfo); | 
					
						
							|  |  |  | 		goto s|instructions; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	3 => { | 
					
						
							|  |  |  | 		Set(LANGUAGE()=fr); | 
					
						
							|  |  |  | 		goto s|restart; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	1000 => { | 
					
						
							|  |  |  | 		goto ael-default|s|1; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	500 => { | 
					
						
							|  |  |  | 		Playback(demo-abouttotry); | 
					
						
							|  |  |  | 		Dial(IAX2/guest@misery.digium.com/s@default); | 
					
						
							|  |  |  | 		Playback(demo-nogo); | 
					
						
							|  |  |  | 		goto s|instructions; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	600 => { | 
					
						
							|  |  |  | 		Playback(demo-echotest); | 
					
						
							|  |  |  | 		Echo(); | 
					
						
							|  |  |  | 		Playback(demo-echodone); | 
					
						
							|  |  |  | 		goto s|instructions; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	_1234 => &ael-std-exten-ael(${EXTEN}, "IAX2"); | 
					
						
							|  |  |  | 	8500 => { | 
					
						
							|  |  |  | 		VoicemailMain(); | 
					
						
							|  |  |  | 		goto s|instructions; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	# => { | 
					
						
							|  |  |  | 		Playback(demo-thanks); | 
					
						
							|  |  |  | 		Hangup(); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	t => goto #|1; | 
					
						
							|  |  |  | 	i => Playback(invalid); | 
					
						
							| 
									
										
										
										
											2005-06-16 08:47:06 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-07 15:35:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // If you wish to use AEL for your default context, remove it | 
					
						
							|  |  |  | // from extensions.conf (or change its name or comment it out) | 
					
						
							|  |  |  | // and then uncomment the one here. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | context ael-default { | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // By default we include the demo.  In a production system, you | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // probably don't want to have the demo there. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | 	includes { | 
					
						
							|  |  |  | 		ael-demo; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							|  |  |  | // Extensions like the two below can be used for FWD, Nikotel, sipgate etc. | 
					
						
							|  |  |  | // Note that you must have a [sipprovider] section in sip.conf whereas | 
					
						
							|  |  |  | // the otherprovider.net example does not require such a peer definition | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //_41X. => Dial(SIP/${EXTEN:2}@sipprovider,,r); | 
					
						
							|  |  |  | //_42X. => Dial(SIP/user:passwd@${EXTEN:2}@otherprovider.net,30,rT); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Real extensions would go here. Generally you want real extensions to be | 
					
						
							|  |  |  | // 4 or 5 digits long (although there is no such requirement) and start with a | 
					
						
							|  |  |  | // single digit that is fairly large (like 6 or 7) so that you have plenty of | 
					
						
							|  |  |  | // room to overlap extensions and menu options without conflict.  You can alias | 
					
						
							|  |  |  | // them with names, too, and use global variables | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 6245  => { | 
					
						
							|  |  |  | //		hint(SIP/Grandstream1&SIP/Xlite1,Joe Schmoe); // Channel hints for presence | 
					
						
							|  |  |  | // 		Dial(SIP/Grandstream1,20,rt);                 // permit transfer | 
					
						
							|  |  |  | //        Dial(${HINT}/5245},20,rtT);                    // Use hint as listed | 
					
						
							|  |  |  | //        switch(${DIALSTATUS}) { | 
					
						
							|  |  |  | //        case BUSY: | 
					
						
							| 
									
										
										
										
											2007-09-04 14:28:13 +00:00
										 |  |  | //                Voicemail(6245,b); | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | //				return; | 
					
						
							|  |  |  | //        default: | 
					
						
							| 
									
										
										
										
											2007-09-04 14:28:13 +00:00
										 |  |  | //                Voicemail(6245,u); | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | //				return; | 
					
						
							|  |  |  | //        }; | 
					
						
							|  |  |  | //       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 6361 => Dial(IAX2/JaneDoe,,rm);                // ring without time limit | 
					
						
							|  |  |  | // 6389 => Dial(MGCP/aaln/1@192.168.0.14); | 
					
						
							|  |  |  | // 6394 => Dial(Local/6275/n);                    // this will dial ${MARK} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-12 17:27:55 +00:00
										 |  |  | // 6275 => &ael-stdexten(6275,${MARK});           // assuming ${MARK} is something like DAHDI/2 | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // mark => goto 6275|1;                          // alias mark to 6275 | 
					
						
							|  |  |  | // 6536 => &ael-stdexten(6236,${WIL});            // Ditto for wil | 
					
						
							|  |  |  | // wil  => goto 6236|1; | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Some other handy things are an extension for checking voicemail via | 
					
						
							|  |  |  | // voicemailmain | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // 8500 => { | 
					
						
							|  |  |  | //			VoicemailMain(); | 
					
						
							|  |  |  | //			Hangup(); | 
					
						
							|  |  |  | //	       }; | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Or a conference room (you'll need to edit meetme.conf to enable this room) | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // 8600 => Meetme(1234); | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Or playing an announcement to the called party, as soon it answers | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // 8700 => Dial(${MARK},30,A(/path/to/my/announcemsg)) | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // For more information on applications, just type "show applications" at your | 
					
						
							|  |  |  | // friendly Asterisk CLI prompt. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // 'show application <command>' will show details of how you | 
					
						
							| 
									
										
										
										
											2009-05-28 14:39:21 +00:00
										 |  |  | // use that particular application in this file, the dial plan. | 
					
						
							| 
									
										
										
										
											2006-04-24 17:41:27 +00:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2006-09-27 02:46:50 +00:00
										 |  |  | } |