Asterisk – O PBX de código aberto

O Asterisk é um PBX VoIP capaz de integrar redes VoIP com a rede de telefonia convencional. Vem sendo largamente usado nos mais diversos contextos. Tem a capacidade de criação de regras ilimitadas, podendo atender a qualquer necessidade. O artigo trata da instalação do Asterisk no Debian Etch e indica onde encontrar maiores informações.
Por: Ralph Liebessohn

O ambiente

O ambiente para a instalação do Asterisk que vamos utilizar é a distribuição Debian em sua versão ETCH, que é a versão com as últimas atualizações do Debian.

O Debian ETCH já utiliza como padrão o kernel 2.6, o que não é pré-requisito para o funcionamento do Asterisk. Na verdade você pode usar a distribuição que quiser para rodar o Asterisk, bastando aplicar os ajustes necessários.

Faça uma instalação simples com o mínimo de pacotes necessários juntamente com Apache + PHP + BD.

Existem vários aplicativos que trabalham em cima do Asterisk. Alguns para fazer controle de bilhetagem, outros para integrar com banco de dados, enfim para tudo que você imaginar há um software para fazer e o que você imaginar e não existir você pode criar! 😉

Instalando

O Debian já possui pacotes com a instalação do Asterisk, mas faremos na mão aqui porque “apt-get install asterisk” é muito fácil de fazer.

Acesse o ftp da Digium em:

e baixe os seguintes pacotes:

  • asterisk-sounds-1.2.1.tar.gz
    asterisk-addons-1.2.2.tar.gz
    (módulos opcionais do Asterisk)
  • libpri-1.2.2.tar.gz
    (o Asterisk utiliza a Libpri para fazer multiplexação por divisão de tempo (TDM) juntamente com vários fabricantes de hardware)
  • zaptel-1.2.5.tar.gz
    (necessário para integração com o Zapata)
  • asterisk-1.2.7.1.tar.gz
    (fonte do Asterisk – o próprio)

Note que em breve você poderá encontrar pacotes em versões mais recentes, sinta-se a vontade para utilizá-las.

Guarde os fontes em /usr/src, que é o local destinado para isso.

É necessário que você tenha o fonte do kernel em seu computador para compilar o Asterisk. Para instalar você pode usar o apt-get:

# apt-get install kernel-headers-2.6.15-1

ou mais específico:

# apt-get install kernel-headers-2.6.15-1-486

(dependendo da sua plataforma)

Também são necessários algumas bibliotecas e aplicativos que não são instalados em uma instalação mínima do Debian.

Termcap – termcap-1.3.1.tar.gz

# wget http://www.tomtom.com/gpl/rel200603a/toolchain/termcap-1.3.1.tar.gz
# tar -zxvf termcap-1.3.1.tar.gz
# cd termcap-1.3.1
# ./config
# make
# make install

Fonte do OpenSSl (LibSSL)

# apt-get install libssl-dev

NCurses

# wget http://freeware.nekochan.net/source/ncurses/ncurses-5.3.tar.gz
# tar -zxvf ncurses-5.3.tar.gz
# cd ncurses-5.3
# ./configure
# make
# make install

Zlib

# wget http://www.gzip.org/zlib/zlib-1.2.3.tar.gz
# tar -zxvf zlib.tar.gz
# cd zlib-1.2.3
# make
# make install

Doxygen

# apt-get install doxygen

Agora seu sistema está preparado para instalar os pacotes que você baixou do Asterisk.

Comece pela Libpri:

# tar -zxvf libpri-1.2.2.tar.gz
# cd libpri-1.2.2
# make
# make install

Zaptel

# tar -zxvf zaptel-1.2.5.tar.gz
# cd zaptel-1.2.5
# make
# make install

Add-ons

# tar -zxvf asterisk-addons-1.2.2.tar.gz
# cd asterisk-addons-1.2.2
# make && make install

Sounds

# tar -zxvf asterisk-sounds-1.2.1.tar.gz
# cd asterisk-sounds-1.2.1
# make install

E finalmente, o ASTERISK.

# tar -zxvf asterisk-1.2.7.1.tar.gz
# cd asterisk-1.2.7.1

Antes do make, repare que temos uns detalhes que são o `make samples` para criar os arquivos de configuração de exemplo (ele sobrescreve os arquivos se já existirem) e `make progdocs` que gera a documentação do Asterisk.

# make clean
# make
# make install
# make progdocs
# make samples

Se não houver necessidade de nenhuma alteração dos comandos acima, você pode executar o script abaixo:

 

Configurações – extensions.conf

Dentro de /etc/asterisk encontram-se os arquivos de configuração.

Basicamente o Asterisk já está configurado para funcionar, basta executar como root:

# asterisk -p

O arquivo extensions.conf é o responsável por criar as extensões ou ramais, nele criamos também caminhos genéricos como XXX para cada X um dígito, onde podemos usar a imaginação para solucionar as questões que precisamos.

No extensions.conf criamos grupos de chamadas locais no qual podemos incluir outros grupos e criar os ramais dentro dele. Abaixo temos um exemplo de configuração do grupo de chamada ‘grupo1’ que inclui os ramais do grupo ‘demo’ e contém os seguintes ramais. Os comentários deste arquivo são precedidos de ” ; “.

[grupo1]
include => demo

exten => 6600,1,Dial(SIP/teste,25)
; SIP-É o tipo da conta / teste-O nome do usuário / 25-O tempo que vai chamar em segundos.
exten => 6600,2,Hangup

exten => 6601,1,Dial(SIP/teste2,25)
exten => 6601,2,Hangup

exten => 6602,1,Dial(IAX2/teste3,25)
exten => 6602,2,Hangup

Veja que no contexto [grupo1] incluímos o contexto [demo] e criamos três ramais (6600, 6601, 6602).

O próximo passo é criar os usuários (SIP/IAX2) para usarem esses ramais.

Usuários SIP e IAX2

O arquivo de configuração SIP – sip.conf

O arquivo sip.conf armazena informações sobre contas de usuários de protocolo SIP as informações são simples como nome de usuário, bina, senha e qual grupo participam.

No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.

[general] ; configurações básicas do protocolo
context=default ; Context padrão para recebimento de chamadas
bindport=5060 ; Porta UDP (A padrão é 5060)
bindaddr=0.0.0.0 ; Endereço IP para escutar (0.0.0.0 Escuta todos)
srvlookup=yes

[teste]
type=friend ; tipo friend=faz e recebe chamadas, user=faz chamadas, peer=recebe chamadas.
callerid = “Teste” <6600>
username=teste ;Nome do usuário para login
secret=123 ;Senha
host= dynamic ; se não tem ip fixo
nat=yes ; se está debaixo de nat
canreinvite=no ; no para não encaminhar chamadas
context=grupo1

[teste2]
type=friend
callerid = “Teste2” <6601>
username=teste2
secret=123
host= dynamic
nat=yes
canreinvite=no
context=grupo1

O arquivo de configuração IAX2 – iax.conf

O arquivo iax.conf armazena informações sobre contas de usuários de protocolo IAX2 as informações são simples como o arquivo de usuários SIP

No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.

[general] ; configurações básicas do protocolo
bandwidth=low
jitterbuffer=no
forcejitterbuffer=no
tos=lowdelay

[teste3]
type=friend
context=grupo1
username=teste3
secret=123
qualify=yes ; verifica se o host está respondendo (está a menos de 20ms)

Ao fazer alterações nos arquivos de configuração do Asterisk você precisa reiniciar o serviço para que ele enxergue as novas configurações.

Você pode se conectar ao console do Asterisk para recarregar apenas as informações necessárias (dentre outras coisas) sem interromper o serviço.

Para acessar o console, com o Asterisk rodando execute:

# asterisk -r

Utilize os comandos abaixo para recarregar as configurações novas:

asterisk*CLI> sip reload
asterisk*CLI> iax2 reload
asterisk*CLI> extensions reload
asterisk*CLI> quit

Agora seus novos usuários e suas novas extensões já estão ativas.

Fazendo e recebendo ligações – Softfones

Agora seu sistema já está apto a fazer e receber ligações. Para testar usaremos Softfones, que são aplicativos multimídia para aplicações voip que simulam um telefone de verdade. Cada softfone pode usar um protocolo diferente (SIP, IAX2) e também podem haver disponíveis vários codecs (gsm, g711, g726, etc.), assim você deve associar o protocolo do seu usuário juntamente com os codecs disponíveis em seu servidor para aquele cliente de determinado protocolo.

Vejamos alguns softfones.

IAX2:

SIP:

Imagem da versão paga do Xten:

Existem vários outros aplicativos disponíveis e dentre eles alguns open source também, porém não cheguei a testar a funcionalidade deles. Verifique em seu repositório preferido a existência de algum softfone pré-compilado para sua distribuição.

Nas páginas de cada aplicativo tem um manual ensinando a configurar sua conta.

Basicamente você deve fornecer usuário e senha e indicar em qual servidor você irá autenticar.

Após autenticado, você está liberado para fazer e receber ligações. Lembre-se dos números cadastrados em seu extensions.conf, você ainda não tem saída para a rede de telefonia pública! Assim você pode utilizar um softfone em cada computador da sua rede e fazer ligações entre eles.

Você também pode registrar seu servidor voip em outros servidores (próprios, públicos ou pagos) e ampliar sua rede.

Conclusões

Vimos neste artigo a facilidade de instalar e configurar um servidor voip usando Asterisk e utilizar softfones para fazer ligações, mas isso é só o começo do VoIP. Hoje o custo de telefones IP e adaptadores voip está sendo reduzido tornando uma alternativa popular hoje.

Existe no mercado uma quantidade enorme (muito, mas muito mesmo, maior que de operadoras de telefonia fixa) de operadoras VoIP que oferecem vários serviços como telefones fixo em várias cidades do Brasil e do mundo, tarifas a custos baixíssimos (interurbano mais barato que a tarifa local convencional), custo zero para ligação entre ramais e planos ilimitados para ligações. Sabemos que o skype faz boa parte dessas ações, mas não dá pra ficar preso a um sistema só. Com Asterisk você faz suas próprias regras.

Se você interessou pelo Asterisk, sugiro que entre nas listas de discussão disponíveis nos sites de referência.

Vejo vocês por lá.

[ ]

Ralph Liebessohn
ralphliebessohn at gmail dot com

Referências

Livro – Asterisk: O Futuro da Telefonia, disponível em inglês em:

Esse é o início do livro em português, só pra dar um gostinho:

Há também um e-book sobre o Asterisk@Home:

Be the first to comment

Leave a Reply

Your email address will not be published.


*