[AsteriskBrasil] Boas praticas

brunoantognolli em email.com brunoantognolli em email.com
Quinta Maio 20 10:30:23 BRT 2010


Resposta legal Rodrigo.

Eu também procuro abstrair uma coisa que uso mais de 1x em um contexto diferente assim como você citou. Para complementar essa idéia eu acho que facilita bastante criar todas as macros (ou contextos) utilizadas mais de uma vez em um .conf separado, eu tenho uma regra para validar o número do usuário (se o usuário é valido ou não), então criei um arquivo chamado UraFuncoes.conf e sempre que vou validar usuários utilizo o contexto "validar" do meu UraFuncoes.conf.


Também procuro sempre manter uma regra para nomenclatura do Asterisk (isso varia para cada pessoa).

Por exemplo:

Nome dos contextos sempre a primeira letra da palavra é maíscula
[TesteInicial]

Nome de extensoes todas as letras minusculas
001,n(testeinicial)

Para arquivos de som, utilizo a primeira letra da primeira palavra minuscula e o resto maisculo
001,n,Playback(testeInicial)
001,n,BackGround(testeInicial)




Quando eu vou fazer um Goto, por exemplo, facilita bastante a minha vida por conta da nomenclatura.
extex => 001,1,Goto(TesteInicial|001|testeinicial)

Quando vou utilizar arquivos de som, também facilita bastante por começar por 1 letra miniscula outra maiscula.


Enfim, vamos tentar "juntar" várias dicas para organização de um código asterisk para tentar fazer um guia de referência, ai podemos postar em algum site, blog, etc...


[]s,
Bruno

-----Original Message-----
From: Rodrigo Lang <rodrigoferreiralang em gmail.com>
To: asteriskbrasil em listas.asteriskbrasil.org
Sent: Thu, May 20, 2010 10:07 am
Subject: Re: [AsteriskBrasil] Boas praticas


Bom dia Bruno!

Seguinte, algo que acredito que é uma boa prática (tanto por organização quanto por segurança) sempre separar tudo em contextos diferentes. Por exemplo, eu sempre crio contextos separados para saída de celular local ([7-9]XXXXXXX), para saída de fixo local ([1-6]XXXXXXX), interurbano e por aí vai. Se você utiliza AEL2, tem bastante coisa para melhorar o código e a segurança também. Uma coisa que eu gosto de fazer também é criar uma pasta chamada "/etc/asterisk/extensions/" e dentro dela criar os arquivos extensions (.conf ou .ael). Eu acredito que fica mais organizado. Normalmente eu crio um arquivo separado para ramais internos, outro para rotas entrantes, para rotas saintes, para facilidades, para macros, etc...

Eu também crio "tabelas de restrições" (uso esse nome porque é como é chamado nos PBX's) para os ramais somente com o que eles precisam. Por exemplo:

[restrito] ;Realiza ligações locais somente
include => ramais
include => localFixo
include => localMovel
...
...

E por aí vai! Eu nunca aponto um ramal direto para o contexto com o Dial(). Além de, na minha opinião, ficar bem mais organizado.

Outro detalhe também é evitar repetir o código, eu crio macros e contexto separados para cada coisinha, cada detalhe. Por exemplo, eu tenho como para usar o MixMonitor() antes que qualquer Dial() entrante ou sainte. Eu criei uma macro só com o MixMonitor() e um return; (eu utilizo AEL). Daí você me pergunta: "Você é idiota?". Não, só que eu chamo essa macro pelo umas 30 vezes no meu plano de numeração. Se um dia eu precisar mudar o nome do arquivo, caminho, etc... É só mudar na macro que afeta tudo. A mesma coisa com a extension "h", eu sempre chamo uma macro só com o Hangup() e um return;. Um bom exemplo é que esses dias precisei implementar uma facilidade em um Asterisk onde seria preciso na extension "h" checar uma informação. Eu já tinha meio caminho andado por todos os contextos chamarem a mesma macro na extension "h". Ao meu ver, facilita bastante as coisas.

Como citei sobre AEL2, ele possui o abstract por exemplo (nunca vi para o .conf). Tornar um contexto em abstract, impede a utilização do Goto() para esse contexto, só pode ser usado pelo "include". Eu gosto de AEL por ser bem mais prático, organizado e rápido de fazer. Sem contar com o aelparse que facilita bastante.

Acredito esses detalhes sejam boas práticas. Eu nunca vi um documento do genero, mas no voip-info [1] tem um artigo sobre AEL2 que mostra sobre boas práticas [2] em AEL.

Uma dica para quem quer conhecer AEL. Faça um backup dos seus confs e execute o comando "conf2ael" e veja seu novo extensions no arquivo "aelout.ael". Fica a dica (Vale a pena!). :D

[1] http://www.voip-info.org/wiki/view/Asterisk+AEL2
[2] http://www.voip-info.org/wiki/view/AEL+Example+Snippets


Ats,
Rodrigo Lang


-- 
Rodrigo Recipes!
Last post: DUNDi! pt.2
Tenha Netiqueta!


_______________________________________________
HOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. 
 Hardware com alta disponibilidade de recursos e qualidade KHOMP
 Suporte técnico local qualificado e gratuito 
onheça a linha completa de produtos KHOMP em www.khomp.com.br
______________________________________________
articipe do I Encontro VoIPCenter, 08 a 10 de junho – Rio de Janeiro.
rea de exposição, palestras e cursos de VoIP, Asterisk e Convergência de Redes.
ttp://www.encontrovoipcenter.com.br
_____________________________________________
ista de discussões AsteriskBrasil.org
steriskBrasil em listas.asteriskbrasil.org
ttp://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20100520/a1c9d713/attachment.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil