Escolar Documentos
Profissional Documentos
Cultura Documentos
CAPA
or que algum se daria ao trabalho de programar seu prprio sistema telefnico, quando j existem dezenas de opes venda no mercado? A resposta: porque no possvel conseguir tudo nas opes do mercado. As opes disponveis costumam ser caras demais para pequenas empresas. Contudo, no Asterisk [1] qualquer um pode implementar os recursos presentes naquela soluo de R$ 100 mil, e ainda ajust-los precisamente s suas prprias necessidades. Somado a aparelhos telefnicos VoIP, o PBX Asterisk no apenas economiza nas chamadas, mas tambm dispensa uma segunda rede de cabos telefnicos.
leia-se: VPNs. Alm disso, surgem questes como espionagem via VoIP e o temido spam telefnico (spit). E os nmeros atuais, s mostram o vertical crescimento da tecnologia. Na Europa Central, h trs cenrios comuns para o uso do Asterisk: A sterisk como sistema de telefonia ISDN: substituindo o antigo sistema telefnico por um novo esquema de telefonia atravs do computador por meio de placas ISDN e, internamente, por telefones VoIP (figura 1). A sterisk como sistema de VoIP puro: todas as chamadas so via VoIP, tanto internas quanto externas, e no h mais ISDN. A exigncia, no entanto, uma conexo ininterrupta Internet (figura 2). Asterisk como proxy: usando o Asterisk como proxy ou gateway entre seu sistema tradicional e o novo sistema ISDN (figura3). Ele roteia chamadas VoIP via Asterisk para outros locais de forma transparente. H discusses a respeito de custos e de criptografia via Internet. Esta variante tambm interessante para a migrao gradual para o Asterisk, pois permite que cada departamento da empresa migre para o VoIP em um momento
diferente, respeitando as particularidades de cada um. O Asterisk para o VoIP o que o Apache representa para os webmasters: o fim dos dias em que o PBX era uma caixa-preta impenetrvel. Qualquer programador pode pr em prtica seus conhecimentos e ajudar o sistema a avanar segundo suas prprias opinies. Ainda por cima, o Asterisk combina telefonia ISDN, analgica e VoIP. A nica desvantagem: ganhar familiaridade com o Asterisk no fcil. Esta srie de artigos se destina justamente a tentar explicar os principais recursos, passo a passo, e expor as vantagens e desvantagens desse software.
Ol mundo, al Asterisk
O tipo de telefonia (analgica, ISDN, VoIP) no importa: o artigo comea mostrando como criar uma instalao 100% VoIP. Numa modificao do clssico Hello world da programao, voc instalar um sistema Asterisk e, primeiramente, apenas um, depois dois telefones VoIP SIP (Session Initiation Protocol). Quando um dos telefones chamar o nmero 1234, o Asterisk se encarregar de reproduzir um som que diz Hello world.
www.linuxmagazine.com.br
Instalao
Como acontece com frequncia no mundo do Cdigo Aberto, possvel instalar o Asterisk em qualquer sistema Linux. A maioria das principais distribuies j oferece at pacotes do Asterisk, o que, inclusive, representa um problema: a criadora do Asterisk, Digium (quadro 1), lanou uma mdia de uma atualizao por ms, impossibilitando que as distribuies normais mantivessem seus pacotes atualizados. Por isso, vamos compilar o Asterisk a partir do cdigo-fonte. Este tutorial feito em Debian 4.0, mas usurios de Linux experientes no tero dificuldades para transferir as instrues para qualquer distribuio moderna. Ento, l vamos ns: procure um hardware confivel para o Asterisk, que no tem grandes necessidades de CPU, contanto que ele s trabalhe com um codec. A conexo Internet e rede local deve ter pelo menos baixa latncia. Quanto ao sistema operacional, uma instalao mnima do Debian 4.0 suficiente e at recomendvel. Todos os comandos a seguir requerem privilgios de root. O comando a seguir garante que o sistema instalar todas as atualizaes e, ao reiniciar, ter todos os pacotes mais recentes.
apt-get update && apt-get -y upgrade && shutdown -r now
Asterisk
PSTN
Como o nome varia conforme a verso mais recente do software, lembre-se do diretrio mostrado que
neste artigo, asterisk-1.4.10.1. Em seguida, entre no diretrio com cd. O Asterisk 1.4 a primeira verso que usa o configure para preparar a compilao, atravs dos comandos ./configure && make && make install. Voc ir instalar uma verso mnima do Asterisk, adequada para o incio deste tutorial. Depois, vamos com-
Para instalar o Asterisk, primeiro preciso instalar alguns pacotes atravs dos comandos:
apt-get -y install build-essential libncurses5-dev
Asterisk
Internet
talvez sejam necessrios no futuro vo buscar seus fontes justamente neste diretrio. Para baixar e descompactam o cdigo-fonte do Asterisk (quadro 2), execute os comandos a seguir.
37
Tradicional
PABX
Asterisk
PSTN
pilar outros mdulos. Para ter uma instalao bsica funcional, digite ainda make samples para colocar no diretrio /etc/asterisk/ alguns arquivos bsicos de configurao. Em futuras atualizaes do Asterisk, voc pode repetir todos os passos anteriores, mas deixe de fora o make samples.
Arquivos de configurao
ainda: os diferentes arquivos no tm uma gramtica unificada, e por vezes cada um aceita um conjunto diferente de grafias para as palavras chave. Em ltimo caso, experimente cada uma das grafias. O parser do Asterisk no funciona da forma normal, com anlise lxica e posteriormente sinttica para gerar os tokens. Por esse motivo, o OpenPBX [2], um projeto derivado do Asterisk, adotou um formato nico (.plist) para seus arquivos de configurao. Os dois primeiros arquivos mais importantes a editar so o sip.conf (configurao SIP para todos os dispositivos) e o extensions.conf (o plano de discagem). Em ambos h tantos exemplos que qualquer iniciante se perde no meio de tantas informaes. Portanto, apague ambos com:
rm -f /etc/asterisk/sip.conf && rm -f /etc/asterisk/extensions.*
Ao verificar o diretrio /etc/asterisk, nota-se mais de 60 arquivos de configurao, de adsi.conf a zapata. conf. Mas no se aflija: at profissionais Asterisk s costumam trabalhar com alguns poucos arquivos. Pior
O segundo comando apaga, alm do extensions.conf, o arquivo extensions.ael, que traz os planos de discagem no novo formato.
Enfim, chegou uma empresa americana com um software de Cdigo Aberto para revolucionar o velho mundo. A empresa se chama Digium, e o software o Asterisk. Mark Spencer o criou h alguns anos por necessidade pessoal ele no tinha o dinheiro necessrio para comprar um novo sistema telefnico uma pena, mas assim surgiu o Dois minutos em milhares de ligaes por ms. Isso econo- Asterisk. Inicialmente, ele programou em C o plano de dismiza custos considerveis. O mesmo se aplica a sistemas cagem para conectar os telefones analgicos. de resposta automtica como os dos trens. Hoje, os telefones no apenas falam, mas misturam a isso requintes de Spencer no imaginava que o Asterisk seria to adotaconforto, como o reconhecimento de voz. E mais e mais do. No entanto, conheceu gradativamente outros ususistemas assim se tornam parte das infraestruturas de TI. rios e fabricantes de placas analgicas, e ento nomeou sua criao de Asterisk, o que deu Digium sua reputao atual. Hoje, 120 pessoas ganham a vida na Digium Reaes exotrmicas Algumas empresas unem seus departamentos de telefonia em Huntsville, Alabama, chamada de forma humorosa de e TI. No entanto, isso leva, com frequncia, a atritos, pois Silicotton Valley.
38
www.linuxmagazine.com.br
Seo general
Para registrar um telefone SIP no Asterisk, preciso adicion-lo ao arquivo /etc/asterisk/sip.conf. No caso mais simples, isso se assemelha ao exibido na listagem 1. O arquivo sip.conf dividido em sees, cujos nomes aparecem entre colchetes. No comeo da listagem, na linha 2, a porta SIP definida com seu valor padro, 5060. Onde: bindaddr = 0.0.0.0 significa que o Asterisk escutar em todos os endereos IP da mquina. Quem desejar algo diferente deve especificar nesse campo o(s) endereo(s) IP nos quais o servidor deve escutar. O contexto (context) indicado na linha4 um padro para capturar todas as outras chamadas, caso voc se esquea de definir, no futuro, o contexto de algum telefone. Os valores so herdados de cima para baixo. Depois de general, as sees trazem os usurios SIP. Como mostra a listagem 1, o nome de cada usurio vem entre colchetes. O parmetro type = friend permite que o telefone receba e efetue ligaes por meio do Asterisk. A senha em secret= definida em texto puro e tambm transferida assim, de forma fcil para sniffers, como espera o protocolo SIP. E o parmetro host=dynamic significa que o telefone SIP pode se registrar com qualquer IP.
Aps salvar os dois arquivos, reinicie o Asterisk com o comando asterisk -vvvc:
Asterisk 1.4.2, Copyright (C) 1999 - 2005 Digium. Written by Mark Spencer <markster@ digium.com> ================================== [ Booting...Nov 20 18:59:28 NOTICE[14937]:cdr.c:1185 do_ reload: CDR simple logging enabled. .................................. Asterisk Ready.
O Asterisk emite diversas mensagens com WARNING e NOTICE (quadro3) e preciso um pouco de tempo para perceber quais so importantes e quais apenas enchem os logs. quase como se os desenvolvedores do Asterisk tivessem propositalmente imposto uma barreira de adoo alta para os iniciantes.
39
especilizada. Alm disso, mltiplos softphones instalados em um mesmo computador podem ter problemas com portas. Se voc no tiver um telefone SIP fsico, ao menos use apenas um softphone por computador (quadro 4).
Os parmetros de configurao para o telefone SIP so preenchidos no arquivo sip.conf (listagem 1) nas linhas 6 a 10: ser: 2000 U Password: 1234
IP-Registrar: Endereo IP do S seu servidor Asterisk SIP-Proxy: Endereo IP do seu servidor Asterisk
Aps iniciar o telefone, possvel usar a opo -vvvc no Asterisk para visualizar o ocorrido:
*CLI> -- Registered SIP 2000 at 87.143.3.144 port 5060 expires 120 -- Unregistered SIP 2000
hello-world. O prximo passo lgico configurar um segundo telefone. Isso ocorre de forma semelhante ao primeiro telefone em sip.conf (linhas 12 a 16). O segundo telefone recebe o usurio 2001 e o restante dos parmetros iguais aos do usurio 2000. Na linha de comando do Asterisk, possvel recarregar as informaes do sip.conf com o comando sip reload (quadro 5). Depois disso, ligue novamente o segundo telefone e veja o que o Asterisk exibe na linha de comando. Aps o segundo telefone ser registrado no servidor, ambos j podem telefonar para 1234 para ouvir a mensagem hello-world. Na linha de comando do Asterisk, funciona o j conhecido recurso de auto-completar presente no shell. possvel, por exemplo, digitar sip show e pressionar a tecla [Tab] duas vezes para exibir todas as possibilidades.
40
www.linuxmagazine.com.br
ainda no contemplam esse tipo de chamada. Para usar o telefone 2000 para chamar o 2001 e vice-versa, preciso usar o plano de discagem extensions.conf exibido na listagem 2. Em seguida, leia o novo plano de discagem na linha de comando do Asterisk com dialplan reload, para permitir que ambos liguem para o nmero 1234 e tambm entre si. No jargo do Asterisk, essas regras so chamadas de extenses. No plano de discagem acima, as extenses so 1234, 2000 e 2001. As extenses determinam cada chamada no sistema telefnico, e podem consistir em qualquer nmero de linhas. Todas as linhas seguem o padro:
exten => Nmero_chamado,Prioridade, Aplicao
A primeira prioridade (primeiro passo do programa) sempre a 1. As seguintes acrescentam 1 a seus nmeros. Por isso, as extenses:
exten => 1234,1,Answer() exten => 1234,3,Playback(helloworld) exten => 1234,4,Hangup()
comando produz uma lista de todas as aplicaes disponveis atualmente. Com help <aplicao>, o programa exibe um texto de ajuda. Por exemplo, help answer produz o resultado:
Usage: console answer
Na prxima edio da Linux Magazine, vamos falar sobre padres de planos de discagem, dispositivos SIP e muito mais. At l! n
Mais informaes
[1] Asterisk: http://www.asterisk.org/ [2] OpenPBX: http://wiki.openpbx.org/ [3] Lista de softphones e aparelhos SIP: http://www.voip-info.org/wiki-VOIP+Phones/ [4] Twinkle: http://www.twinklephone.com/ [5] Linphone: http://www.linphone.org/ [6] Ekiga: http://www.ekiga.org/
no funcionam. O Asterisk conseguiria atender a ligao por causa da primeira linha, que usa a aplicao Answer. Porm, ao procurar a instruo com a segunda prioridade, no encontraria nada e desligaria aps um tempo de timeout. Se isso for complicado demais para voc, prefira usar sempre a prioridade n. Com ela, a extenso 1234 ficaria assim:
exten => 1234,1,Answer() exten => 1234,n,Playback(helloworld) exten => 1234,n,Hangup()
Sobre o autor
Stefan Wintermeyer o autor do Livro do Asterisk, da editora Addisson Wesley e primeiro DCAP (Digium Certified Asterisk Professional) alemo. Ele auxilia clientes, por meio da Amooma GmbH (http://www.amooma.de), a implementar solues com Asterisk.
Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/4299
A lista de aplicaes do Asterisk longa e depende dos mdulos includos. A tabela 1 descreve as aplicaes usadas neste artigo. O comando
41