Correio de Voz no Mysql

Nesse artigo veremos como armazenar as mensagens do correio de voz do Asterisk(Voicemail) em uma base de dados MySQL.

voicemail

Para que tudo funcione corretamente devemos instalar três pacotes além do MySQL antes da compilação do Asterisk.

Para verificar se os módulos estão compilados e carregados no Asterisk vamos a console:

asterisk -rvvvvvvvvvvvvv

CLI> module show like odbc
Module                                       Description                                         Use Count
res_config_odbc.so             Realtime ODBC configuration              0
res_odbc.so                            ODBC resource                                           0
func_odbc.so                          ODBC lookups                                            0
cdr_adaptive_odbc.so       Adaptive ODBC CDR backend             0
cdr_odbc.so                            ODBC CDR Backend                                 0
5 modules loaded

Isto indica que temos os módulos no Asterisk. Se não aparecer algo parecido temos que seguir os seguintes passos:

  • parar Asterisk

/etc/init.d/asterisk stop

  • Instalar unixODBC e o conector MySQL para ODBC

yum install mysql-connector-odbc unixODBC unixODBC-devel

  • Instalar a library ltdl

yum install libtool-ltdl-devel libtool-ltdl

  • voltar a instalar o asterisk

cd /usr/src/asterisk-1.6.0.1

make distclean

./configure

make menuselect

  • ter certeza que selecionou a opção ODBC_STORAGE

odbc

  • Para sair pressione  a tecla X para salvar as configurações

make

make install

make samples

  • Iniciamos novamente o Asterisk e verificamos através da console se os módulos estão ativos como fizemos acima

/etc/init.d/asterisk start

Agora temos que criar a base de dados MySQL onde vamos criar uma tabela para armazenar os dados relacionados aos correios de voz. Primeiro um restart no servidor MySQL

/etc/init.d/mysqld restart

criamos a base de dados

mysqladmin -u root -p create voicemail

criamos a tabela voicemessages

mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is xx
Server version: 5.x.x

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.

mysql> use voicemail
Database changed
mysql> CREATE TABLE `voicemessages` (
`id` int(11) NOT NULL auto_increment,
`msgnum` int(11) NOT NULL default ’0′,
`dir` varchar(80) default ”,
`context` varchar(80) default ”,
`macrocontext` varchar(80) default ”,
`callerid` varchar(40) default ”,
`origtime` varchar(40) default ”,
`duration` varchar(20) default ”,
`mailboxuser` varchar(80) default ”,
`mailboxcontext` varchar(80) default ”,
`recording` longblob,
PRIMARY KEY  (`id`),
KEY `dir` (`dir`)
) ENGINE=InnoDB;

Query OK, 0 rows affected (0.13 sec)

Agora criamos um novo usuario e damos todos os prvilegios para manipular a base de dados

mysql> GRANT ALL PRIVILEGES ON voicemail.* TO mestre IDENTIFIED BY ‘mestre’

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

mysql> quit
Bye

Temos nossa base de dados e sua tabela com um usuario com total previlegio para manipula-la.

Agora temos que criar dois arquivos no diretorio /etc para conectar a ODBC com o MySQL

nano /etc/odbcinst.ini

e adicionamos essas linhas

[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc3.so
Setup           = /usr/lib/libodbcmyS.so
FileUsage       = 1

No meu caso estou utilizando o diretorio /usr/lib, pois meu servidor é 32bits. Caso o seu servidor seja 64bits os diretorios seriam /usr/lib64

nano /etc/odbc.ini

[asterisk-connector]
Description         = MySQL connection to ‘asterisk’ database
Driver              = MySQL
Database         = voicemail
Servername     = localhost
UserName        = mestre
Password         = mestre
Port                 = 3306
Option             = 3

Como pode perceber aqui estão todos os dados do banco recém criado (base de dados, host, usuario e senha). Se atente a chave [asterisk-conector] pois vamos necessitar para configuração do arquivos res_odbc.conf

Agora modificamos o arquivo extconfig.conf para dizer ao Asterisk que agora os dados estão em realtime.

nano /etc/asterisk/extconfig.conf

adicionamos na parte final do arquivos esta linha:

voicemail => odbc,asterisk,voicemessages

salvamos o arquivo

e passamos para o voicemail

nano /etc/asterisk/voicemail.conf

procurar por esta duas linhas e descomenta-las retirando o ponto e virgula.

odbcstorage=asterisk
odbctable=voicemessages

como pode notar odbcstorage é o que indicamos no extconfig.conf e voicemessages é a tabela da base de dados voicemail

salvamo o arquivos e passamos para o próximo

nano /etc/asterisk/res_odbc.conf

adicionar/modificar estas linhas:

[asterisk]
enabled => yes
dsn => asterisk-connector
username => mestre
password => mestre
pre-connect => yes

o dsn é a chave que vimos acima

agora que temos tudo configurado vamos iniciar o Asterisk

/etc/init.d/asterisk start

e verificar se tudo está funcionando

asterisk -rvvvvvvvvvvvvvvvv

CLI> odbc show

ODBC DSN Settings
—————–

Name:   asterisk
DSN:    asterisk-connector
Pooled: No
Connected: Yes

nos registros do Asterisk temos que encontrar estas linhas:

[Dec  5 14:01:59] NOTICE[18763] config.c: Registered Config Engine odbc
[Dec  5 14:02:00] NOTICE[18763] res_odbc.c: Connecting asterisk
[Dec  5 14:02:00] NOTICE[18763] res_odbc.c: res_odbc: Connected to asterisk [asterisk-connector]
[Dec  5 14:02:00] NOTICE[18763] res_odbc.c: Registered ODBC class ‘asterisk’ dsn->[asterisk-connector]
[Dec  5 14:02:00] NOTICE[18763] res_odbc.c: res_odbc loaded.

Agora para testar o sistema efetue alguma chamadas para alguns ramais e deixe um recado no correio de voz

Ótimo!!!

Caso você utilize o webmin ou phpmysqladmin pode verificar que na tabela voicemessages já possui os registros dos recados deixados nos testes.

Isso é tudo!

Abs,

Related Posts with Thumbnails

Deixe um comentario