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

Publicado: dezembro 07, 2009 em Asterisk
Tags:, ,

Introdução

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!

1. 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 \
libcurl4-openssl-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-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 ncurses-dev \
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 do mysql, basta digitar a senha e confirmar.
O phpMyAdmin irá solicitar informações sobre o servidor web, basta marcar a opção “apache2”.

2. Criar diretório para downloads (opcional)

# mkdir /downloads
# cd /downloads

3. 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

4. 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/

5. 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 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, é 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

6. Reinicializar o sistema

# shutdown -r now

7. 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

8. 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.

9. 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

comentários
  1. Marcos disse:

    Fala Andrey Smith.
    Se eu fazer estes passos com uma versao mais nova do Debyan, fumega tbm?

    Curtir

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s