Asterisk realtime e Trunk

Instalação do Asterisk em realtime utilizando o MySQL e Trunk.

[ Hits: 39.616 ]

Por: Ulisses Cantanhede dos Santos em 19/07/2010 | Blog: https://www.axiatec.com.br/


Asterisk realtime e Trunk



Passo 1 - Instalar Apache, PHP e MySQL (sintaxe para Debian):

# aptitude install apache2 php5 mysql-server-5.0 mysql- client php5-mysql libapache2-mod-php5

Passo 2 - Instalar as bibliotecas de programação e desenvolvimento para o Debian, como GCC (compilador C e C++) e a biblioteca MySQL.

Instalação do GCC (GNU Compiler Collection - chamado usualmente por GCC, é um conjunto de compiladores de linguagens de programação produzido pelo projeto GNU), se dá pelo seguinte comando:

# aptitude install gcc g++ g++-4.1 libmysqlclient15-dev
# aptitude install libedit-dev libedit2 libssl-dev zlib-bin zlib1g-dev mpg123 libnewt0.52 newt-tcl libnewt-dev build-essential perl


Passo 3 - Instalar o Asterisk e seus pacotes, sendo esta a ferramenta principal escolhida para o funcionamento do projeto em VoIP. Criar o diretório Asterisk para armazenamento dos pacotes necessário do Asterisk:

# mkdir -p /usr/src/asterisk

Baixando os pacotes no diretório /usr/src/asterisk. Antes utilizaremos o comando cd para acessar o diretório:

# cd /usr/src/asterisk/

Baixando os pacotes:

asterisk-1.4.26.2.tar.gz - contém aplicações, funções, canais de comunicação e todas as funcionalidades que formam o Asterisk.

# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.2.tar.gz

asterisk-addons-1.4.9.tar.gz - são os módulos adicionais, todas as aplicações e funcionalidades que não seguem a licença GPL, como funções de conectividade com os bancos de dados, formato de áudio MP3 e canal de comunicação H.323.

# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.4.9.tar.gz

Descompactar os pacotes:

# tar -xvvf asterisk-1.4.26.2.tar.gz

LibPri - Biblioteca responsável pela sinalização ISDN/PRI, só precisa ser compilado e instalado em caso de uso de placa E1/T1.

DAHDI (antigo Zaptel) - Contém drivers para placas de comunicação da Digium ou seus clones. Em 2008, o DAHDI substituiu por problema com patente pelo nome Zaptel.

Passo 4 - Instalar o Asterisk

Após o processo de descompactação do Asterisk será criado o diretório Asterisk-1.4.26.2, acesse esse diretório com o comando cd e siga os passos seguintes.

# cd asterisk-1.4.26.2
# ./configure
# make
# make install
# make samples


Instalar módulos adicionais com funções que não seguem a licença GPL, como exemplo: MySQL, protocolo H323 e MP3 para áudio.

Antes precisaremos descompactar os módulos:

# cd /usr/src/asterisk/
# tar -xvvf asterisk-addons-1.4.9.tar.gz


Instalando os módulos:

# ./configure
# make
# make install
# make samples


Passo 5 - Instalar o aplicativo PhPMyAdmin para gerenciamento do MySQL e criação do banco de ramais para controle de bilhetes. O PhPMyAdmin é um aplicativo que será utilizado via web.

# aptitude install phpmyadmin

Acessando o browser para configurar o Phpmyadmin para gerenciamento do Asterisk.

Abra uma nova pagina web entre com endereço IP conforme abaixo:

http://10.1.1.4/phpmyadmin/

Entre com o usuário root e senha predefinida na instalação do MySQL (senha: Asterisk).

Após criar o banco de dados asterisk com a senha de root "asterisk", criar as tabelas no MySQL.

Criar a tabela CDR (Call Detail Record), execute os comandos abaixo na janela do SQL: CDRs são arquivos para controle de tarifação e bilhetagem.

Estrutura da tabela cdr:

CREATE TABLE IF NOT EXISTS `cdr` (
   `id` int(5) NOT NULL auto_increment,
   `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 '',
   PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=27950;

Criar a tabela Config_SIP para o funcionamento do SIP com controle do tempo de chamadas.

Estrutura da tabela "config_sip":

CREATE TABLE IF NOT EXISTS `config_sip` (
   `id` int(11) NOT NULL auto_increment,
   `cat_metric` int(11) NOT NULL default '0',
   `var_metric` int(11) NOT NULL default '0',
   `commented` int(11) NOT NULL default '0',
   `filename` varchar(128) NOT NULL default '',
   `category` varchar(128) NOT NULL default 'default',
   `var_name` varchar(128) NOT NULL default '',
   `var_val` varchar(128) NOT NULL default '',
   PRIMARY KEY (`id`),
   KEY `filename_comment` (`filename`,`commented`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=148;

Adicionar valores aos campos da tabela config_sip para o funcionamento do SIP:

INSERT INTO `config_sip` (`id`, `cat_metric`, `var_metric`, `commented`, `filename`, `category`, `var_name`, `var_val`) VALUES (126, 0, 0, 0, 'sip.conf', 'general', 'port', '5060'), (127, 0, 1, 0, 'sip.conf', 'general', 'bindaddr', '0.0.0.0'), (128, 0, 2, 0, 'sip.conf', 'general', 'context', 'default'), (129, 0, 3, 0, 'sip.conf', 'general', 'disallow', 'all'), (130, 0, 4, 0, 'sip.conf', 'general', 'allowgest', 'no'), (131, 0, 5, 0, 'sip.conf', 'general', 'videosupport', 'yes'), (132, 0, 6, 0, 'sip.conf', 'general', 'nat', 'yes'), (133, 0, 7, 0, 'sip.conf', 'general', 'externip', '0.0.0.0'), (134, 0, 8, 0, 'sip.conf', 'general', 'LOCALNET', '0.0.0.0/0.0.0.0'), (135, 0, 9, 0, 'sip.conf', 'general', 'pedantic', 'no'), (136, 0, 10, 0, 'sip.conf', 'general', 'rtcachefriends', 'no'), (137, 0, 11, 0, 'sip.conf', 'general', 'echocancel', 'yes'), (138, 0, 12, 0, 'sip.conf', 'general', 'language', 'br');

Criar tabela de ramais sip_buddies, para cadastro e gerenciamento de ramais.

Estrutura da tabela "sip_buddies":

CREATE TABLE IF NOT EXISTS `sip_buddies` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default '',
`accountcode` varchar(20) default NULL,
`amaflags` varchar(7) default NULL,
`callgroup` varchar(10) default '1',
`callerid` varchar(80) default NULL,
`canreinvite` char(3) default 'no',
`context` varchar(80) default 'default',
`defaultip` varchar(15) default NULL,
`dtmfmode` varchar(7) default 'rfc2833',
`fromuser` varchar(80) default NULL,
`fromdomain` varchar(80) default NULL,
`fullcontact` varchar(80) default NULL,
`host` varchar(31) default 'dynamic',
`insecure` varchar(4) default NULL,
`language` char(2) default NULL,
`mailbox` varchar(50) default NULL,
`md5secret` varchar(80) default NULL,
`nat` varchar(5) default 'yes',
`deny` varchar(95) default NULL,
`permit` varchar(95) default NULL,
`mask` varchar(95) default NULL,
`pickupgroup` varchar(10) default '1',
`port` varchar(5) NOT NULL default '',
`qualify` char(3) default NULL,
`restrictcid` char(1) default NULL,
`rtptimeout` char(3) default NULL,
`rtpholdtimeout` char(3) default NULL,
`secret` varchar(80) default NULL,
`type` varchar(6) NOT NULL default 'friend',
`username` varchar(80) NOT NULL default '',
`disallow` varchar(100) default 'all',
`allow` varchar(100) default 'gsm;ulaw;alaw',
`musiconhold` varchar(100) default NULL,
`regseconds` int(11) NOT NULL default '0',
`ipaddr` varchar(15) default NULL,
`regexten` varchar(80) default NULL,
`cancallforward` char(3) default 'yes',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED AUTO_INCREMENT=96;

Passo 6 - Configurar o arquivo cdr_mysql.conf

Este arquivo é responsável por conectar a tabela CDR do Asterisk ao banco de dados MySQL para arquivamentos de todos as chamadas com seu tempo de duração, ramal de origem e ramal de destino, quantidade de tentativas, chamadas executadas, entre outros.

Acessar o diretório /etc/asterisk (este diretório foi criando automaticamente na instalação do Asterisk) e entrar com os comandos abaixo:

# cd /etc/asterisk/

Note que agora utilizaremos o aplicativo VIM instalado no início do processo de instalação do Asterisk com o comando abaixo:

# vi cdr_mysql.conf

Será aberta uma janela de edição no modo vim, onde será necessário alterá-lo para que fique da seguinte forma:

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

Passo 7 - Configurar o arquivo extconfig.conf

Este arquivo faz um link dinâmico ao banco MySQL. Editar o arquivo extconfig.conf:

# vi extconfig.conf

A janela de modo de edição vim abrirá para edição do arquivo extconfig.conf. Adicione as linhas abaixo no final do arquivo.

sipusers => mysql,Asterisk,sip_buddies
sippeers => mysql,Asterisk,sip_buddies
sip.conf => mysql,Asterisk,config_sip

Passo 8 - Configurar o arquivo extension.conf

Este arquivo é responsável pelo plano de discagem do Asterisk.

Deletar arquivo atual extesions.conf:

# rm -f extesions.conf

Crie o arquivo extesions.conf:

# vi extensions.conf

Adicione todo o conteúdo abaixo no novo arquivo extensions.conf:

[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no
[globals]
[default]
exten => _3XX,1,Dial(SIP/${EXTEN},20,tT)
exten => _3XX,n,Hangup()

Passo 9 - Editar o arquivo res_mysql.conf

Arquivo responsável por conectar o Asterisk ao banco MySQL. Edite o arquivo com o comando "vi" e adicione as linhas abaixo:

Editar o arquivo res_mysql.conf:

# vi res_mysql.conf

Editando o arquivo res_mysql.conf, adicionado as linhas para conexão com o banco de dados:

[general]
dbhost = localhost
dbname = asterisk
dbuser = root
dbpass = asterisk
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock

Passo 10 - Criar ramais no banco MySQL utilizando a aplicação phpmayadmin.

Na página http://10.1.1.4/phpmyadmin, selecionar o banco Asterisk.

Selecione a tabela sip_buddies.

Preencher os campos Name, Context, Secret, Type e Username.
  • Name = Número do ramal.
  • Context = Contexto do plano de discagem. Preencher com default.
  • Secret = Senha que permite o usuário efetuar chamadas, esta senha pode ser configurada conforme requisitos impostos pelo administrador. Para criação de senha automática é necessário criar um script que permita alteração pelo usuário.
  • Type = Tipo de permissões que o usuário tem para efetuar ou receber chamadas, existem três tipos disponíveis:
    Friend - Permite receber e efetuar chamadas
    Peer - Somente efetua chamadas
    User - Permissão só para recebimento de chamadas

Passo 11 - Executando o Asterisk

Esta parte tem como propósito verificar se todos os processos do Asterisk estão funcionais.

Verificar se os pacotes do Asterisk estão completos:

# asterisk -vvvvvv

Ativar o Asterisk:

# asterisk -g

Visualizar via console chamadas em tráfego no servidor:

# asterisk -rvvv

    Próxima página

Páginas do artigo
   1. Asterisk realtime e Trunk
   2. Configurando a comunicação Asterisk entre dois servidores (Trunk)
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Teste de estresse entre software livre e soluções proprietárias

Instalação do PostgreSQL, Apache2 e PHP8 no Debian Buster 10 e no Stretch 9

Instalar o driver para ATI Technologies Inc RS482 [Radeon Xpress 200M]

zsh (Z shell) - Uma alternativa ao bash

AirPlay Receptor em Raspberry Pi

  
Comentários
[1] Comentário enviado por tutu_bh em 26/07/2010 - 11:43h

Amigo ulisses.santos antes de qualquer coisa gostaria de parabenizar pela iniciativa e qualidade do artigo, com sua autorizacao gostaria de fazer algumas observacoes que sao uteis na implentacao do ARA.

1º Tive que acresentar os modulos no arquivo /etc/asterisk/modules.conf

load => cdr_addon_mysql.so
load => res_config_mysql.so

so depois disso ele comecou a fazer a busca dos ramais no mysql.

2º No arquivo res_mysql.conf.

o contexto deve ser alterado para [asterisk] ao inves de [default] .

3º outro parametro que pode ser alterado no sql e no numero de casas do campo language, esta setado apenas 2 impossibilitado o pt_br

4º acrescentei o campo " allowsubscribe " como NO padrao para evitar toda hora a mensagem:

NOTICE[14725]: chan_sip.c:21470 handle_request_subscribe: Received SIP subscribe for peer without mailbox:

5º o campo "qualify" da tabela sip_buddies deve ser retirado ou setado como NULL pois o parametro "qualify" no Asterisk Realtime não é ultilizado, deve-se substituir pelo rtcachefriends = yes/no .

Ou ira ocorre o erro:
WARNING[14705]: chan_sip.c:24215 build_peer: Qualify is incompatible with dynamic uncached realtime. Please either turn rtcachefriends on or turn qualify off on peer 'ramal' .


Estava pensando depois para complementar seu artigo fazer um sobre filas no mysql.

qualquer duvida estou a disposicao. e espero ter ajudado alguem com essas dias.

qualquer contato profissional ou network ..rs..

alessandro.santos{arroba}teknisa.com
abraços;

OBS: para quem estar comecando, recomendo o livro " Asterisk na pratica " da editora " novatec " o auto é " Alexandre Keller", eu tambem fiz o curso na 4linux em SP. recomendo mas o curso tem 2 modulos sendo que poderia ser somente 1 pois o segundo modulo na pratica se aprende tranquilamente...

[2] Comentário enviado por ulisses.santos em 26/07/2010 - 13:12h

Valeu pela contribuição, eu usei este livro que você esta indicando para fazer a minha monografia muito bom mesmo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts