Sie sind auf Seite 1von 4

TUTORIAL

Asterisk descomplicado

VoIP com
Asterisk parte III
O sistema telefnico ultrapassado, presente at pouco tempo atrs nas empresas, prolfico
em cobranas: cada novo recurso ativado requer uma nova ativao de servio, com o preo
adicionado ao pagamento mensal. hora de mudar. hora de criar sua prpria central VoIP.
por Stefan Wintermeyer

a edio 73 da Linux Magazine, apresentamos a economia


com padres, o conceitos de
contextos, caller-IDs e telefonemas
via provedor. Nesta terceira parte
do tutorial, vamos abordar secretrias eletrnicas e sistema interativo
de resposta de voz (Interactive Voice
Response System, ou IVR) no Brasil
conhecido como URA (Unidade de
Resposta Audvel). Mos obra!

Secretria eletrnica

O Asterisk traz um sistema de mensagens de voz muito poderoso e fcil de


usar. A configurao feita no arquivo
voicemail.conf. Apague o arquivo de
exemplo com um rm /etc/asterisk/
voicemail.conf e crie um novo igual
ao apresentado na listagem 1.

Para ativar a secretria eletrnica


para todas as chamadas recebidas,
expanda seu plano de discagem
como na listagem 2. Se for usado
um comando Dial(), o dispositivo
chamado tocar para sempre. Porm, se voc utilizar um segundo
parmetro para o comando Dial(),
o Asterisk insistir somente durante
esse nmero de segundos no caso,
30 (linha 8 da listagem 2).
Fique vontade para medir os
segundos, mas no com um relgio
atmico; o Asterisk usar alguma
medida particular que resultar em
cerca de 30 segundos. Se o telefone
em questo no atender, o plano de
discagem passar para a prxima
prioridade (2, neste caso). Isto est
na linha 9, ou na linha 16 da lista-

Listagem 1: Arquivo voicemail.conf


01
02
03
04
05
06
07

58

[general]
format=wav
[default]
;Voicemailbox => senha,nome,e-mail
2000 => 1234,Hans Meier,hans.meier@exemplo.br
2001 => 1234,Uwe Klein,uwe.klein@exemplo.br

gem 2 no caso de telefonemas que

venham de fora. A extenso inicia a


aplicao com a segunda prioridade, VoiceMail(), que age como uma
secretria eletrnica. Ela precisa
ser configurada no arquivo voicemail.conf.

Consulta aos recados

Uma secretria eletrnica tambm


precisa ser consultada por seu proprietrio. Para isso, criamos a extenso
3000 em nosso plano de discagem. Se
voc telefonar para o nmero 3000
a partir de um telefone interno (ou
seja, de qualquer nmero no contexto
[meus-telefones]), o sistema ir solicitar a sua senha no nosso exemplo,
esta 1234. Digite-a e aguarde alguns
instantes. Em seguida, o sistema de
mensagens de voz vai informar que
voc pode ouvir as mensagens. Como
est configurado em nosso voicemail.
conf, o Asterisk ainda enviar uma
cpia de cada recado, no formato
WAV, para o e-mail especificado.
Na listagem 2, a extenso 3000
utiliza o parmetro ${CALLERID(num)}
na linha 11. Esta uma funo do
Asterisk para retornar o nmero de

www.linuxmagazine.com.br

VoIP com Asterisk | TUTORIAL

quem originou a chamada. No


confunda com a varivel ${EXTEN}
das outras linhas, que contm o nmero de destino.

nvel 1

URA

Vamos conhecer agora, o sistema


interativo de resposta de voz (Unidade de Resposta Audvel, ou URA).
A URA oferece uma maneira automatizada de encaminhar chamadas
e oferecer menus de voz com mais
competncia do que uma secretria
eletrnica. Para criar uma URA,
preciso, primeiramente, usar arquivos
de voz. No tocante ao Asterisk, isso
significa usar a aplicao Record().
Ao contrrio de Playback(), Record()
requer que o final do arquivo passado
esteja de acordo com o codec usado.
Com o plano de discagem da listagem 3, possvel chamar qualquer
extenso de 9900 a 9999 e pedir que
o usurio grave sua mensagem de
saudao (tambm chamada de
prompt de voz). Eles terminam a
mensagem pressionando a tecla #
ou ento aguardando. No entanto,
uma longa pausa no final de um
prompt de voz pode prejudicar o
uso de uma srie de componentes
de voz de uma s vez.
Para implementar uma URA em
conjunto com prompts de voz, utilizase a aplicao Background(arquivo). Ela
reproduz o menu de voz do arquivo
e escuta tons DTMF para prosseguir
no plano de discagem. O processamento dos tons do teclado ocorre
normalmente, como seria feito em
uma ligao comum. Se, durante o
uso da aplicao Background(), voc
pressionar as teclas [8][8], o Asterisk
buscar no contexto atual o que fazer com a extenso 88, iniciando a
partir da prioridade 1 desta extenso.
Um exerccio simples: crie os seguintes prompts de voz e armazeneos no diretrio /var/lib/asterisk/
sounds/:
 Entrada: Por favor disque um
nmero no seu telefone.

Linux Magazine #74 | Janeiro de 2011

nvel 2

Figura 1 O conceito de URA


do Asterisk funciona
somente dentro de um
contexto.

Figura 2 Graas ao Goto, um nico

dgito em um menu permite


encaminhar o usurio a outro
contexto.

Listagem 2: Arquivo extensions.conf


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

[outros]
[meus-telefones]
exten => 1234,1,Answer()
exten => 1234,2,Playback(hello-world)
exten => 1234,3,Hangup()
exten => _200[1-2],1,Dial(SIP/${EXTEN},30)
exten => _200[1-2],2,VoiceMail(${EXTEN},u)
exten => 3000,1,VoiceMailMain(${CALLERID(num)})
exten => _0X.,1,Dial(SIP/${EXTEN:1}@axxeso_out)
[do-provedor-sip]
exten => _X.,1,Dial(SIP/2000,30)
exten => _X.,2,VoiceMail(2000,u)

Listagem 3: Plano de discagem para URA


01
02
03
04
05
06

exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>

_99XX,1,Answer()
_99XX,2,Wait(1)
_99XX,3,Record(/tmp/promptvoz${EXTEN:2}.wav)
_99XX,4,Wait(1)
_99XX,5,Playback(/tmp/promptvoz${EXTEN:2})
_99XX,6,Hangup()

Listagem 4: Plano de discagem


01
02
03
04
05
06
07
08
09

exten => 30,1,Answer()


exten => 30,n,Background(entrada)
exten => 30,n,Hangup()
exten => _[13579],1,Playback(impar)
exten => _[13579],n,Hangup()
exten => _[2468],1,Playback(par)
exten => _[2468],n,Hangup()

59

TUTORIAL | VoIP com Asterisk

p ar.wav: Este nmero par.


mpar.wav: Este nmero mpar.

Com o plano de discagem da listagem 4, possvel experimentar a


funo URA. Mas ateno: a entra-

da precisa ser fornecida enquanto a


mensagem da aplicao Background()
emitida. Se voc quiser oferecer a
possibilidade de o usurio esperar
mais um pouco, use os prompts prfabricados silence/1 at silence/9:

Listagem 5: Mais opes


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23

[ivr]
exten
exten
exten
exten
;
;
;
;

=>
=>
=>
=>

50,1,Answer()
50,n,Background(menuexemplo)
50,n,Background(silence/5)
50,n,Hangup()

Como um contexto s pode representar


uma extenso, o exemplo de menu
precisar de uma opo para cada
ao (at as de dois dgitos)

exten => 1,1,Background(dummy1)


exten => 1,n,Background(silence/5)
exten => 1,n,Hangup()
exten => 2,1,Playback(dummy2)
exten => 2,n,Hangup()
exten => 3,1,Playback(dummy3)
exten => 3,n,Hangup()
exten => 4,1,Playback(dummy4)
exten => 4,n,Hangup()

Listagem 6: Truques de menus e contextos


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

60

[nivel0]
exten =>
exten =>
exten =>
exten =>
;
;
;
;

50,1,Answer()
50,n,Background(menuexemplo)
50,n,Background(silence/5)
50,n,Hangup()

No prximo nvel, liberar os nmeros para


outras possibilidades de forma a permitir
o uso de extenses que j tenham sido
usadas em menus anteriores.

exten => 1,1,Goto(nivel1,99,1)


exten => 2,1,Playback(dummy2)
exten => 2,n,Hangup()
[nivel1]
exten => 99,1,Background(dummy1)
exten => 99,n,Background(silence/5)
exten => 99,n,Hangup()

exten
exten
exten
exten

=>
=>
=>
=>

30,1,Answer()
30,n,Background(entrada)
30,n,Background(silence/5)
30,n,Hangup()

Onde os nmeros representam o


nmero de segundos que o Asterisk
aguardar em silncio.

URAs com vrios nveis

O problema no conceito de URA


demonstrado que ele sempre opera dentro de um contexto e, por isso,
s pode oferecer mais opes por
meio de mais nmeros (figura 1 e
listagem5). Isto , obviamente, insatisfatrio, mas uma instruo de
Goto() pode resolver esse problema.
Ela permite pular a outro ponto do
plano de discagem.
Com Goto(10), o Asterisk pula para
a prioridade 10 na extenso atual.
Com Goto(555,1), ele vai para a extenso 555, prioridade 1. Ainda mais
interessante Goto(producao,20,5),
que pula para o contexto produo,
extenso 20 e prioridade 5. Com esses truques, possvel entrar, com
um nico dgito de um menu nvel
1, em uma extenso de dois dgitos
em outro contexto, e novamente ter
disposio outras opes de um
dgito (listagem 6 e figura 2).
Na prxima edio da Linux Magazine, vamos falar sobre ramificaes no plano de discagem, clculos
e operaes sobre texto. At l! n

Sobre o autor
Stefan Wintermeyer o autor do Livro do
Asterisk, da editora Addisson Wesley e primeiro DCAP (Digium Certified Asterisk Professional) alemo. Ele auxilia clientes, por meio
da Amooma GmbH (http://www.amooma.de),
a implementar solues com Asterisk.

Gostou do artigo?

exten => 1,1,Playback(dummy3)


exten => 1,n,Hangup()

Queremos ouvir sua opinio.


Fale conosco em
cartas@linuxmagazine.com.br

exten => 2,1,Playback(dummy4)


exten => 2,n,Hangup()

Este artigo no nosso site:


http://lnm.com.br/article/4578

www.linuxmagazine.com.br

Quer falar com os 30.000


profissionais de TI com maior
nvel de conhecimento tcnico
do mercado nacional?
Ento anuncie na
Linux Magazine!
Segundo dados do Instituto Verificador de Circulao*, a Linux Magazine
atualmente a segunda revista mais vendida para profissionais de TI do mercado
editorial brasileiro. Alm disso, a revista que tem o pblico mais qualificado no
quesito tcnico. Nossa combinao exclusiva de contedo avanado com uma
abordagem prtica faz da Linux Magazine a publicao preferida de quem toma
decises e faz recomendaes para compra de produtos e contratao de
servios. Anuncie conosco e fale com esse pblico.

Para anunciar, entre em contato:


anuncios@linuxmagazine.com.br
11 3675-2600
*Comparao de circulao para os ltimos trs meses de publicaes nacionais voltadas ao segmento de TI.

Das könnte Ihnen auch gefallen