Archive

Posts Tagged ‘Asterisk’

Curso Basico Asterisk Parte 1

September 20th, 2009 admin 1 comment

Começa agora uma série de posts que vão ajudar a iniciar no universo do Asterisk .
Exclusivamente neste post não vou entrar em detalhes pela quantidade de material disponivel na net sobre esta parte do curso.
Conteudo do post:

Instalar e compilar o Asterisk
Entender o o plano de discagem
Criar um plano de discagem simples

Vamos aos trabalhos!

Comece baixando os codigos fonte do asterisk e do asterisk-addons

Descompacte os sources:

renato@v0id:# tar xvfz asterisk-1.4-current.tar.gz
renato@v0id:# tar xvfz asterisk-addons-1.4-current.tar.gz

Entre no diretório e compile:

renato@v0id:# cd asterisk-1.4.VERSAO
renato@v0id:# ./configure && make && make install && make config && make samples

Vamos ver se funcionou:

renato@v0id:# asterisk start

Vamos entrar na CLI para confirmar que funcionou.

renato@v0id:# asterisk -rvvv
Asterisk 1.4.22.1, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': Found
== Parsing '/etc/asterisk/extconfig.conf': Found
Connected to Asterisk 1.4.22.1 currently running on v0id (pid = 8935)
Verbosity is at least 3
v0id*CLI>

Agora que o Asterisk está instalado vamos começar o que interessa.
Montar um Dialplan!

O dialplan é o coração de qualquer sistema asterisk. Ele é quem direciona as ligações para os destinos corretos, ele quem chama as aplicações e scripts que veremos mais adiante. Por enquanto vamos focar no basico do dialplan, aprendendo esta parte tudo vai ficar mais claro depois.

Primeira mente deixe eu apresentar a voces o coração do Asterisk que é o extensions.conf, é la onde o dialplan é feito, é la que as coisas acontecem.. literalmente!

O dialplan contem quatro partes principais que são os contextos, as prioridades, as extensões e as aplicações.

O contexto são as seções do dialplan, isso é o separador, ele quem faz com que uma parte do dialplan não interfira na outra. Por exemplo se voce abrir o seu arquivo extensions.conf irá encontrar logo no inicio o contexto [general]. Isso! Palavras entre colchetes são os contextos. o que define onde começa e acaba cada sessão.

As extensões são as instruções que seu sistema deverá executar em determinada situação, deixa eu exemplificar pra ficar melhor.

exten => 6010,1,Answer()
exten => 6010,2,Playback(goodbye)
exten => 6010,3,Hangup()

Neste exemplo quando colocado dentro do contexto [default] ao receber uma ligação na extensão 6010 o primeiro passo é atender(Answer()) deepois tocar o arquivo goodbye(Playback()) e depois desligar(Hangup()).

A sintaxe é a seguinte: exten => EXTENSAO,PRIORIDADE,APPLICACAO

As prioridades são as sequências de números que controlam cada passo da ação. Cada prioridade chama uma aplicação.

As aplicações são quem executam as ações no canal especifico que foi chamado. No exemplo acima as aplicações usadas foram Answer, Playback e Hangup. Atender, Tocar e Desligar respectivamente. :D

Outra parte importante do sistema são os arquivos referentes as tecnologias, o sip.conf e o iax.conf. Os dois são bem parecidos exceto pelo fato de um tratar da tecnologia Sip e a outra IAX

Não vamos entrar nos detalhes destes arquivos neste post, vou dedicar um post somente para os arquivos de configuração.

O importante no momento é saber como configurar um canal SIP ou IAX para ver o dialplan funcionando. Nada melhor do que ver as coisas funcionando para estigar a curiosidade.

Vamos dar uma olhada no sip.conf

renato@v0id:# cat sip.conf
[general]
context=default
srvlookup=yes

[6000]
type=friend
secret=senha
qualify=yes
nat=yes
host=dynamic
canreinvite=no
context=default

[6001]
type=friend
secret=senha
qualify=yes
nat=yes
host=dynamic
canreinvite=no
context=default

renato@v0id:#

Desta forma temos duas extensões SIP que podemos usar em qualquer Voip Phone, a 6000 e 6001 ambas com a senha: 'senha'.

Configure dois sotfphones com estas extensões e tente ligar uma para outra.
Agora tente ligar pra extensão 6010. Voce deverá escutar a gravação goodbye e a ligação será desligada.
Deu pra entender mais ou menos como funciona?
Vou entrar nos detalhes destas configurações nos proximos posts.
Sugestões, dúvidas e comentários são bem vindos!

Categories: Asterisk Tags: , ,

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: , ,