Instalando Asterisk 13

O Asterisk é um poderoso software de PBX (central telefônica), free, que possibilita realizar interconexões entre o mundo analógico, digital e possibilita aplicações e recursos que quando vistos em outras centrais telefônicas, são de grande porte.

Instalação de dependências

O primeiro passo, em qualquer instalação de servidor ao meu ver, é garantir que todos os pacotes básicos estejam devidamente atualizados.

apt-get update;
apt-get upgrade;

Na sequência vamos instalar os pacotes básicos para possibilitar a compilação e a gerência 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 aptitude 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 zlib-bin 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 sequencia vamos instalar o MySQL, que será utilizado para o armazenamento do log de gravações telefônicas (CDR -Call Detail Records). Neste passo será solicitada a senha de root do MySQL, escolha sua senha e anote para utilizações futuras.

apt-get -y install mysql-server mysql-client

Download e instalação 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 compilação do Asterisk deve ser feita em uma ordem específica, pois os módulos são interdependentes, ou seja, a compilação de um módulo interfere diretamente na compilação do outro. Por exemplo, caso seja compilado o módulo Asterisk antes do Libpri, a compilação do asterisk não reconhecerá as funções habilitadas pelo pacote libpri.

Desta forma para a correta compilação dos módulos 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
#Não 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/
./contrib/scripts/install_prereq install
make clean
./configure
make menuselect
# Verifique se os módulos cdr_mysql esta selecionado em Add-Ons
# Verifique se o módulo res_snmp esta selecionado em Resource Modules
# Verifique se o módulo func_curl esta selecionado em Dialplan Functions
make
make install
make config
make install-logrotate

Caso essa seja a primeira instalação neste servidor pode ser executado o comando abaixo para gerar os arquivos exemplos de configuração. Caso ja tenha os arquivos neste servidor ou em um backup, não é recomendado realizar este passo, pois ao executa-lo todos os arquivos de configuração serão substituídos pelo padrão do sistema.

make samples

Configurando CDR no MySQL

Crie um arquivo /tmp/cdr.sql com o seguinte conteúdo

create database asteriskcdrdb;

/* Define a senha do usuário 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, usuário e tabela necessária com o comando abaixo. Este comando solicitará a senha de root do MySQL, a mesma criada no momento da instalação.

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

Edite o arquivo /etc/asterisk/cdr.conf e o mantenha com o seguinte conteúdo

[general]
enable=yes
unanswered=no

Edite o arquivo /etc/asterisk/cdr_mysql.conf e o mantenha com o seguinte conteúdo

[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 gravação 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
Helvio Junior

Helvio Junior

Gerente de Infraestrutura de TI e Telecomunicações em Fael, uma empresa do grupo Apollo Global
Especialista em redes e segurança de sistemas pela PUC-PR, consultor de redes e segurança da informação. CEO e CTO da SafeTrend, com um produto de single sign-on e gestão de identidades e acessos. Especialista em Segurança da Informação, Controle de Acesso, ambientes e ferramentas de segurança, telefonia VoIP com Asterisk, administração de redes em ambientes híbridos e realização de penetration test (pentest).
Helvio Junior
5 respostas
  1. Thiago Lima
    Thiago Lima says:

    Opa, show de bola Helvio. Teria algum tutorial para ensinar a configurar o Asterisk para ler as informações do MySQL ao invés dos arquivos .conf?

    Ex.: Ramais, Trunks, Queues, URAs, …

    Desde já agradeço,
    Vlws

    Responder
  2. Caio
    Caio says:

    Boa tarde.
    Ao rodar o comando para criar a tabela ele retorna esse erro.
    ERROR 1396 (HY000) at line 2: Operation CREATE USER failed for ‘asteriskcdr’@’localhost’

    Responder
  3. rafael
    rafael says:

    Opa, gostei bastante do teu post, porém to com um problema no meu UBUNTU SERVER 16.10
    começa já no inicio:

    E: Package ‘zlib-bin’ has no installation candidate
    E: Package ‘libmysqlclient18’ has no installation candidate

    depois no make install do dahdi-linux

    /usr/src/dahdi-linux-2.11.1/drivers/dahdi/makefw.c:25:19: fatal error: stdio.h: No such file or directory

    Makefile:74: recipe for target ‘modules’ failed
    make: *** [modules] Error 2

    tentei também via apt-get install asterisk, mas dá problema de dependências de modulo.

    Tem alguma luz que pode resolver esses problemas?

    Responder

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *