You are on page 1of 14

Asterisk - Construindo um PBX IP com Software Livre (Parte 1)

Colaborao: Andrey Smith Data de Publicao: 13 de Dezembro de 2009 Asterisk um software licenciado sob a GPL, que implementa recursos que vo alm dos encontrados em um PABX convencional, e pode ser executado em qualquer distribuio Linux, plataformas Unix e at mesmo em Windows. Digium a empresa criadora do Asterisk, e desde sua criao em 1999, o Asterisk tornou-se rapidamente uma alternativa atraente ao mercado. Abaixo alguns dos fatores que tornaram o Asterisk um verdadeiro fenmeno no mundo das telecomunicaes: Licenciamento a custo zero - Licenciado sob a GPL (General Public License).Flexibilidade - possvel integrar facilmente o mundo VoIP rede pblica de telefonia. Reduo de custos - A integrao de unidades geograficamente diferentes via internet, aliada as baixas tarifas oferecidas por provedores VoIP, produzem a reduo significativa do custo com telefonia. Vrios so os recursos que podem ser implementados no Asterisk, a seguir apenas alguns dos recursos disponveis:

Correio de voz (integrado ao e-mail) Sistema de bilhetagem Conferncia Siga-me URA (Unidade de Resposta Audvel) DAC (Distribuidor Automtico de Chamadas)

Este o primeiro de uma srie de tutoriais sobre Asterisk, e a cada tutorial, irei adicionar mais funcionalidades a nossa central telefnica.

Pr-requisitos
Sistema operacional instalado e atualizado.

Informaes gerais
Sistema Operacional: Debian Lenny 5.0

Tipo de host: Virtual Hypervisor: VMware Fusion Hd: 10 GB Parties: o / o 3072 MB (ReiserFS) o swap - 512 MB (Swap)

o /var - 6416 MB (ReiserFS) Memria RAM: 512 MB Endereo IP: 192.168.0.10 Mscara: 255.255.255.0

Mos obra!
1. Instalar dependncias
2. # aptitude -y install apache2 apache2.2-common apache2-mpmprefork \ 3. apache2-utils autoconf automake binutils bison bzip2 doxygen g++ g++-4.1 gcc graphviz \ 4. gsfonts less libapache2-mod-php5 libapache2-mod-perl2 libasound2-dev libc6-dev libcurl3 \ 5. libcurl3-dev libdbd-mysql-perl libedit2 libedit-dev libeditline0 libeditline-dev libgcrypt11 \ 6. libiksemel3 libiksemel-dev libmcrypt4 libmcrypt-dev libmhash2 libmyodbc \ 7. libmysqlclient15-dev libmysqlclient15off libncurses5 libncurses5-dev libnewt0.52 libnewt-dev \ 8. libogg-dev libsnmp libsnmp-dev libsnmp-base libsnmp-perl libspandsp1 libspandsp-dev libspeex1 \ 9. libspeex-dev libssl0.9.8 libssl-dev libtiff4-dev libtiff-tools libvorbis-dev libwrap0-dev libxml2 \ 10. libxml2-dev linux-headers-`uname -r`lrzsz make mc mcrypt mime-construct mysql-server-5.0 ntp \ 11. ntpdate openssh-server openssl patch pciutils php5 php5-cgi php5-cli php5-common php5-gd \ 12. php5-mcrypt php5-mysql php-pear procps sox tofrodos unixodbcdev unzip vim zlib1g-dev phpmyadmin

Nem todos os pacotes acima so dependncias do Asterisk, alguns so softwares que sero utlizados nos demais tutoriais para adicionar funcionalidades e facilidades ao Asterisk. Durante a instalao, ser solicitada a senha do usurio root domysql, basta digitar a senha e confirmar. OphpMyAdmin ir solicitar informaes sobre o servidor web, basta marcar a opoapache2. 13. Criar diretrio para downloads (opcional)
14. 15. 17. # mkdir /downloads # cd /downloads

16. Download dos pacotes


# wget http://downloads.asterisk.org/pub/telephony/dahditools/releases/dahdi-tools-2.2.0.tar.gz 18. # wget http://downloads.asterisk.org/pub/telephony/dahdilinux/releases/dahdi-linux-2.2.0.2.tar.gz 19. # wget http://downloads.asterisk.org/pub/telephony/libpri/libpri1.4.10.2.tar.gz 20. # wget http://downloads.asterisk.org/pub/telephony/asterisk/oldreleases/asterisk-addons-1.4.9.tar.gz 21. # wget http://downloads.asterisk.org/pub/telephony/asterisk/oldreleases/asterisk-1.4.26.2.tar.gz

22. Descompactar
23. 24. 25. 26. 27. # # # # # tar tar tar tar tar -zxf -zxf -zxf -zxf -zxf libpri-1.4.10.2.tar.gz -C /usr/src/ asterisk-1.4.26.2.tar.gz -C /usr/src/ asterisk-addons-1.4.9.tar.gz -C /usr/src/ dahdi-linux-2.2.0.2.tar.gz -C /usr/src/ dahdi-tools-2.2.0.tar.gz -C /usr/src/

28. Instalar pacotes Libpri


# cd /usr/src/libpri-1.4.10.2/ # make # make install

Asterisk
# # # # # # # cd ../asterisk-1.4.26.2/ sh configure make make install make samples make progdocs make config

make samples - Gera arquivos de exemplo do Asterisk. make progdocs - Gera arquivos de documentao do Asterisk. make config - Ativa a inicializao automtica do Asterisk no boot do sistema. Asterisk-Addons
# # # # # cd ../asterisk-addons-1.4.9/ sh configure make make install make samples

Dahdi
# cd ../dahdi-linux-2.2.0.2/

Antes de instalar, necessrio fazer uma pequena alterao no arquivo


drivers/dahdi/Kbuild # vi drivers/dahdi/Kbuild

Comentar a linha 20, que deve ficar como a linha abaixo:


#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) tor2.o +=

Feito isto, possvel continuar com a instalao do dahdi

# make # make install

Dahdi-Tools
# # # # # cd ../dahdi-tools-2.2.0/ sh configure make make install make config

29. Reinicializar o sistema


30. 32. # shutdown -r now # ps aux | grep asterisk

31. Verificar se o Asterisk est executando

Resultado:
root 2767 0.0 2.2 0:00 /usr/sbin/asterisk root 2985 0.0 0.1 0:00 grep asterisk 33052 11408 ? 3140 760 pts/0 Ssl R<+ 08:48 09:16

33. Verificar se as portas do Asterisk esto abertas


34. netstat -anp | grep asterisk

Resultado:
tcp 0 0 0.0.0.0:2000 OUA 2767/asterisk tcp 0 0 0.0.0.0:1720 OUA 2767/asterisk udp 0 0 0.0.0.0:2727 2767/asterisk udp 0 0 0.0.0.0:4520 2767/asterisk udp 0 0 0.0.0.0:5060 2767/asterisk udp 0 0 0.0.0.0:4569 2767/asterisk unix 2 [ ACC ] STREAM OUVINDO 2767/asterisk /var/run/asterisk.ctl 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 6134

Neste ponto do tutorial o Asterisk j est instalado e funcionando perfeitamente. 35. Localizao dos arquivos Arquivos de configurao do Asterisk
/etc/asterisk

Contedo do diretrio:
# ls /etc/asterisk/

adsi.conf cdr_mysql.conf extensions.conf jabber.conf osp.conf say.conf adtranvofr.conf cdr_odbc.conf features.conf logger.conf oss.conf sip.conf agents.conf cdr_pgsql.conf festival.conf manager.conf phone.conf sip_notify.conf alarmreceiver.conf cdr_tds.conf followme.conf meetme.conf privacy.conf skinny.conf alsa.conf chan_dahdi.conf func_odbc.conf mgcp.conf queues.conf sla.conf amd.conf codecs.conf gtalk.conf misdn.conf res_mysql.conf smdi.conf asterisk.adsi dnsmgr.conf h323.conf modules.conf res_odbc.conf telcordia-1.adsi asterisk.conf dundi.conf http.conf musiconhold.conf res_pgsql.conf udptl.conf cdr.conf enum.conf iax.conf muted.conf res_snmp.conf users.conf cdr_custom.conf extconfig.conf iaxprov.conf mysql.conf rpt.conf voicemail.conf cdr_manager.conf extensions.ael indications.conf ooh323.conf rtp.conf vpb.conf

Arquivos de sons, licenas, scripts, etc.


/var/lib/asterisk

Arquivos temporrios, e arquivos gerados pelo Asterisk


/var/spool/asterisk

Arquivos de log, bilhetes, etc.


/var/log/asterisk

No prximo tutorial irei demonstrar como criar ramais, plano de discagem e configurar o softphone que ser utilizado para efetuar ligaes.

Asterisk - Construindo um PBX IP com Software Livre (Parte 2)


Colaborao: Andrey Smith Data de Publicao: 29 de January de 2010 Na parte 1 deste tutorial foi realizada a instalao do Asterisk e suas dependncias, agora irei configur-lo para efetuar ligaes entre ramais utlizando os protocolos SIP e IAX.

1. Pr-requisitos
Ter executado com sucesso a parte 1 deste tutorial. Uma segunda mquina para que possam ser executados testes.

2. Informaes gerais
Ser utilizada a mesma configurao da parte 1 do tutorial. Mos obra!

3. Criar ramais SIP


O arquivo sip.conf existente est muito bem comentado, uma boa prtica mant-lo inalterado para posteriormente ser utilizado como fonte de consulta para eventuais dvidas. Renomear sip.conf
# mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.orig

Criar e editar um novo arquivo sip.conf


# vi /etc/asterisk/sip.conf

Contedo do arquivo:
[general] bindport = 5060 bindaddr = 0.0.0.0 disallow = all allow = alaw,ulaw,gsm language = pt_BR [1001] type = friend context = tutorial secret = 12345 host = dynamic [1002] type = friend context = tutorial secret = 54321 host = dynamic

[general] bindport

Esta seo define os valores default (padro) para as demais sees e/ou protocolo. Porta utilizada pelo protocolo. O SIP utiliza as portas 5060 TCP e UDP, e 5061 TCP para TSL (Transporte Layer Security).

bindaddr disallow allow language [XXXX] type context secret host

Endereo IP onde o Asterisk aceitar conexes. Se configurado como 0.0.0.0, aceitar conexes em qualquer IP. Desabilita codecs, a opo all desabilita todos codecs. Habilita o (s) codec (s) especificado (s). Configurao padro de idioma para users/peers. possvel configurar individualmente em cada peer. Identificao do ramal. Define se o ramal pode receber chamadas (peer), efetuar chamadas (user), ou receber e efetuar chamadas (friend). Define o contexto ao qual o ramal pertence. Este contexto ser criado posteriormente no plano de discagem. Senha para registrar o ramal no servidor. Informa onde o ramal est registrado. Aceita endereo dinmico, quando configurado como dynamic.

4. Criar ramais IAX


Renomear iax.conf
# mv /etc/asterisk/iax.conf /etc/asterisk/iax.conf.orig

Criar e editar um novo arquivo iax.conf


# vi /etc/asterisk/iax.conf

Contedo do arquivo:
[general] bindport = 4569 bindaddr = 0.0.0.0 disallow = all allow = alaw,ulaw,gsm language = pt_BR [1003] type = friend context = tutorial secret = 12345 host = dynamic requirecalltoken = no [1004] type = friend context = tutorial secret = 54321 host = dynamic requirecalltoken = no

[general] bindport bindaddr disallow allow language [XXXX] type context secret host

Esta seo define os valores default (padro) para as demais sees e/ou protocolo. Porta utilizada pelo protocolo. O IAX utiliza a porta 4569 UDP. Endereo IP onde o Asterisk aceitar conexes. Se configurado como 0.0.0.0, aceitar conexes em qualquer IP. Desabilita codecs, a opo all desabilita todos codecs. Habilita o (s) codec (s) especificado (s). Configurao padro de Idioma para users/peers. possvel configurar individualmente em cada peer. Identificao do ramal. Define se o ramal pode receber chamadas (peer), efetuar chamadas (user), ou receber e efetuar chamadas (friend). Define o contexto ao qual o ramal pertence. Este contexto ser criado posteriormente no plano de discagem. Senha para registrar o ramal no servidor. Informa onde o ramal est registrado. Aceita endereo dinmico, quando configurado como dynamic.

requirecalltoken = Informa que no h necesside de validar a chamada por token no

5. Criar o plano de discagem (Dial Plan)


Renomear extensions.conf
# mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.orig

Criar e editar um novo arquivo extensions.conf


# vi /etc/asterisk/extensions.conf

Contedo do arquivo:
[tutorial] exten => 1001,1,Dial(SIP/1001) exten => 1002,1,Dial(SIP/1002) exten => 1003,1,Dial(IAX/1003) exten => 1004,1,Dial(IAX/1004)

[tutorial] Contexto contendo regras de discagem. Por ser um assunto de maior abrangncia, o plano de discagem ter um tutorial exclusivo.

6. Ativar as configuraes
Acessar a CLI (Command Line Interface) do Asterisk
# rasterisk

ou
# asterisk -r

Resultado:
Asterisk 1.4.26.2, Copyright (C) 1999 - 2008 Digium, Inc. and others. Created by Mark Spencer Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ====================================================================== === Connected to Asterisk 1.4.26.2 currently running on debian (pid = 2800) debian*CLI>

Recarregar as configuraes SIP


sip reload

Mostrar ramais (peers) criados no sip.conf


sip show peers

Resultado:
Name/username Host Dyn Nat ACL Port Status 1002 (Unspecified) D 0 Unmonitored 1001 (Unspecified) D 0 Unmonitored 2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 2 offline]

Recarregar as configuraes IAX


iax2 reload

Mostrar ramais (peers) criados no iax.conf

iax2 show peers

Resultado:
Name/Username Host Mask Status 1004 (Unspecified) (D) 255.255.255.255 Unmonitored 1003 (Unspecified) (D) 255.255.255.255 Unmonitored 2 iax2 peers [0 online, 0 offline, 2 unmonitored] Port 0 0

Recarregar as configuraes do plano de discagem


dialplan reload

Resultado:
Dialplan reloaded.

Verificar se o plano de discagem foi carregado


dialplan show tutorial

Resultado:
[ Context 'tutorial' created by 'pbx_config' ] '1001' => 1. Dial(SIP/1001) [pbx_config] '1002' => 1. Dial(SIP/1002) [pbx_config] '1003' => 1. Dial(SIP/1003) [pbx_config] '1004' => 1. Dial(SIP/1004) [pbx_config] -= 4 extensions (4 priorities) in 1 context. =-

Sair da CLI
exit

7. Configurao do softphone
Softphone um software utilizado para efetuar chamadas telefnicas, a partir de um computador. Para efetuar os testes irei utilizar o sofphone Zoiper, que possui verses para Linux, Mac e Windows. O Zoiper tem suporte aos protocolos SIP e IAX, e permite registrar duas contas simultaneamente. Desta forma, com apenas um computador consigo testar se os ramais esto efetuando chamadas entre si.

A instalao do Zoiper bastante simples, por este motivo no ser abordada neste tutorial. Depois de instalado, basta execut-lo. execut Se quiser que o Zoiper inicie ao fazer o login, clique em Yes.

Clique que no cone da ferramenta (acima do nmero 6) para acessar o menu de configuraes.

Clique em Add new SIP account, e informe o nome da conta em Name.

Em SIP account options preencha conforme a figura abaixo e clique em Ok.

Clique em Add new IAX account, e informe o nome da conta em Name.

Em IAX account options preencha conforme a figura abaixo e clique clique em Ok.

Com as contas criadas, o prximo passo registr-las registr las para efetuar chamadas. Na tela principal do Zoiper, selecione a conta em Account e clique em Register, este procedimento deve ser feito para as duas contas. Agora basta discar para o outro ramal. No exemplo abaixo, a chamada tem como origem o ramal 1003, e destino o ramal 1001.

Traduzindo a imagem abaixo: Incoming call ramal que est efetuando a chamada para 1001. possvel aceitar (Accept), rejeitar (Regect) ou ignorar (Ignore).

O ideal executar este teste com mais de um computador e com uso de headset. Porm, apenas para efeito de teste, j possvel comprovar que a comunicao entre ramais est funcionando.

8. Verificar ramais registrados


Os comandos abaixo so executados na CLI do Asterisk. Verificar ramais SIP.
sip show peers

Resultado:
Name/username Host Dyn Nat ACL Port Status 1002 (Unspecified) D 0 Unmonitored 1001/1001 189.110.52.67 D 59927 Unmonitored 2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 1 offline]

Verificar ramais IAX.


iax2 show peers

Resultado:
Name/Username Host Mask Status 1004 (Unspecified) (D) 255.255.255.255 Unmonitored 1003 192.168.0.134 (D) 255.255.255.255 Unmonitored 2 iax2 peers [0 online, 0 offline, 2 unmonitored] Port 0 4569

Os resultados acima esto informando em que host e portas os ramais esto registrados. No prximo tutorial irei demonstrar como criar uma Unidade de Resposta Audvel (URA).