Você está na página 1de 8

Instalando Asterisk 13

O Asterisk um poderoso software de PBX (central telefnica), free, que possibilita realizar inter-
conexes entre o mundo analgico, digital e possibilita aplicaes e recursos que quando vistos
em outras centrais telefnicas, so de grande porte.

Instalao de dependncias
O primeiro passo, em qualquer instalao de servidor a meu ver, garantir que todos os pacotes bsicos
estejam devidamente atualizado.

Aps instalar o Debian 8 devemos trocar o repositrio.


Para isso edite o arquivo /etc/apt/sources.list e substitua o contedo pelo abaixo:
deb http://httpredir.debian.org/debian jessie main
deb-src http://httpredir.debian.org/debian jessie main
deb http://httpredir.debian.org/debian jessie-updates main
deb-src http://httpredir.debian.org/debian jessie-updates main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

apt-get update;
apt-get upgrade;

Na sequncia vamos instalar os pacotes bsicos para possibilitar a compilao e a gerncia do dispositivo.
Enquanto o comando abaixo estiver sendo executado aproveite para buscar um caf ou ler outros artigos
aqui do blog pois o comando abaixo ir gastar alguns minutos.

apt-get install vim openssh-server openssh-client linux-headers-`uname -r` gcc g++ libgtk2.0-dev
libnewt-dev libxml2-dev libncurses5-dev subversion bison libssl-dev openssl libusb-dev libc6-dev
minizip zlib1g-dev snmp libsnmp-dev snmpd build-essential mysql-common libmysqlclient18
libmysqlclient-dev libcurl4-openssl-dev uuid-dev libjansson-dev sqlite3 libsqlite3-dev logrotate

Na sequncia vamos instalar o MySQL, que ser utilizado para o armazenamento do log de gravaes te-
lefnicas (CDR -Call Detail Records). Neste passo ser solicitada a senha de root do MySQL, escolha sua
senha e anote para utilizaes futuras.
apt-get -y install mysql-server mysql-client

Download e instalao dos pacotes utilizados no


Asterisk
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.11.1.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-2.11.1.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.6.0.tar.gz
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar -xzvf dahdi-linux-2.11.1.tar.gz -C /usr/src/
tar -xzvf dahdi-tools-2.11.1.tar.gz -C /usr/src/
tar -xzvf libpri-1.6.0.tar.gz -C /usr/src/
tar -xzvf asterisk-13-current.tar.gz -C /usr/src

A compilao do Asterisk deve ser feita em uma ordem especfica, pois os mdulos so interdependentes,
ou seja, a compilao de um mdulo interfere diretamente na compilao do outro. Por exemplo, caso
seja compilado o mdulo Asterisk antes do Libpri, a compilao do asterisk no reconhecer as funes
habilitadas pelo pacote libpri.

Desta forma para a correta compilao dos mdulos do Asterisk, siga os passos abaixo:

DAHDI
cd /usr/src/dahdi-linux-2.11.1/
make clean
make
make install

cd /usr/src/dahdi-tools-2.11.1/
./configure
make
make install
#No executar o make config
#Caso execute o make config, remova com os comandos update-rc.d -f dahdi remove e rm -rf
/etc/init.d/dahdi

LibPRI
cd /usr/src/libpri-1.6.0/
make clean
make
make install

Asterisk
cd /usr/src/asterisk-13-current/
make clean
./configure
make menuselect
# Verifique se os mdulos cdr_mysql esta selecionado em Add-Ons
# Verifique se o mdulo res_snmp esta selecionado em Resource Modules
# Verifique se o mdulo func_curl esta selecionado em Dialplan Functions
make
make install
make config
make install-logrotate

Caso essa seja a primeira instalao neste servidor pode ser executado o comando abaixo para gerar os
arquivos exemplos de configurao. Caso j tenha os arquivos neste servidor ou em um backup, no re-
comendado realizar este passo, pois ao execut-lo todos os arquivos de configurao sero substitudos
pelo padro do sistema.
make samples
Configurando CDR no MySQL
Crie um arquivo /tmp/cdr.sql com o seguinte contedo

create database asteriskcdrdb;

/* Define a senha do usurio como 123456 */


CREATE USER 'asteriskcdr'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'asteriskcdr'@'%';

use asteriskcdrdb;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--

-- Table structure for table `cdr`

--

DROP TABLE IF EXISTS `cdr`;


CREATE TABLE `cdr` (
`calldatestart` datetime NOT NULL default '0000-00-00 00:00:00',
`calldateend` datetime NOT NULL default '0000-00-00 00:00:00',
`calldateanswer` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
KEY `calldate` (`calldatestart`),
KEY `dst` (`dst`),
KEY `accountcode` (`accountcode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;


/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Execute este script no MySQL para criar a base, usurio e tabela necessria com o comando abaixo. Este
comando solicitar a senha de root do MySQL, a mesma criada no momento da instalao.

mysql -u root -p < /tmp/cdr.sql

Edite o arquivo /etc/asterisk/cdr.conf e o mantenha com o seguinte contedo

[general]
enable=yes
unanswered=no

Edite o arquivo /etc/asterisk/cdr_mysql.conf e o mantenha com o seguinte contedo

[global]
hostname = localhost
dbname = asteriskcdrdb
table=cdr
user = asteriskcdr
password = 123456
port = 3306

[columns]
alias start => calldatestart
alias end => calldateend
alias answer => calldateanswer
alias callerid => clid
alias src => src
alias dst => dst
alias dcontext => dcontext
alias channel => channel
alias dstchannel => dstchannel
alias lastapp => lastapp
alias lastdata => lastdata
alias duration => duration
alias billsec => billsec
alias disposition => disposition
alias amaflags => amaflags
alias accountcode => accountcode
alias userfield => userfield
alias uniqueid => uniqueid

Edite o arquivo /etc/asterisk/modules.conf e adicione a seguinte linha

load => cdr_mysql.so

Reinicie o asterisk
Para verificar o status da gravao do CDR utilize os comando cdr mysql status

Alterando a linguagem do Asterisk para pt_BR


Realize o download dos prompts de audio e descompacte em /var/lib/asterisk/sounds/
wget http://www.helviojunior.com.br/wp-content/uploads/2015/03/sounds-pt_BR.tgz
tar -xzvf sounds-pt_BR.tgz -C /var/lib/asterisk/sounds/

Altere o seu arquivo sip.conf, iax.conf entre outros alterando a language para pt_BR conforme
demonstrado abaixo: language=pt_BR
Iniciar o sistema

Iniciar o sistema simples, basta executar o comando:


# asterisk &
(o & serve para colocar o processo em background)

Adicione este comando no arquivo /etc/rc.d/rc.local para que ele inicie o asterisk junto com o
sistema GNU/Linux.

# vi /etc/rc.d/rc.local
V at o final do arquivo inclua a seguinte linha:
asterisk &

Criar Ramal

Para criar um ramal com o protocolo IAX, procederemos da seguinte forma:


O arquivo que editamos para incluir ramais IAX o /etc/asterisk/iax.conf. Para edit-lo:

# vi /etc/asterisk/iax.conf

Dentro dele, v at o final do arquivo e adicione as seguintes linhas:


[100]
callerid=ariel
secret=ariel
host=dynamic #(ver obs1)
type=friend #(ver obs2)
context=interno #(ver obs3)

OBS1: A opo "dynamic" serve para o ramal ser acessado por qualquer host (inclusive fora da
rede), voc pode definir o endereo IP para limitar apenas um determinado host a acessar este
ramal.

OBS2: Existem trs tipos de "type", so eles:


Friend = Efetua e recebe ligaes;
Peer = Apenas faz ligaes;
User = Apenas recebe ligaes.

OBS3: No campo "context", adiciona-se a qual "classe de ramal" o ramal pertence, por exemplo,
define um contexto chamado "DDD" onde o ramal pode fazer ligaes DDD e outro Local onde o
ramal s faz ligaes locais. Em nosso caso usamos o contexto "interno" que ser criado
posteriormente e que realizar apenas ligaes entre os ramais cadastrados no nosso servidor
voip Asterisk.
Para criar um ramal com o protocolo SIP, procederemos da seguinte forma.
O arquivo que editamos para incluir ramais SIP o /etc/asterisk/sip.conf. Para edit-lo:

# vi /etc/asterisk/sip.conf

Dentro dele, v at o final do arquivo e adicione as seguintes linhas:


[100]
callerid=ariel
secret=ariel
host=dynamic #(ver obs1)
type=friend #(ver obs2)
context=interno #(ver obs3)

Por uma questo de organizao, conveniente que haja escopos para IAX e SIP

Faixa de ramais SIP:


200 - Recepo
201 - Estoque
202 - Administrao

Faixa de Ramais IAX:


300 - Vendedor1
301 - Vendedor2
302 - Vendedor3

Criar Dial Plan Interno

Para podermos efetuar qualquer tipo de ligao atravs o Asterisk, precisamos criar os planos de
discagem (que so conhecidos pelo asterisk como contextos). Para criarmos o plano de discagem
que chamamos anteriormente de "interno", vamos adicion-lo ao final do arquivo
extensions.conf.

Abra o arquivo para a edio:


# vi /etc/asterisk/extensions.conf

Adicione ao final do arquivo os seguintes parmetros:


[interno] #(cria um contexto chamado interno)
exten => _2XX,1,Dial(SIP/${EXTEN}) #(obs1)
exten => _2XX,2,Hangup() #(obs2)
exten => _3XX,1,Dial(IAX2/${EXTEN}) #(obs3)
exten => _3XX,2,Hangup()

OBS1: Aceita as chamadas iniciadas pelo dgito 2 e que contenham mais dois dgitos, por
exemplo 200, e executa atravs da funo "Dial" uma chamada para o protocolo SIP com o ramal
digitado no softphone que vem contido na varivel "${EXTEN}".
OBS2: Aps o termino da chamada, o asterisk executa a funo Hangup, ou seja, termina a
ligao lgica no sistema.
OBS3: Aceita as chamadas iniciadas pelo dgito 3 e que contenha mais dois dgitos, por exemplo
300, e executa atravs da funo "Dial" uma chamada para o protocolo IAX com o ramal digitado
no softphone que vem contido na varivel "${EXTEN}".
importante ressaltar que criamos aqui no contexto "interno" o plano de discagem que efetua
ligao para ramais IAX e SIP atravs de regras diferentes, mas que fica "transparente" para o
usurio, podendo, a partir de qualquer softphone (SIP ou IAX), realizar chamadas para qualquer
ramal cadastrado no sistema, seja ele SIP ou IAX.

# asterisk -r -x reload

Para realizar as chamadas basta discar no teclado do prprio softphone ou do teclado numrico
em seu teclado e teclar enter para efetuar a chamada (lembrando que seguindo este tutorial
voc poder realizar apenas ligaes entre os ramais).

Instalando e configurando o Asterisk GUI

cd /usr/src
svn co http://svn.digium.com/svn/asterisk-gui/trunk asterisk-gui

cd asterisk-gui
./configure
make && make install && make samples

vi /etc/asterisk/http.conf
[general]
enabled=yes
enablestatic=yes
httptimeout = 60
bindaddr=IP do servidor asterisk
bindport=8088

vi /etc/asterisk/manager.conf
[general]
enabled = yes
webenabled = yes
bindaddr=IP do servidor asterisk

[usuario]
secret = senha
read = system,call,log,verbose,command,agent,config,read,write,originate
write = system,call,log,verbose,command,agent,config,read,write,originate

Salvamos a configurao e recarregamos o Asterisk com o seguinte comando:

# /etc/init.d/asterisk reload

Caso esteja utilizando um firewall, precisamos abrir as portas 5038 TCP e 8088 TCP.

# nano /etc/sysconfig/iptables
# Asterisk Manager
-A INPUT -p tcp --dport 5038 -j ACCEPT

# Asterisk http
-A INPUT -p tcp --dport 8088 -j ACCEPT
Salvamos as mudanas e reiniciaremos o firewall:
# service iptables restart

# make checkconfig

Teremos algo parecido com isso:

-- Checking Asterisk configuration to see if it will support the GUI --


* Checking for http.conf: OK
* Checking for manager.conf: OK
* Checking if HTTP is enabled: OK
* Checking if HTTP static support is enabled: OK
* Checking if manager is enabled: OK
* Checking if manager over HTTP is enabled: OK
-- Everything looks good --
* GUI should be available at http://www.example.com.br:8088/asterisk/static/config/cfgbasic.html

Utilizando um navegador Web, digite na barra de endereos:

http://localhost:8088/static/config/cfgbasic.html