Asterisk - Construindo um PBX IP com Software Livre (Parte 1)
Colaboração: Andrey Smith
Data de Publicação: 13 de Dezembro de 2009
Asterisk é um software licenciado sob a GPL, que implementa recursos que vão além dos encontrados em um PABX convencional, e pode ser executado em qualquer distribuição Linux, plataformas Unix e até mesmo em Windows. Digium é a empresa criadora do Asterisk, e desde sua criação em 1999, o Asterisk tornou-se rapidamente uma alternativa atraente ao mercado. Abaixo alguns dos fatores que tornaram o Asterisk um verdadeiro fenômeno no mundo das telecomunicações:
Licenciamento a custo zero - Licenciado sob a GPL (General Public License).Flexibilidade - É possível integrar facilmente o mundo VoIP à rede pública de telefonia. Redução de custos - A integração de unidades geograficamente diferentes via internet, aliada as baixas tarifas oferecidas por provedores VoIP, produzem a redução significativa do custo com telefonia.
Vários são os recursos que podem ser implementados no Asterisk, a seguir apenas alguns dos recursos disponíveis:
- Correio de voz (integrado ao e-mail)
- Sistema de bilhetagem
- Conferência
- Siga-me
- URA (Unidade de Resposta Audível)
- DAC (Distribuidor Automático de Chamadas)
Este é o primeiro de uma série de tutoriais sobre Asterisk, e a cada tutorial, irei adicionar mais funcionalidades a nossa central telefônica.
Pré-requisitos
Sistema operacional instalado e atualizado.
Informações gerais
Sistema Operacional: Debian Lenny 5.0
- Tipo de host: Virtual
- Hypervisor: VMware Fusion
- Hd: 10 GB
- Partições:
- /
- 3072 MB (ReiserFS)
- swap - 512 MB (Swap)
- /var - 6416 MB (ReiserFS)
- Memória RAM: 512 MB
- Endereço IP: 192.168.0.10
- Máscara: 255.255.255.0
Mãos à obra!
- Instalar dependências
# aptitude -y install apache2 apache2.2-common apache2-mpm-prefork \ apache2-utils autoconf automake binutils bison bzip2 doxygen g++ g++-4.1 gcc graphviz \ gsfonts less libapache2-mod-php5 libapache2-mod-perl2 libasound2-dev libc6-dev libcurl3 \ libcurl3-dev libdbd-mysql-perl libedit2 libedit-dev libeditline0 libeditline-dev libgcrypt11 \ libiksemel3 libiksemel-dev libmcrypt4 libmcrypt-dev libmhash2 libmyodbc \ libmysqlclient15-dev libmysqlclient15off libncurses5 libncurses5-dev libnewt0.52 libnewt-dev \ libogg-dev libsnmp libsnmp-dev libsnmp-base libsnmp-perl libspandsp1 libspandsp-dev libspeex1 \ libspeex-dev libssl0.9.8 libssl-dev libtiff4-dev libtiff-tools libvorbis-dev libwrap0-dev libxml2 \ libxml2-dev linux-headers-`uname -r`lrzsz make mc mcrypt mime-construct mysql-server-5.0 ntp \ ntpdate openssh-server openssl patch pciutils php5 php5-cgi php5-cli php5-common php5-gd \ php5-mcrypt php5-mysql php-pear procps sox tofrodos unixodbc-dev unzip vim zlib1g-dev phpmyadmin
Nem todos os pacotes acima são dependências do Asterisk, alguns são softwares que serão utlizados nos demais tutoriais para adicionar funcionalidades e facilidades ao Asterisk. Durante a instalação, será solicitada a senha do usuário root domysql, basta digitar a senha e confirmar. OphpMyAdmin irá solicitar informações sobre o servidor web, basta marcar a opçãoapache2. - Criar diretório para downloads (opcional)
# mkdir /downloads # cd /downloads
- Download dos pacotes
# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-2.2.0.tar.gz # wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.2.0.2.tar.gz # wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.10.2.tar.gz # wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-addons-1.4.9.tar.gz # wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-1.4.26.2.tar.gz
- Descompactar
# tar -zxf libpri-1.4.10.2.tar.gz -C /usr/src/ # tar -zxf asterisk-1.4.26.2.tar.gz -C /usr/src/ # tar -zxf asterisk-addons-1.4.9.tar.gz -C /usr/src/ # tar -zxf dahdi-linux-2.2.0.2.tar.gz -C /usr/src/ # tar -zxf dahdi-tools-2.2.0.tar.gz -C /usr/src/
- 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 documentação do Asterisk. make config - Ativa a inicialização automática 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, é necessário fazer uma pequena alteração no arquivodrivers/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, é possível continuar com a instalação do dahdi# make # make install
Dahdi-Tools# cd ../dahdi-tools-2.2.0/ # sh configure # make # make install # make config
- Reinicializar o sistema
# shutdown -r now
- Verificar se o Asterisk está executando
# ps aux | grep asterisk
Resultado:root 2767 0.0 2.2 33052 11408 ? Ssl 08:48 0:00 /usr/sbin/asterisk root 2985 0.0 0.1 3140 760 pts/0 R<+ 09:16 0:00 grep asterisk
- Verificar se as portas do Asterisk estão abertas
netstat -anp | grep asterisk
Resultado:tcp 0 0 0.0.0.0:2000 0.0.0.0:* OUÇA 2767/asterisk tcp 0 0 0.0.0.0:1720 0.0.0.0:* OUÇA 2767/asterisk udp 0 0 0.0.0.0:2727 0.0.0.0:* 2767/asterisk udp 0 0 0.0.0.0:4520 0.0.0.0:* 2767/asterisk udp 0 0 0.0.0.0:5060 0.0.0.0:* 2767/asterisk udp 0 0 0.0.0.0:4569 0.0.0.0:* 2767/asterisk unix 2 [ ACC ] STREAM OUVINDO 6134 2767/asterisk /var/run/asterisk.ctl
Neste ponto do tutorial o Asterisk já está instalado e funcionando perfeitamente. - Localização dos arquivos
Arquivos de configuração do Asterisk
/etc/asterisk
Conteúdo do diretório:# 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, licenças, scripts, etc./var/lib/asterisk
Arquivos temporários, e arquivos gerados pelo Asterisk/var/spool/asterisk
Arquivos de log, bilhetes, etc./var/log/asterisk
No próximo tutorial irei demonstrar como criar ramais, plano de discagem e configurar o softphone que será utilizado para efetuar ligações. Até o próximo! :wq!?Andrey Smith