maio 282010
 

Olá!

Neste how-to veremos como instalar um servidor de telefonia digital (VoIP) utilizando o software gratuito asterisk. Também é possível comprar placas PCI ou PCI-express para utilização com links de telefonia digital (um canal “E1”, por exemplo), altém de ATAs (adaptadores de de telefones ou linhas analógicas).

Inicialmente, precisamos de um servidor com o linux Ubuntu Server 10.04 instalado. No meu caso, utilizei a versão de 64bits, pois o computador que utilizei possuía esta capacidade. Recomendo a instalação do servidor SSH, para facilitar o acesso posteriormente ;). OK, pode ser qualquer outro linux, mas eu usei este porque facilita bastante hehe.

Neste how-to também instalaremos um servidor MySQL neste Ubuntu, para armazenar os registros de ligação em banco de dados.

Em muitos casos irei explicar o que estamos fazendo. Farei isto colocando a explicação do lado do comando, e entre parênteses. Por exemplo, quando você ver:

make (compilar a biblioteca)

você só executa “make”, a parte “(compilar a biblioteca)” é o comentário explicativo ;).

Primeiramente precisamos instalar alguns pacotes que não são instalados por padrão.

Efetue login no servidor, e depois execute “sudo su”. A senha que será solicitada será a sua própria senha. Com isto, você se tornará usuário “root”, possibilitando e facilitando a execução dos comandos necessários. Abaixo, a lista de comandos para instalar os pacotes. Em alguns casos, o “apt” solicitará confirmação do download, pois será feito download de mais de um pacote. Basta digitar “s” e pressionar “enter” (eu instalei o Ubuntu em português… se você preferiu instalar em inglês, digite “y” ao invés de “s”).

apt-get install gcc
apt-get install build-essential
apt-get install libncurses5-dev
apt-get install m4
apt-get install bison
apt-get install zlib1g-dev
apt-get install libssl-dev
apt-get install libpng12-dev
apt-get install libslang2-dev
apt-get install libnewt-dev
apt-get install cvs
apt-get install doxygen

Também iremos instalar o subversion, para que possamos efetuar o download da interface web de configuração do asterisk, o asterisk-gui:
apt-get install subversion

E já que estamos instalando um montão de coisas :P, vamos aproveitar e instalar o MySQL:
apt-get install mysql-server

Agora, crie uma pasta temporária para armazenarmos os arquivos do asterisk. Vamos supor, “mkdir /asterisk_temp”.

Efetue o download do asterisk, asterisk-addons, libpri e do driver “dahdi” (versão completa) e salve tudo na pasta temporária. Abaixo, comandos para efetuar o download do próprio servidor, mas seria interessante acessar o site do asterisk para verificar por versões mais novas.

wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.3.0+2.3.0.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.31.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.4.11.tar.gz

Também já vamos efetuar o download do asterisk-gui. O comando abaixo irá efetuar o download, e salvará o conteúdo na subpasta “asterisk-gui”:

svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0/ asterisk-gui

Caso queira gerar um pacote do asterisk-gui, para ter um backup, execute o comando abaixo após o download ter sido concluído:

tar -jcvf asterisk-gui-2.0.tar.bz2 ./asterisk-gui

Agora, vamos à instalação destes pacotes:

1) libpri

tar -zxvf libpri-1.4.11.tar.gz (descompactar o arquivo)
cd libpri-1.4.11 (entrar na pasta)
make (compilar a biblioteca)
make install (instalar a biblioteca)
cd .. (voltar pra pasta enterior)

2) dahdi

tar -zxvf dahdi-linux-complete-2.3.0+2.3.0.tar.gz
cd dahdi-linux-complete-2.3.0+2.3.0
make
make install
make config (alguns pacotes tem comandos “make” adicionais…)
cd ..

Caso você tenha uma placa para link de telefonia digital (o canal “E1”, por exemplo), também precisa efetuar os seguintes passos:
pico /etc/dahdi/system.conf (editar este arquivo; efetue as alterações necessárias, conforme indicado no manual da sua placa)
pico /etc/modules (editar este arquivo; retire os módulos desnecessários, colocando um “;” no início da linha para, assim, torná-las “comentários” que serão ignorados)

3) asterisk

tar -zxvf asterisk-1.4.31.tar.gz
cd asterisk-1.4.31
./configure (alguns pacotes precisam ser “configurados” antes de serem compilados)
make
make install
make samples (instala os arquivos de configuração iniciais)
make progdocs
cd ..

4)  MySQL Client (a partir do fonte)

O asterisk-addons não reconhece o cliente do Mysql instalado com o “apt-get”.
Acesse o site do Mysql e baixe o código fonte da mesma versão que você instalou (por exemplo. 5.1.58).
Instale o cliente com:

tar -zxvf mysql-5.1.58.tar.gz
cd mysql-5.1.58
./configure –without-server
make
make install
cd ..

5) asterisk-addons

tar -zxvf asterisk-addons-1.4.11.tar.gz
cd asterisk-addons-1.4.11
./configure
make
make install
make samples (instala os arquivos de configuração iniciais)
cd ..

Edite o arquivo “/etc/asterisk/modules.conf” e, bem ao final do arquivo, adicione a seguinte linha:

load => cdr_addon_mysql.so

Agora, crie um arquivo chamado “MySQL-script” (por exemplo), e coloque o conteúdo abaixo dentro dele:

————————COPIE A PARTIR DA LINHA ABAIXO
create user asterisk;
update user set password=password(‘ALTERE-ESTA-SENHA’) where user=’asterisk’;
create database asterisk;
grant insert,select on asterisk.* to asterisk@’%’;
flush privileges;

USE asterisk;

CREATE TABLE `cdr` (
`calldate` 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 ”
);

ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
————————COPIE SOMENTE ATÉ A LINHA ACIMA

Este é um script para criação do usuário e banco de dados que o asterisk utilizará, no MySQL, para o registro das ligações.

Se você não alterou nada no início do script, tanto o usuário quanto o nome do banco serão “asterisk”. A senha do usuário ficaria “ALTERE-ESTA-SENHA” :P.

Após ter criado o arquivo com o conteúdo acima, execute o script com:

mysql -p -u root < ./MySQL-script

A senha que será solicitada é a do usuário “root” do MySQL.

Feito isto, continuamos com a configuração dos addons. Edite o arquivo “/etc/asterisk/cdr_mysql.conf”.

Altere a seção “[global]” para que fique como o exemplo abaixo (retire os comentários se necessário):

[global]
hostname=localhost
dbname=asterisk
table=cdr
password=ALTERE-ESTA-SENHA
user=asterisk
port=3306
sock=/var/run/mysqld/mysqld.sock
userfield=1

Para retirar os comentários, basta apagar o “;” do início da linha.

Caso você tenha alterado o nome do usuário, banco ou tabela, faça as alterações necessárias ;).

Também precisamos editar o arquivo “/etc/asterisk/res_mysql.conf”. Altere a seção “[general]” para que fique como o exemplo abaixo (retire os comentários se necessário):

[general]
dbhost = 127.0.0.1
dbname = asterisk
dbuser = asterisk
dbpass = ALTERE-ESTA-SENHA
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock

E como vamos salvar os registros em banco de dados, vamos desativar o armazenamento deles em “texto puro”, que vem ativo por padrão. Para isto, edite o “/etc/asterisk/cdr.conf”. Comente (coloque um “;” no início da linha) todas as linhas da seção “[csv]”, incluindo a própria linha “[csv]”.

5) asterisk-gui

cd asterisk-gui
./configure
make
make install

Edite o “/etc/asterisk/http.conf”. Na seção “[general]”, altere as linhas mencionadas abaixo, deixando-as como informado (retire os comentários se necessário):

enabled = yes
enablestatic = yes
bindaddr=0.0.0.0

Também é necessário editar o “/etc/asterisk/manager.conf”.

Nele, na seção “[general]”, altere as linhas indicadas abaixo (retire os comentários se necessário):

enabled = yes
webenabled = yes

Além disto, adicione as seguintes linhas bem no final do arquivo:

[admin] (“admin” será o usuário de acesso à interface web)
secret = SENHAsecreta (esta será a senha do usuário)
read = system,call,log,verbose,command,agent,config (com estas opções, poderemos visualizar todas as configurações possíveis)
write = system,call,log,verbose,command,agent,config (com estas opções, poderemos alterar todas as configurações possíveis)

Agora precisamos criar um arquivo de inicialização para o asterisk, para que ele inicie juntamente com o linux. Crie o arquivo “/etc/init.d/asterisk” e coloque o seguinte conteúdo no mesmo:

————————COPIE A PARTIR DA LINHA ABAIXO
#! /bin/sh -e
#### BEGIN INIT INFO
# Provides:          asterisk
# Required-Start:    $mysql
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: Asterisk Server
# Description:       Asterisk Server
### END INIT INFO
#
# Author:    Huff
#
set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/asterisk

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case “$1” in
start)
log_daemon_msg “Starting” “asterisk”
$DAEMON
log_end_msg $?
;;
stop)
log_daemon_msg “Stopping” “asterisk”
$DAEMON -rx “stop now”
log_end_msg $?
;;
restart)
$0 stop
$0 start
;;
reload)
log_daemon_msg “Reloading config for” “asterisk”
$DAEMON -rx “module reload”
log_end_msg $?
;;
*)
echo “Usage: /etc/init.d/asterisk {start|stop|restart|reload}”
exit 1
;;
esac

exit 0
————————COPIE SOMENTE ATÉ A LINHA ACIMA

Altere as permissões do arquivo, para que ele possa ser executado:

chmod 755 /etc/init.d/asterisk

Agora, vamos adicionar o script à inicialização do servidor:

update-rc.d -f asterisk defaults

Agora já vamos iniciar o asterisk :):

/etc/init.d/asterisk start

Agora, abra um navegador de internet em algum computador que tenha acesso ao servidor asterisk, pela rede.

Acesse o endereço “http://Endereco.IP.do.Servidor:8088/asterisk/static/index.html” (obs: altere “Endereco.IP.do.Servidor” pelo Endereço IP do Servidor :P).

Efetue login com o usuário (admin) e a senha (SENHAsecreta).

Neste primeiro acesso o asterisk-gui irá preparar os arquivos de configuração, adaptando-os para utilização com esta interface web. Após ele ter concluído o processo, saia da interface clicando no botão “logout” localizado bem acima à direita.

Volte para o servidor (SSH é muito útil nessas horas :D) e edite o arquivo “/etc/asterisk/extensions.conf”.

Nele, comente as seções indicadas abaixo (com isto, quero dizer que você deve comentar todas as linhas que estiverem dentro de cada seção, bem como a linha que indica a seção, como no caso do “[csv]” visto anteriormente):

[dundi-e164-canonical]
[dundi-e164-customers]
[dundi-e164-via-pstn]
[dundi-e164-local]
[dundi-e164-switch]
[dundi-e164-lookup]
[macro-dundi-e164]
[iaxtel700]
[iaxprovider]
[trunkld]
[trunklocal]
[trunktollfree]
[international]
[longdistance]
[local]
[macro-trunkdial]
[macro-stdPrivacyexten]
[macro-page]
[demo]
[page]

Após ter feito isto (eu sei, é bastante coisa, mas são coisas desnecessárias, muitas delas criadas apenas para testes, o melhor é remover mesmo ;)), vamos fazer o asterisk recarregar a configuração:

/etc/init.d/asterisk reload

Pronto! Agora é só configurar o asterisk, seja editando os arquivos de configuração manualmente, ou pela interface web ;).

Em breve, mais dicas de asterisk!

 Posted by at 22:34

  7 Responses to “Instalando um servidor asterisk v1.4”

  1. Huffs, a placas PCIIou PCI-express para utilização com links de telefonia digital e ATAs são caras? é obrigatório comprar as a Asterisk ou tem genéricas no mercado?

  2. Opa.

    O “fabricante” do asterisk é a Digium. Ela é focada em fabricar hardware (placas) para telefonia. Até onde sei, eles nem possuem ATA’s 🙂
    Mas existem mais fabricantes cujas placas são compatíveis com asterisk sim.
    No contato que tive, foram utilizados ATA’s Linksys (PAP2T-NA para ramais e SPA400-NA para linhas analógicas), e a placa para o canal E1 (linhas digitais) foi a TE121P (PCI-express).

    Funciona que é uma beleza 🙂
    []’s

  3. ahhh esqueci de responder quanto ao preço…
    Depende do fabricante…
    Uma placa para apenas 1 canal E1 vai dos R$1.000,00 aos R$3.000,00. A placa da própria Digium é das mais carinhas…

    []’s

  4. Eu fiz todas as coisas que ensinou mas meu asterisk não inseriu as ligações no mysql, vc sabe o que pode ser???????/ me manda um email – ivanchronus@hotmail.com

  5. Olá!

    Você pode dar uma olhada nos arquivos do /var/log/asterisk, eles podem dar alguma pista (caso tenham registrado algum erro).
    Também dê uma revisada nas configurações de conexão com o MySQL, de repente o usuário/senha estão errados, ou até o nome do banco…
    Outra dica: quando montei meu servidor pela primeira vez, também não estava funcionando… Formatei e reinstalei tudo, e deu certo 😛 (suponho que eu tenha esquecido de algo hehehe).

    []’s

  6. Olá….

    Sou novato nesse assunto mais aqui na empresa possuimos uma central telefonica analogica…..eu sou obrigado a troca a central ? efetuando essas indicações que vc fez? o que eu realmente precisaria para deixar rodando aqui…. Podes me ajudar com algumas dicas .

    Agradeço.

  7. Olá!

    Você não precisaria “obrigatoriamente” trocar a central, teria como fazer o asterisk “conversar” com tua central atual, mas acho que não seria uma solução “ideal”…
    O melhor mesmo seria passar tudo para o asterisk e desativar a central antiga ;).

    []’s

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.