Asterisk: Entendendo o arquivo extensions.conf

Este artigo explica a sintaxe das variáveis do arquivo de configuração do Asterisk extensions.conf, considerado o mais fundamental, aonde são configuradas rotas e regras de discagens.

[ Hits: 113.338 ]

Por: M01$3$ em 29/07/2008


Exemplos



exten => 0XXXXXXXX,n,Dial(${GVT}${EXTEN:1})

A variável exten recebe novamente os mesmos números, esta é a logica do Asterisk, este contexto funcionará se um ramal associado a ele discar de 0 e 8 dígitos, então ele executará. No segundo passo é apresentado o n, que significa próximo, em versões anteriores a 1.4 era necessário digitar em cada linha as prioridades 1,2,3,4 e assim sucessivamente. Agora você diz aonde vai iniciar e o resto ele faz automático, muito útil, no caso de adicionar ou remover alguma linha, basta adicionar e pronto, o n e automático, antes teria que checar todas as prioridades.

Variável Dial, que significa discar, mas discar o que? Isto, (${GVT}${EXTEN:1}), esta variável ${GVT} é uma variável definida pelo programador do Asterisk na sessão global, estaria assim GVT=zap/r2 por exemplo, o canal que executa ligações para gvt discará por este canal, a variável EXTEN, cujo é 0XXXXXXXX, os :1(EXTEN:1), é para formatar como o número sairá pelo canal, a rede de telefonia pública, tratando de uma ligação local, é necessário que saia somente o número "limpo", sem o zero, então o :1 elimina o primeiro dígito, você pode utilizar :2, :4, o que for necessário, depende de sua regra.

Exemplo de contexto para DDD

Vamos passar para mais algumas funções e exemplos de regras:

[DDD]
exten => _00XX[2-6]XXXXXXX,1,Noop(==> DDD telefone fixo)
exten => _00XX[2-6]XXXXXXX,n,ChansAvail(${GVT})
exten => _00XX[2-6]XXXXXXX,n,GotoIf($["${AVAILSTATUS}" = "34" ] ?2)
exten => _00XX[2-6]XXXXXXX,n,Dial(${GVT}0${OP-GVT}${EXTEN:2}||Tt)
exten => _00XX[2-6]XXXXXXX,n,Hangup

exten => _00XX[2-6]XXXXXXX,102,Noop(==> Transbordo)
exten => _00XX[2-6]XXXXXXX,n,ChansAvail(${GVT})
exten => _00XX[2-6]XXXXXXX,n,Dial(${TRANSIT}0${OP-TRANSIT}${EXTEN:2}||Tt)
exten => _00XX[2-6]XXXXXXX,n,Hangup

Vamos a explicação:

[DDD] = nome do contexto, para ligações DDD

exten => _00XX[2-6]XXXXXXX,1,Noop(==> DDD telefone fixo), quando for discado 00+ DDD + dígito de 2 a 6, dígitos que abrangem números de telefonia fixa, contexto não ligará para celulares, mais sete dígitos, pois já foi escolhido um de 2 a 6, a primeira prioridade, aparecerá a mensagem.

exten => _00XX[2-6]XXXXXXX,n,ChansAvail(${GVT}) = Avaliará o canal que está sendo ligado pela GVT.

exten => _00XX[2-6]XXXXXXX,n,GotoIf($["${AVAILSTATUS}" = "34" ] ?102) = função GotoIf, muito utilizada para transbordo, faz o seguinte, verifica se a variável availstatus, que é bem parecida com o próprio nome, possui a função de avaliar o canal, se possuir o código 34, este código é um código ISUP, código padrão mundial de telefonia, podem pesquisar na web pelo mesmo. O código 34 significa todos canais ocupados, então ele não poderá ligar pela gvt se tais tiverem ocupados, assim ele executara a prioridade 102, que será mostrada adiante, aonde começará o transbordo, se não for 34, por ter canal disponível para discar, então passará ao próximo passo.

exten => _00XX[2-6]XXXXXXX,n,Dial(${GVT}0${OP-GVT}${EXTEN:2}||Tt) = efetua a ligação usando o canal GVT, aqui está a diferença por ser um DDD, cujo de um telefone convencional deveríamos discar, 0(código da operadora) + (DDD) + (número), este 0 após op-gvt ficará nesta posição 00 0 (aqui) XX, necessário, pois se discando 0 e mais número liga local, então discando 00 +número liga DDD, o exten:2 corta os dois primeiros números, portando a ligação sairá 0 ${OP-GVT}, definida na seção globals, variável recebe o número da operadora gvt+ XX, DDD de algum lugar do pais, e o número.

exten => _00XX[2-6]XXXXXXX,n,Hangup= hangup encerra a ligação(desliga).

Funções com transbordo:

exten => _00XX[2-6]XXXXXXX,102,Noop(==> Transbordo)
exten => _00XX[2-6]XXXXXXX,n,ChansAvail(${EMBRATEL})
exten => _00XX[2-6]XXXXXXX,n,Dial(${EMBRATEL}0${OP-EMBRATEL}${EXTEN:2}||Tt)
exten => _00XX[2-6]XXXXXXX,n,Hangup

Note que após o número que a variável exten recebe temos 102, o número que estava no GotoIf, se estiver ocupado, faz isto a prioridade 102, após cair nela executará o passo abaixo com os números N, no exemplo discaria pela Embratel, se a gvt estivesse ocupada, quem cria a regra deve associar a custos e tarifas, ver qual é mais em conta.

Este foi meu primeiro artigo, não sou muito bom escrevendo, pretendo aprimorar mais isto, espero que gostem. Em breve posto mais algum material sobre Asterisk, só havia visto artigos aqui no VOL ensinando a criar ramais, instalação do Asterisk, mas nada explicando estas variáveis, passando uma visão melhor do extensions.conf.

Fica aí o artigo e um obrigado ao VOL, por onde venho apreendendo muito sobre Linux.

Página anterior    

Páginas do artigo
   1. Introdução
   2. O cli do Asterisk
   3. Exemplos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando Cacti + plugins no Ubuntu 10.10

Outro método (rápido/fácil) de instalação e configuração do gdesklets no Slackware 10

Como contribuir com a atualização de pacotes no Void Linux

DVDAuthor: Como autorar DVDs no Linux

Yenka - Mais que um simulador de circuitos eletrônicos

  
Comentários
[1] Comentário enviado por kalib em 29/07/2008 - 09:32h

Bom trabalho amigo. ;]
O asterisk é uma ferramenta primordial no dia-a-dia da empresa onde trabalho..bem como de muitas empresas no mundo. O respeito que o asterisk ganhou mundialmente é incrível para assumir a responsabilidade de manter uma infra-estrutura de voip funcionando. As possibilidades são incríveis.

Abraços

[2] Comentário enviado por moisesmad em 29/07/2008 - 11:34h

Obrigado kalib, realmente é muito interessante o asterisk, e as inúmeras possibilidades que o mesmo proporciona.

[3] Comentário enviado por grandmaster em 29/07/2008 - 11:49h

Realmente é uma bela ferramenta.

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br


[4] Comentário enviado por pirilon em 29/07/2008 - 15:35h

vai trabalhar cara...
hauhahhahha
fico bala o artigo meu... e saber que não sabia nada de asterisk ne??

falo e boa sorte

[5] Comentário enviado por fabiomattes2011 em 17/10/2008 - 09:32h

Bookmarked!!!...

[6] Comentário enviado por duraes em 03/06/2009 - 14:31h

Trabalho com Asterisk a mais de 2 anos. Seu artigo está escrito melhor do que muito livro que circula por aí...
Parabéns.

At,

Davi Durães

[7] Comentário enviado por lucius monsieur em 26/07/2010 - 10:03h

Utilizamos o Asterisk na empresa onde trabalho já faz algum tempo. Sempre desempenhou seu papel sem problemas. Excelente aplicativo. Este artigo está muito bem escrito. Parabéns.

[8] Comentário enviado por claiton.zanette em 29/03/2011 - 10:39h

muito bom artigo!! falo!

[9] Comentário enviado por allanyeah em 06/05/2015 - 09:37h

Seu artigo esta muito bom amigo. Porém tem um erro:
EXTENSION RELOAD = após executar alguma modificação no arquivo extensions.conf, para que as mesmas entre em vigor é necessário digitar isto no cli do Asterisk para recarregar o arquivo.

Correto:

DIALPLAN RELOAD

[10] Comentário enviado por marciimm em 19/06/2017 - 09:09h

muito instrutivo para mim , estou aprendendo sobre o asterisk e suas funcionalidades. ajudou muito


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts