Archive

Posts Tagged ‘mysql’

IVR utilizando Asterisk e MySQL

September 20th, 2009 admin 2 comments

Neste post vou dar um rápido exemplo de como fazer uma URA com consulta a banco de dados, neste caso o MySQL.
é um exemplo bem simples que foi meu primeiro teste com com mysql é legal para ver como funciona.. e apartir dele da pra criar várias coisas legais.

Uma atendente digital que solicita o numero de contrato do cliente, caso o numero esteja no banco de dados ele é direcionado para a fila de suporte.

Caso não esteja no banco é solicitado que digite novamente o numero e retorna pro comeco do dialplan.

Comecei criando um banco que no meu caso chamei de clientes:

root@v0id:#
mysql> create database clientes;
Query OK, 1 row affected (0.01 sec)
mysql> use clientes
Database changed

Depois criei a tabela chamada de contratos:

root@v0id:#
mysql> create table contratos ( id int(10) not null auto_increment, numero varchar(20) not null, nome varchar(20) not null, primary key (id));
Query OK, 0 rows affected (0.01 sec)
mysql>

Inseri um cliente com o numero de contrato 0000000010

root@v0id:#
mysql> INSERT into contratos SET id=0, numero="0000000010" ,nome="Renato Malta";
Query OK, 1 row affected (0.00 sec)
mysql> select * from contratos;
+----+------------+--------------+
| id | numero���� | nome�������� |
+----+------------+--------------+
|� 1 | 0000000010 | Renato Malta |
+----+------------+--------------+
1 row in set (0.00 sec)
mysql>

E vamos inserir isto no seu dialplan no contexto de entrada:

exten => s,1,Playback(bemvindo)
exten => s,2,MYSQL(Connect connid localhost root senha clientes)
exten => s,3,Playback(insiranumerodecontrato)
exten => s,4,Read(numerodecontrato,,10)
exten => s,5,MYSQL(Query resultid ${connid} SELECT\ id\ from\ contratos\ where\ numero=${numerodecontrato})
exten => s,6,MYSQL(Fetch fetchid ${resultid} idcontrato)
exten => s,7,GotoIf($["${idcontrato}" = ""]?9:8)
exten => s,8,Queue(suporte)
exten => s,9,Playback(contratonaoencontrado)
exten => s,10,Goto(3)

Segue uma breve explicação das linhas pelo número das prioridades:

1 – Mensagem de boas vindas. **
2 – Conexao com o servidor MySQL. *
3 – Mensagem solicitando o numero de contrato. **
4 – Parte em que o usuário digita algo para ser consultado no banco. Ex. numero do contrato.
5 – Consulta no banco se existe o id digitado.
6 – Armazena o resultado da consulta na variavel idcontrato.
7 – Testa se existe o numero do contrato ou se o resultado voltou em branco. Caso seja em branco ele pula para a prioridade 9 caso exista ele continua na prioridade 8.
8 – Direciona para a fila de atendimento do suporte por exemplo
9 – Mensagem informando que o numero de contrato nao foi encontrado. **
10 – Volta para a prioridade 3 onde ele escutara novamente a mensagem solicitando o numero de contrato.

*: É necessária a instalação do pacote de addons do Asterisk para que o comando MYSQL exista.
**: Os nomes das mensagens de voz nas prioridades 1, 3 e 9 nao existem por padrão no diretório do Asterisk. Crie as suas :D

Mais informações sobre o comando MYSQL do Asterisk: http://www.voip-info.org/wiki/view/Asterisk+cmd+MYSQL

Então é isso!

Dúvidas, sugestões?

Categories: Asterisk Tags: , ,