Asterisk gravando ligações no MySQL

Para gravar os dados na tabela cdr do banco de dados MySQL , é preciso ajustar alguns parâmetros no Asterisk.

Instalação do Banco MySQL

Para instalar o MySQL, basta usar o comando abaixo.

 apt-get install mysql-server-5.0

Criação do usuário e strutura

Após instalar o Banco MySQL, entrar com o usuário root e executar o script abaixo.

 CREATE DATABASE asteriskcdrdb; 

 GRANT INSERT 
  ON asteriskcdrdb.* 
  TO asteriskcdruser@localhost 
  IDENTIFIED BY 'yourpassword'; 

 USE asteriskcdrdb; 

 CREATE TABLE cdr ( 
 `id` bigint NOT NULL auto_increment PRIMARY KEY,
 `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 '', 
 `userfield` varchar(255) NOT NULL default '',
 `enviado`char(1) NOT NULL default 'N'
 ) ENGINE = innodb; 

 ALTER TABLE `cdr` ADD INDEX ( `calldate` ); 
 ALTER TABLE `cdr` ADD INDEX ( `dst` );

Ajustar o cdr_mysql.conf

Criar um arquivo de configuração informando a senha do Banco MySQL.
Exemplo: /etc/asterisk/cdr_mysql.conf

 ; 
 ; Note - if the database server is hosted on the same machine as the 
 ; asterisk server, you can achieve a local Unix socket connection by 
 ; setting hostname=localhost 
 ; 
 ; port and sock are both optional parameters.  If hostname is specified 
 ; and is not "localhost", then cdr_mysql will attempt to connect to the 
 ; port specified or use the default port.  If hostname is not specified 
 ; or if hostname is "localhost", then cdr_mysql will attempt to connect 
 ; to the socket file specified by sock or otherwise use the default socket 
 ; file. 
 ; 
 [global] 
  hostname=localhost 
  dbname=asteriskcdrdb 
  password=yourpassword 
  user=asteriskcdruser 
  ;port=3306 
  ;sock=/tmp/mysql.sock 
  ;userfield=1

Ajustar o modules.conf

Editar o /etc/asterisk/modules.conf e acrescentar

 load cdr_addon_mysql.so

e reinicializar o asterisk para carregar o módulo.

Verificando a implenetação

Entre no asterisk com asterisk -r e dê um restart now .

Entre novamente, e verifique:

asterisk*CLI> cdr mysql status
Connected to asteriskcdrdb@localhost, port 3306 using table cdr for 8 seconds.
Wrote 0 records since last restart.
asterisk*CLI>

Pronto, seu asterisk já está gravando o CDR em MySQL.

Obs: se voce for compilar o asterisk, lembre-se se acrescentar o “add on” e a biblioteca do MySQL (libmysqlclient15-dev).

BillVOIP – Tarifador Ligações VOIP – Asterisk

O sistema consiste em ler a tabela “cdr”, do banco de dados MySQL, na maquina onde está instalado o Asterisk e trazer as ligações para o servidor central onde serão tarifadas conforme regras pre-estabelecidas.

  • Conceder poderes para o usuario ler a tabela ‘cdr’ remotamente;

grant all on asteriskcdrdb.cdr to ‘cdr’@’%’ identified by ‘senha’;

flush privileges;

  • Alterar a tabela ‘cdr’ para conter mais dois campos;

alter table asteriskcdrdb.cdr add column enviado char(1) not null default ‘N’;
alter table asteriskcdrdb.cdr add column id bigint(20) NOT NULL auto_increment, add primary key (id);