Configurações extensions.ael (AEL)

Categories: AEL, Asterisk
Tags:
Comments: No Comments
Published on: 7 de junho de 2015

A alternativa para extensions.conf é o extensions.ael. O extensions.ael é o extensions.conf escrito em uma linguagem de script chamada Asterisk Extension Language (AEL). AEL é a linguagem mantida pela Digium exclusivamente para escrever planos de marcação (Dialplan) no Asterisk (Asterisk é um framework open source para construção de aplicações voltadas para comunicação.).

Embora seja funcionalmente equivalente a extensions.conf, AEL é sintaticamente muito mais poderoso e permite uma maior flexibilidade na criação de scripts simples e poderoso em operações lógicas. Se você estiver familiarizado com o Script Shell em C ou C++ ou qualquer outra linguagem de programação, muitas vezes pode ser mais fácil de pegar a sintaxe do extensions.ael do que a sintaxe regular do extensions.conf. Você ainda pode usar o extensions.ael para substituir o extensions.conf ou pode unir a força do dois. Ganhando muito mais poder no seu plano de marcação (Dialplan).

O extensions.ael geralmente não está em uso nas instalações de hoje. No entanto, devido à sua maior funcionalidade, não seria surpreendente ver extensions.conf depreciado em futuras versões do Asterisk em favor do poder e versatilidade do extensions.ael.

Usando AEL você pode reescrever seu extensions.conf todo em extensions.ael. Vamos dar um exemplo simples. O exemplo abaixo é uma recepção da PSTN com desvio de fluxo para um grupo de extensões telefônicas (ramais).

Neste contexto o nosso plano de marcação (Dialplan) atende chamada, começa a reproduzir o arquivo de som “Obrigado-Por-Ligar-Para-A-FAL!” depois ele toca o arquivo de som “Por-favor-digite-a-extensao-desejada“ é aguarda que o originador da chamada digite o MCDU referente a nossa central PBX IP. Ao digitar qualquer MCDU de 8000 a 8099 ele vai imediatamente enviar a chamada para o canal sip referente ao MCDU. Observe que, apesar de ser um pouco misturado, ainda existem contextos, extensões e variáveis. Neste caso, no entanto, a forma regular de desenvolvimento que estamos familiarizados “exten => padrão, prioridade, aplicativo”, bem como os argumentos é completamente desmantelada.

Em extensions.ael, a “exten =>” é removida, juntamente com qualquer uso de prioridades. Em extensions.ael segue mais o padrão de execução de linha por linha tal como é utilizado no extensions.conf quando aplicado as prioridades do tipo “n”.

Você faz ideia do quando isto simplifica as coisas? Não! Então vamos explicar… Você não precisa mais se preocupar em fazer com que cada extensão (exten) tenha uma prioridade (seja numeral ou do tipo “n”), além disto o AEL fornece uma de flexibilidade na ordem de execução do Goto() e de declarações. Vamos ver o que acontece quando nós reescrevemos o código anterior:

Observe que nós podemos especificar o passo exato para saltar para no contexto “s”, temos somente que criar uma etiqueta (label) no contexto que queremos informa no Goto() e realizamos o encaminhamento para a etiqueta (label).

O reinício: a etiqueta no contexto “s” é onde o “t” e “i” (extensões especiais) irão saltar quando elas forem executadas. Ou seja, se o originador da chamada não digitar nada vai para “t” se digitar um MCDU que não faz parte de nosso plano de numeração interna do PBX IP vai para “i”. Em ambas situações após executar os respectivos arquivos de áudios com a aplicação Playback() serão encaminhado para o contexto “s” etiqueta (label) “reload”. Perceba que a etiqueta (label) é nomeado em AEL com “:” dois pontos no final ao invés de “;” ponto e vírgula.

Macros também funcionam muito similar ao funcionamento em extensions.conf. Elas são configuradas igual aos contextos, mas pode ter variáveis adicionais que podem ser passadas para elas.

Em AEL, variáveis passadas para a macro não são referidas como ${ARG1} ou através de ${ARGX}. Em AEL é possível atribuir-lhes nomes de variáveis locais, o que reduz o fator de confusão quando se tenta lembrar quais os valores foram atribuídos a uma determinada variável.

Outra diferença em AEL é que o comando Macro() não é usado ao chamar uma macro. Em vez disso, o nome da macro tem um “&” comercial adicionado na frente dela. Vamos adicionar a macro “std-exten” ao nosso exemplo AEL para ver como ele se encaixa.

AEL é uma linguagem muito poderosa que permite a um plano de marcação muito mais limpo. O AEL ainda está sob um pesado desenvolvimento, e pode mudar em futuras revisões do Asterisk, por isso não é considerado pelos especialistas como completamente pronto para a produção. No entanto, é uma é uma boa ideia começar a aprender a lógica de desenvolvimento do AEL. Mesmo porque o Asterisk pode se mover em direção ao AEL no futuro.

Fonte: Baseado em exemplos do livro “Asterisk Hacking

No Comments - Leave a comment

Leave a comment

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Please copy the string 0Xbddt to the field below:


Welcome , today is domingo, 26 de março de 2017