Примеры AEL в Asterisk

Конфигурация в синтаксисе AEL необходимо располагать в файлах с расширением .ael

К примеру extensions.conf будет располагаться в фале extensions.ael

Пример простейшего dial plan’a в обычном формате:

[internal]
exten => s,1,Answer                                                             
exten => s,n,Background(someivr)
exten => s,n,Read(intgroup,,3)
exten => s,n,Goto(${intgroup},1)
exten => XXX,1,Dial(SIP/${EXTEN})
exten => XXX,n,HangUp

А вот так этот же контекст будет выглядеть в синтаксисе ael:

context internal {
	s=> {
		Answer;
		Background(someivr);
		Read(intgroup,,3);
		Goto(${intgroup},1);
	}
	XXX => {
		Dial(SIP/${EXTEN});
		HangUp;
	}
}

Простейший ael код, который будет выводить в консоль астериска true или false:

if(${var}=foo){
	NoOp(true);
}else{
	NoOp(false);
}

В обычном виде это условие будет выглядеть так:

exten=>1,1,GotoIf($[${var}=foo]?label1:label2) 
exten=>1,n(label1),NoOp(true)
exten=>1,n,Goto(end_of_if)
exten=>1,n(label2),NoOp(false)
exten=>1,n(end_of_if),...

Пример меток в AEL

s=> {
	Answer;
	somelabel:
		HangUp;
}

switch с привычным синтаксисом:

_777X => { 
         switch (${EXTEN}) { 
              pattern N11: 
                   NoOp(You called a N11 number-- ${EXTEN}); 
                   break; 
              case 7771: 
                   NoOp(You called 7771!); 
                   break; 
              case 7772: 
                   NoOp(You called 7772!); 
                   break; 
              case 7773: 
                   NoOp(You called 7773!); 
                   // fall thru- 
              default: 
                   NoOp(In the default clause!); 
         };