Você está na página 1de 34

Asterisk PBX

na prtica
Avanado

Asterisk PBX na Prtica Avanado_V.2.5

ndice
Captulo 1 Reviso: DialPlan SIP Links E1 Macros ......................................................................3
Captulo 2 Asterisk Extension Language ................................................................................................7
Captulo 3 Asterisk Database (AstDB) / Aplicao MySQL()................................................................9
Captulo 4 Trunks IAX2 ........................................................................................................................13
Captulo 5 Servidor de Faxes com HylaFAX + IAXModem ................................................................15
Captulo 6 ARA - Asterisk RealTime Architecture...............................................................................18
Captulo 7 Verbio ..................................................................................................................................20
Captulo 8 DUNDi.................................................................................................................................25
Captulo 9 Filas de Atendimento (DAC) e QueueMetrics.....................................................................28
Captulo 10 Asterisk2Billing .................................................................................................................30
Captulo 11 HeartBeat e DNS RR .........................................................................................................32

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 2/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 1 Reviso: DialPlan SIP Links E1 Macros


Laboratrio 1
Neste laboratrio ser feita a instalao do Asterisk, drivers para as placas de comunicao da
Digivoice e os arquivos de som em portugus brasileiro.
1. Download dos arquivos
cd /usr/src/
mkdir fontes
cd fontes
wget http://ip fornecido pelo instrutor/asterisk/1.6/asterisk-1.6.0-current.tar.gz
wget http://ip fornecido pelo instrutor/asterisk/1.6/libpri-1.4-current.tar.gz
wget http://ip fornecido pelo instrutor/asterisk/DAHDI/dahdi-linux-current.tar.gz
wget http://ip fornecido pelo instrutor/asterisk/DAHDI/dahdi-tools-current.tar.gz
wget http://ip fornecido pelo instrutor/asterisk/1.6/asterisk-addons-1.6.0-current.tar.gz
wget http://ip fornecido pelo instrutor/asterisk/DigiVoice/voicerlib-4.2.0.0.tar.gz
wget http://ip fornecido pelo instrutor/asterisk/DigiVoice/dgvchannel-1.0.4.tar.gz
wget http://ip fornecido pelo instrutor/treinamento/fontes/sounds-1.0-pt_BR.tar.gz

2. Descompactar os arquivos
cd /usr/src/
tar xvzf fontes/dahdi-linux-current.tar.gz
tar xvzf fontes/dahdi-tools-current.tar.gz
tar xvzf fontes/libpri-1.4-current.tar.gz
tar xvzf fontes/asterisk-1.6.0-current.tar.gz
tar xvzf fontes/asterisk-addons-1.6.0-current.tar.gz
mkdir dgv
cd dgv
tar xvzf /usr/src/fontes/voicerlib-4.2.0.0.tar.gz
tar xvzf /usr/src/fontes/dgvchannel-1.0.4.tar.gz

3. Compilar e instalar
DAHDI
Antes de compilar o DAHDI, deve-se comentar o arquivo Kbuild, localizado na pasta
/usr/src/dahdi-linux/drivers/dahdi, a linha que termina com tor2. Para fazer o comentrio
basta inserir o caractere # no incio da linha.
cd /usr/src/dahdi-linux-verso
make install

cd /usr/src/dahdi-tools-verso
./configure
make install

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 3/34 -

Asterisk PBX na Prtica Avanado_V.2.5

LibPRI:
ln s /usr/src/libpri-verso /usr/src/libpri
cd /usr/src/libpri
make install

Asterisk:
cd /usr/src
ln s /usr/src/asterisk-verso /usr/src/asterisk
cd /usr/src/asterisk
./configure
make menuselect
make install
make samples
make config

Asterisk-AddOns:
cd /usr/src/asterisk-addons-verso
./configure
make menuselect
make install
make samples

Digivoice:
cd /usr/src/dgv/voicerlib-4.2.0.0
make install
cd /usr/src/dgv/dgvchannel-1.0.4
make install
make install_config

Arquivos de som para o Asterisk em portugus brasileiro (pt_BR)


cd /var/lib/asterisk
tar xvzf /usr/src/fontes/sounds-1.0-pt_BR.tar.gz

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 4/34 -

Asterisk PBX na Prtica Avanado_V.2.5

4. Inicializar os arquivos de configurao do Asterisk


echo dahdi_dummy >> /etc/modules
cd /etc/asterisk
> dundi.conf
> extconfig.conf
> extensions.conf
> extensions.ael
> iax.conf
> queues.conf
> cdr_mysql.conf
> res_mysql.conf
> sip.conf
> voicemail.conf

5. Agora reinicie o computador para que o sistema carregue o Asterisk automaticamente

Laboratrio 2
Neste laboratrio ser feita a configurao completa de um servidor IPBX.
1. Configure o seu servidor Asterisk de acordo com as instrues a seguir:
a.

Crie ramais SIP referentes a faixa DDR 9001 at 9009:

Todos os ramais podem ligar para quaisquer destinos.

b.

Todos os ramais podem capturar chamadas de todos os outros ramais.

c.

As regras de discagem entre os ramais devero ser colocadas no contexto ramais.

d.

Todas as chamadas externas devem ser gravadas.

e.

Devem ser criados contextos distintos para cada um dos destinos possveis, como por
exemplo LOCAL FIXO, LOCAL MVEL, DDD FIXO, DDD MVEL e DDI.

f.

Os nmeros de servio, 0300, 0800 e 0900 devem estar em um contexto separado sendo
terminados pelo link E1.

g.

As chamadas LOCAL e DDD Fixo sero terminadas via Link E1, com sada redundante pelo
provedor VoIP. A operadora PSTN (link E1) exige a entrega das ligaes nos formatos:

h.

099 + DDD + nmero, como por exemplo: 0994730565620 para destinos interurbanos.

nmero, como no exemplo: 40639374 para os destinos locais.

As chamadas DDD Mvel e DDI sero terminadas via provedor VoIP. O provedor VoIP
exige a entrega das ligaes no formato:

55 + DDD + nmero, como por exemplo: 554784046006 para destinos DDD Mvel.

PAS + nmero, como no exemplo: 13458763646 para destinos DDI.

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 5/34 -

Asterisk PBX na Prtica Avanado_V.2.5

i.

Configure a conexo com o provedor VoIP de acordo com as informaes a seguir.

[asteriks]
context = entradaSIP
type = friend
defaultuser = cliente<coloque aqui a identificao do seu grupo na sala de aula, em dois dgitos>
secret = senha
fromuser = <Repita o valor do campo defaultuser>
host = <O instrutor informar o endereo IP do provedor>
insecure = invite,port
qualify = yes
port = 5060
nat = yes
disallow = all
allow = gsm
allow = g729
dtmfmode = rfc2833
canreinvite = no

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 6/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 2 Asterisk Extension Language


Neste laboratrio ser feita a construo de uma URA no modo de programao AEL.
1. Adicione as linhas a seguir ao contexto ramais:
9000 => goto ura,s,1;

2. Adicione as linhas a seguir ao arquivo /etc/asterisk/extensions.ael:


context ura {
s => {
Answer;
Set(TIMEOUT(response)=4);
Set(TIMEOUT(digit)=2);
BackGround(menuprincipal);
}
// Opcao para digitar o ramal desejado
//
_90XX => goto ramais,${EXTEN},1;
// Opcao invalida, desvia para correio de voz
//
i => goto correiotelefonista,s,1;
// Nao digitou nada, desvia para o ramal 9002
//
t => goto ramais,9002,1;
// Opcao 1 - Comercial
//
1 => {
Dial(SIP/9002&SIP/9003,15,tT);
goto correiotelefonista,s,1;
}
// Opcao 2 - Atendimento a Clientes
//
2 => {
Dial(SIP/9007,15,tT);
Dial(SIP/9004,15,tT);
goto correiotelefonista,s,1;
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 7/34 -

Asterisk PBX na Prtica Avanado_V.2.5


// Opcao 3 - Transportes
//
3 => {
Dial(SIP/9006,15);
Voicemail(9006);
}
} // Final do contexto URA
context correiotelefonista {
s => {
Voicemail(9002);
HangUp;
}
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 8/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 3 Asterisk Database (AstDB) / Aplicao MySQL()


Laboratrio 1
Neste laboratrio ser feita o desenvolvimento da funcionalidade de NO PERTURBE utilizando o
AstDB (Asterisk Database).
1. Crie o contexto aplicacoes no arquivo /etc/asterisk/extensions.ael e adicione as linhas a seguir:
// Habilita Nao perturbe
50 => {
Answer;
Set(DB(naoperturbe/${CALLERID(num)})=1);
PlayBack(auth-thankyou);
HangUp;
}
// Desabilita Nao perturbe
51 => {
Answer;
Set(X=${DB_DELETE(naoperturbe/${CALLERID(num)})});
PlayBack(auth-thankyou);
HangUp;
}

2. Agora crie a macro discaramal de acordo com as linhas a seguir:


macro discaramal (PROTOCOLO, RAMAL) {
// Checa Nao perturbe
Set(NAOPERTURBE=${DB(naoperturbe/${RAMAL})});
if (${LEN(${NAOPERTURBE})} > 0)
goto naoperturbe;
// Disca para o ramal
Dial(${PROTOCOLO}/${RAMAL},35,tT);
// Envia para correio de voz
naoperturbe:
VoiceMail(${RAMAL},u);
HangUp;
Return;
}

3. Agora edite o seu contexto ramais de acordo com as linhas a seguir:


context ramais {
_90XX => Gosub(discaramal,s,1(SIP,${EXTEN}));
}
http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 9/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Laboratrio 2
Neste laboratrio ser feita o desenvolvimento de uma funo para o bloqueio do envio de ligaes,
baseados em uma tabela no banco de dados MySQL utilizando ODBC.
1. Criar a base de dados de nmeros de telefones proibidos.
cd /usr/src
wget http://ip fornecido pelo instrutor/treinamento/fontes/proibidos.sql
mysql -p < proibidos.sql

2. Configurar o ODBC

Adicione as linhas a seguir ao arquivo


banco de dados com o UnixODBC.

/etc/odbcinst.ini

para a configurao do conector do

[MySQL]
Description

= ODBC for MySQL

Driver

= /usr/lib/odbc/libmyodbc.so

Setup

= /usr/lib/odbc/libodbcmyS.so

FileUsage

= 1

Digite odbcinst

-q -d

para verificar se o conector est adequadamente configurado.

Adicione as linhas a seguir ao arquivo


referncia entre o Asterisk o UnixODBC.

/etc/odbc.ini

para a configurao do arquivo de

[asterisk-mysql]
Description

= MySQL Asterisk

Driver

= /usr/lib/odbc/libmyodbc.so

SERVER

= localhost

PORT

= 3306

DATABASE

= proibidos

OPTION

= 3

USER

= root

PASSWORD

= <senha fornecida pelo instrutor>

-v asterisk-mysql

Digite isql

a fim de verificar se o conector est adequadamente configurado.

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 10/34 -

Asterisk PBX na Prtica Avanado_V.2.5

3. Configurar o Asterisk para conectar-se ao ODBC

Adicione as linhas a seguir ao arquivo /etc/asterisk/res_odbc.conf

[asterisk]
enabled => yes
dsn => asterisk-mysql
username => root
password => <senha fornecida pelo instrutor>
pre-connect => yes
idlecheck => 3600

Para ativar as alteraes, recarregue o mdulo ODBC atravs da console do Asterisk com o
comando module reload res_odbc.so

Verifique se tudo funcionou adequadamente com o comando de console do Asterisk

odbc

show

*CLI> odbc show


ODBC DSN Settings
----------------Name:
DSN:

ipbx
ipbx-mysql

Pooled: No
Connected: Yes

4. Para que o Asterisk acesse a base de dados MySQL, deve-se criar funes ODBC para a seleo,
atualizao, excluso ou insero de informaes.

Adicione as linhas a seguir ao arquivo /etc/asterisk/func_odbc.conf e digite


na console do Asterisk para ativar as alteraes.

module reload

func_odbc.so

[INSEREPROIBIDO]
dsn=ipbx
writesql=INSERT INTO telefones SET callerid = '${SQL_ESC(${ARG1})}'
[EXCLUIPROIBIDO]
dsn=ipbx
writesql=DELETE FROM telefones WHERE callerid = '${SQL_ESC(${ARG1})}'
[EXISTEROIBIDO]
dsn=ipbx
readsql=SELECT count(callerid) FROM telefones WHERE callerid = '${SQL_ESC(${ARG1})}'

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 11/34 -

Asterisk PBX na Prtica Avanado_V.2.5

5. Adicione as linhas a seguir ao arquivo /etc/asterisk/extensions.ael, dentro do contexto aplicacoes. Note


que para cadastrar um nmero que ser bloqueado deve-se discar o cdigo 60 seguido do nmero
completo de telefone no formato DDD + nmero. E para a liberao de um nmero de telefone, ou
seja a sua excluso da base de dados, deve-se usar o cdigo 61 seguido do nmero completo de
telefone no formato DDD + nmero.
// Cadastra numeros de telefone proibidos
_60ZZNXXXXXXX => {
Set(ODBC_INSEREPROIBIDO(${EXTEN:-10})=1;
PlayBack(auth-thankyou);
HangUp;
}
// Remove numeros de telefone proibidos
_61ZZNXXXXXXX => {
Set(ODBC_EXCLUIPROIBIDO(${EXTEN:-10})=1;
PlayBack(auth-thankyou);
HangUp;
}

6. Agora altere o plano de discagem de acordo com as linhas a seguir:


// Bloqueia o envio da chamada baseado no numero de destino
macro proibidos (DESTINO) {
Set(ACHOU=${ODBC_EXISTEROIBIDO(${DESTINO});
if (${ACHOU} > 0) {
PlayBack(tt-monkeys);
HangUp;
}
Return;
}
// Fim da MACRO proibidos
// Faz a terminao da chamada
macro externas (TERMINACAO, PREFIXO, DESTINO) {
// Checa se o nmero de destino permitido
Gosub(proibidos,s,1(${DESTINO}));
// Inicia gravao da chamada
Gosub(gravachamada,s,1(${DESTINO}));
// Executa a chamada
Dial(${TERMINACAO}/${PREFIXO}${DESTINO},,tT);
HangUp;
}
// Fim da MACRO externas

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 12/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 4 Trunks IAX2


Neste laboratrio ser feita a integrao de todos os servidores da sala de aula atravs da utilizao de
Trunks IAX2.
A seguir est um exemplo de interligao de duas filiais, uma localizada no Rio de Janeiro e outra em
So Paulo. Tomando como base este exemplo, monte a estrutura de Trunks IAX2 com todos os
servidores da sala de aula.
Supondo-se que o endereo IP do servidor da filial de So Paulo
servidor da filial do Rio de Janeiro 200.2.2.2.

200.1.1.1

e o endereo IP do

Filial SP (11)
Arquivo /etc/asterisk/iax.conf:
; Contas para os servidores das filiais. Envio de chamadas
[RJ]
username = SP-RJ
secret = senhaSP
host = 200.2.2.2 ; Coloque aqui o endereo IP do servidor RJ
qualify = yes
type = peer
disallow = all
allow = gsm
trunk = yes
requirecalltoken = no
; Contas para os servidores das filiais. Recebimento de chamadas
[RJ-SP]
context = entradafiliais
secret = senhaRJ
type = user
disallow = all
allow = gsm
trunk = yes
requirecalltoken = no

Note que na criao da conta para o recebimento das chamadas,


funciona como nome do usurio para a autenticao.

[RJ-SP],

o prprio nome da conta

Arquivo /etc/asterisk/extensions.ael, contexto ramais:


_02190XX => Dial(IAX2/RJ/${EXTEN:3},30,tT);
context entradafiliais {
includes {
ramais;
}
}
http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 13/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Filial RJ (21)
Arquivo /etc/asterisk/iax.conf:
; Contas para os servidores das filiais. Envio de chamadas
[SP]
username = RJ-SP
secret = senhaRJ
host = 200.1.1.1 ; Coloque aqui o endereo IP do servidor SP
qualify = yes
type = peer
disallow = all
allow = gsm
trunk = yes
requirecalltoken = no
; Contas para os servidores das filiais. Recebimento de chamadas
[SP-RJ]
context = entradafiliais
secret = senhaSP
type = user
disallow = all
allow = gsm
trunk = yes
requirecalltoken = no

Note que na criao da conta para o recebimento das chamadas,


funciona como nome do usurio para a autenticao.

[SP-RJ],

o prprio nome da conta

Arquivo /etc/asterisk/extensions.ael, contexto ramais:


_01190XX => Dial(IAX2/SP/${EXTEN:3},30,tT);
context entradafiliais {
includes {
ramais;
}
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 14/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 5 Servidor de Faxes com HylaFAX + IAXModem


Neste laboratrio ser implementada a funo de envio e recepo de faxes atravs do Asterisk.
1. Instalar
aptitude install hylafax-server iaxmodem

2. Configurar
HylaFAX:
Crie o arquivo /etc/hylafax/config.ttyIAX e adicione as linhas a seguir:
CountryCode:

55

AreaCode:

011

FAXNumber:

1140049090

LongDistancePrefix:

InternationalPrefix:

00

DialStringRules:

etc/dialrules

ServerTracing:

0xFFF

SessionTracing:

0xFFF

RecvFileMode:

0600

LogFileMode:

0600

DeviceMode:

0600

RingsBeforeAnswer:

SpeakerVolume:

off

GettyArgs:

"-h %l dx_%s"

LocalIdentifier:

"IAXmodem"

TagLineFont:

etc/lutRS18.pcf

TagLineFormat:

"De %%l|%c|Pagina %%P de %%T"

MaxRecvPages:

200

ModemType:

Class1

Class1AdaptRecvCmd:

AT+FAR=1

Class1TMConnectDelay: 400
ModemResetCmds:

AT+VCID=1

PagerTTYParity:

none

CallIDPattern:

"NMBR="

CallIDPattern:

"NAME="

CallIDPattern:

"ANID="

CallIDPattern:

"NDID="

Para

encaminhar

os

faxes recebidos para um endereo


/var/spool/hylafax/etc/FaxDispatch conforme o exemplo a seguir:

de

e-mail

altere

arquivo

SENDTO=fax-incoming@company.com
FILETYPE=pdf:

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 15/34 -

Asterisk PBX na Prtica Avanado_V.2.5

IAXModem:

Crie o arquivo /etc/iaxmodem/ttyIAX e adicione as linhas a seguir:

device

/dev/ttyIAX

owner

uucp:uucp

mode

660

port

4570

refresh

300

server

127.0.0.1

peername

iaxmodem

secret

password

cidname

FAX

cidnumber

1140049090

codec

slinear

Corrigindo as propriedades do arquivo de configurao do modem ttyIAX:

chown uucp.uucp /etc/iaxmodem/ttyIAX


chmod 660 /etc/iaxmodem/ttyIAX

Asterisk:

Edite o arquivo /etc/asterisk/iax.conf e adicione as linhas a seguir:

[iaxmodem]
context = enviafax
host = dynamic
username = iaxmodem
secret = password
type = friend
disallow = all
allow = slinear
qualify = yes

Recebendo um fax e entregando para o HylaFAX. Edite o arquivo


adicione as linhas a seguir ao contexto ramais:

/etc/asterisk/extensions.ael

9090 => {
Answer;
Dial(IAX2/iaxmodem);
Wait(2);
HangUp;
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 16/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Enviando um fax. Edite o arquivo /etc/asterisk/extensions.ael e adicione as linhas a seguir:

context enviafax {
includes {
ddi;
}
}

Adicionar um usurio para o envio de faxes pelos clientes do HylaFAX:

faxadduser fax

Iniciando os servios:
/etc/init.d/iaxmodem stop
/etc/init.d/iaxmodem start
/etc/init.d/hylafax stop
/etc/init.d/hylafax start

Digite faxstat para checar se todos os servios esto rodando corretamente:

Exemplo:
asteriks:~# faxstat
HylaFAX scheduler on asteriks: Running
Modem ttyIAX (+47 33676271): Running and idle

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 17/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 6 ARA - Asterisk RealTime Architecture


Laboratrio 1
Neste laboratrio ser feita a migrao dos arquivos de configurao dos seus ramais SIP para o
servidor de banco de dados MySQL.
MySQL:
Criar as tabelas no servidor MySQL
cd /usr/src
wget http://www.asteriks.com.br/livro/fontes/realtime.sql
mysql p < realtime.sql

Asterisk:
3. Alterar o mapeamento dos arquivos para o banco de dados
Edite o arquivo /etc/asterisk/extconfig.conf e adicione as linhas a seguir:
[settings]
sippeers => mysql,realtime,sip
sipusers => mysql,realtime,sip
iaxpeers => mysql,realtime,iax
iaxusers => mysql,realtime,iax
voicemail => mysql,realtime,voicemail
extensions => mysql,realtime,dialplan
queues => mysql,realtime,queues
queue_members => mysql,realtime,queue_member

4. Conectar o Asterisk ao MySQL


Edite o arquivo /etc/asterisk/res_mysql.conf e altere de acordo com o exemplo a seguir:
[general]
dbhost = localhost
dbname = realtime
dbuser = root
dbpass = <senha fornecida pelo instrutor>
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 18/34 -

Asterisk PBX na Prtica Avanado_V.2.5

5. Preparao dos arquivos de ramais


Edite o arquivo /etc/asterisk/sip.conf e comente todas as linhas de configurao dos seus ramais, para
que apenas os ramais cadastrados no Realtime sejam usados pelo sistema.
6. Cadastrando os ramais no banco de dados
Acesse o endereo HTTP://localhost/phpmyadmin e cadastre os seus ramais na tabela sip.
7. Testar
Reinicie o Asterisk para ativar as alteraes

Laboratrio 2
Neste laboratrio ser feita a migrao das regras do contexto
dados MySQL.

ramais

para o servidor de banco de

Migre todas as extenses do contexto ramais para o Banco de Dados.


Edite o arquivo /etc/asterisk/extensions.ael, comente todas as extenses do contexto
linhas a seguir para que o Asterisk utilize as regras inseridas no Banco de Dados.

ramais,

e insira as

switches {
Realtime/ramais@extensions;
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 19/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 7 Verbio
Laboratrio 1
Neste laboratrio ser instalado o software de reconhecimento da fala (ASR) e de converso de texto
para falar (TTS) Verbio.
Instalar e configurar:
1. Baixar e descompactar
mkdir p /usr/src/verbio
cd /usr/src/verbio
wget http://ip fornecido pelo instrutor/treinamento/fontes/verbio/verbio-engines-8.0.deb
wget http://ip fornecido pelo instrutor/treinamento/fontes/verbio/verbio-clients-8.0.deb
wget http://ip fornecido pelo instrutor/treinamento/fontes/verbio/verbio-tts-julia-pt-brpa-8.0.deb
wget http://ip fornecido pelo instrutor/treinamento/fontes/verbio/verbio-asr-pt-br-8.0.deb
wget http://ip fornecido pelo instrutor/treinamento/fontes/verbio/verbio-asterisk-3.0.tar.bz2
wget http://ip fornecido pelo instrutor/treinamento/fontes/verbio/app_verbio_speech.c

2. Instalar os pacotes
cd /usr/src/verbio
tar xvjf verbio-asterisk-3.0.tar.bz2
dpkg -i verbio-engines-8.0.deb
dpkg -i --force-overwrite verbio-clients-8.0.deb
dpkg -i --force-overwrite verbio-tts-julia-pt-brpa-8.0.deb
dpkg -i --force-overwrite verbio-asr-pt-br-8.0.deb

3. Configurar. Edite o arquivo /etc/software-verbio-server e altere os parmetros a seguir:


string VERBIO_ASR_CONF

= "pt-br,";

string VERBIO_START_CONF = "pt-br,";


string VERBIO_START_LANG = "pt-br";
string VERBIO_TTS_SPK

= "pt-brPA,";

string VERBIO_START_SPK = "pt-brPA,";

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 20/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Integrar o Verbio ao Asterisk:


1. Preparando a compilao do mdulo do Verbio
cd /usr/src/verbio
cp app_verbio_speech.c /usr/src/asterisk/apps/

2. Recompilar o Asterisk. Edite o arquivo


da instruo all: _all

/usr/src/asterisk/apps/Makefile

e insira as linhas abaixo antes

MENUSELECT_DEPENDS_app_verbio_speech+=VOX
VOX_LIB=-lvoxlib
cd /usr/src/asterisk
make
make install

3. Ativar o Verbio.
Criar as pastas para o funcionamento do Verbio com o Asterisk
mkdir p /var/lib/asterisk/verbio/text
mkdir p /var/lib/asterisk/verbio/gram
mkdir p /var/lib/asterisk/verbio/audio

Copiar arquivo de configurao do Verbio para a pasta correta.


cd /usr/src/verbio
cp verbio-asterisk-3.0/verbio.conf /etc/asterisk

Setar o idioma para portugus brasileiro. Edite o arquivo /etc/asterisk/verbio.conf e altere os parmetros a
seguir:
[tts]
default_language = pt-br
default_speaker = julia
[asr]
default_config

= pt-br

default_language = pt-br

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 21/34 -

Asterisk PBX na Prtica Avanado_V.2.5

4. Iniciar o Verbio.
Digite a instruo a seguir na console do Linux para iniciar o Verbio em modo demonstrao. Neste
modo o Verbio ir rodar por aproximadamente 30 minutos.
verbiod e

5. Ativar os mdulos do Verbio para o Asterisk.


Na console do Asterisk digite module load app_verbio_speech.so e verifique se as aplicaes do Verbio foram
ativadas corretamente, como no exemplo a seguir:
*CLI> module load app_verbio_speech.so
== Parsing '/etc/asterisk/verbio.conf':

== Found

== Registered application 'VerbioInfo'


== Registered application 'VerbioLastErr'
== Registered application 'VerbioFreeChannel'
== Registered application 'VerbioLoadVcb'
== Registered application 'VerbioUnloadVcb'
== Registered application 'VerbioRec'
== Registered application 'VerbioStreamAndRec'
== Registered application 'VerbioPrompt'
== Registered application 'VerbioPromptAndRec'
Loaded app_verbio_speech.so => (Verbio Speech Technologies Applications)

Laboratrio 2
Neste laboratrio ser implementada uma regra de discagem para teste de converso de texto para
fala (TTS) do Verbio.
1. Edite o arquivo /etc/asterisk/extensions.ael e adicione as linhas a seguir ao contexto ramais.
9998 => {
Answer;
VerbioPrompt("Teste de converso de texto para fala do Verbio com o Asterisk.,1500,100,,,,,,dvg);
HangUp;
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 22/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Laboratrio 3
Neste laboratrio ser modificada a URA para a utilizao das tecnologias de (ASR) e de converso
de texto para fala (TTS) do Verbio.
1. Edite o arquivo /var/lib/asterisk/verbio/gram/asr.txt e adicione as linhas a seguir.
1

Comercial

Atendimento

Transportes

2. Edite o arquivo /etc/asterisk/extensions.ael e altere o contexto ura de acordo com o exemplo a seguir.
s => {
Answer;
VerbioLoadVcb(asr.txt,isolated,,,v);
VerbioPromptAndRec("Diga ou digite o ramal desejado\, ou tecle para Departamento Comercial 1\,
atendimento a clientes 2\, Transportes 3 ou aguarde para ser atendido pelo ramal 9002,1500,100,,,,,,dvg);
if (${VDTMF_DETECTED} = TRUE) {
goto ${VDTMF_RESULT},1;
}
if (${VASR_WORDS} > 0) {
goto ${VASR_RESULT0},1;
}
} // Fim da extenso s
// Opcao invalida, desvia para correio de voz
i => {
VerbioPrompt(Opcao invlida.);
goto correiotelefonista,s,1;
}
// Nao digitou nada, desvia para o ramal 9002
t => {
VerbioPrompt(No pressionou nada.);
Gosub(discaramal,s,1(SIP,9002));
}
// Opcao 1 - Comercial
1 => {
VerbioPrompt(Opo Departamento Comercial.);
Dial(SIP/9002&IAX2/9003,15,tT);
Goto(correiotelefonista,s,1);
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 23/34 -

Asterisk PBX na Prtica Avanado_V.2.5


// Opcao 2 - Atendimento a Clientes
2 => {
VerbioPrompt(Opo Atendimento a Clientes.);
Dial(SIP/9007,15,tT);
Dial(SIP/9004,15,tT);
Goto(correiotelefonista,s,1);
}
// Opcao 3 - Transportes
3 => {
VerbioPrompt(Opo Transportes.);
Dial(SIP/9006,15);
Voicemail(9006);
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 24/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 8 DUNDi
Neste laboratrio ser habilitado o protocolo de pesquisa de rotas DUNDi, para que os servidores da
sala de aula compartilhem rotas entre si.
A seguir est um exemplo de compartilhamento de rotas entre dois servidores, um localizado no Rio de
Janeiro e outro em So Paulo. Tomando como base este exemplo, monte a estrutura de
compartilhamento de rotas para as chamadas locais com todos os servidores da sala de aula.
Supondo-se que o endereo IP do servidor da filial de So Paulo
servidor da filial do Rio de Janeiro 192.168.250.251.

192.168.250.250

e o endereo IP do

Filial SP (11)
Arquivo /etc/asterisk/iax.conf:
[contaparadundi]
type = friend
dbsecret = dundi/secret
context = ramais
disallow = all
allow = gsm

Arquivo /etc/asterisk/dundi.conf:
[general]
department = TI
organization = Empresa SP
locality = Sao Paulo
stateprov = SP
country = BR
phone = 1140049000
bindaddr = 0.0.0.0
port = 4520
entityid = 00:1d:60:a0:6b:3c
cachetime = 5
ttl = 2
autokill = yes

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 25/34 -

Asterisk PBX na Prtica Avanado_V.2.5


[mappings]
local-dundi => local-asterisk,0,IAX2,contaparadundi:${SECRET}@192.168.250.250/${NUMBER:3}
[00:0c:29:a1:3e:98]
model = symmetric
host = 192.168.250.251
inkey = chaveparadundi
outkey = chaveparadundi
include = local-dundi
permit = all
qualify = Yes

Arquivo /etc/asterisk/extensions.ael. Adicione o contexto a seguir ao seu plano de discagem.


// Regras publicadas para a malha DUNDi
context local-asterisk
{
_01190XX => NoOp;
}

Arquivo /etc/asterisk/extensions.ael. Adicione as linhas a seguir ao contexto ramais:


// Envia para o DUNDi
switches {
DUNDi/local-dundi;
}

Filial RJ (21)
Arquivo /etc/asterisk/iax.conf:
[contaparadundi]
type = friend
dbsecret = dundi/secret
context = ramais
disallow = all
allow = gsm

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 26/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Arquivo /etc/asterisk/dundi.conf:
[general]
department = TI
organization = Empresa RJ
locality = Rio de Janeiro
stateprov = RJ
country = BR
phone = 2140049000
bindaddr = 0.0.0.0
port = 4520
entityid = 00:0c:29:a1:3e:98
cachetime = 5
ttl = 2
autokill = yes
[mappings]
local-dundi => local-asterisk,0,IAX2,contaparadundi:${SECRET}@192.168.250.251/${NUMBER:3}
[00:1d:60:a0:6b:3c]
model = symmetric
host = 192.168.250.250
inkey = chaveparadundi
outkey = chaveparadundi
include = local-dundi
permit = all
qualify = yes

Arquivo /etc/asterisk/extensions.ael. Adicione o contexto a seguir ao seu plano de discagem.


// Regras publicadas para a malha DUNDi
context local-asterisk
{
_02190XX => NoOp;
}

Arquivo /etc/asterisk/extensions.ael. Adicione as linhas a seguir ao contexto ramais:


// Envia para o DUNDi
switches {
DUNDi/local-dundi;
}

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 27/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 9 Filas de Atendimento (DAC) e QueueMetrics


Neste laboratrio ser instalado o software de gerenciamento de filas de atendimento (DAC)
QueueMetrics.
Instalar e configurar:
1. Baixar e descompactar o QueueMetrics e seus componentes
mkdir p /usr/src/queuemetrics
cd /usr/src/queuemetrics
wget http://ip fornecido pelo instrutor/treinamento/fontes/queuemetrics/QueueMetrics-1.5.2-trial.tar.gz
wget http://ip fornecido pelo instrutor/treinamento/fontes/queuemetrics/mysql-connector-java-5.1.7-bin.jar
wget http://ip fornecido pelo instrutor/treinamento/fontes/queuemetrics/queuemetrics.sql
aptitude install sun-java6-jdk
aptitude install tomcat5.5

2. Criar a base de dados do QueueMetrics


cd /usr/src/queuemetrics
mysql p < queuemetrics.sql

3. Configurando o Tomcat. Edite o arquivo /etc/default/tomcat5.5 de acordo com o exemplo a seguir:


JAVA_HOME=/usr/lib/jvm/java-6-sun
JAVA_OPTS="-Xms256M -Xmx512M"
TOMCAT5_SECURITY=no

4. Instalar o QueueMetrics
cd /var/lib/tomcat5.5/webapps/
tar xvzf /usr/src/queuemetrics/QueueMetrics-1.5.2-trial.tar.gz

5. Instalar o conector do Tomcat com o MySQL


cp /usr/src/queuemetrics/mysql-connector-java-5.1.7-bin.jar queuemetrics-1.5.2/WEB-INF/lib/

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 28/34 -

Asterisk PBX na Prtica Avanado_V.2.5

6. Configurar o qloader. Edite o arquivo /var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysqlutils/qloader/qloader.pl de acordo com as informaes a seguir:


my $mysql_host = $options{h} || "localhost";
my $mysql_db

= $options{d} || "queuemetrics";

my $mysql_user = $options{u} || "queuemetrics";


my $mysql_pass = $options{p} || "javadude";

7. Configurar a execuo automtica do qloader.


Edite

initscripts/qloaderd

/var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysql-utils/qloader/Otherarquivo
de acordo com as informaes a seguir:

qloader=/var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysql-utils/qloader/qloader.pl

Execute as instrues a seguir para a execuo do qloaderd na inicializao do servidor:


cd /var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysql-utils/qloader/
chmod a+x qloader.pl
cd /var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysql-utils/qloader/Other-initscripts
dos2unix qloaderd
chmod a+x qloaderd
cp qloaderd /etc/init.d
update-rc.d qloaderd defaults

Iniciando os servios:
/etc/init.d/qloaderd restart
/etc/init.d/tomcat5.5 restart

Testar o funcionamento:
1. Acesse o endereo
seguir:

http://localhost:8180/queuemetrics-1.5.2/.

Utilize para o logon as informaes a

login = demoadmin
senha = demo

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 29/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 10

Asterisk2Billing

Neste laboratrio ser instalado o software de tarifao Asterisk2Billing (A2Billing).


Instalar e configurar:
1. Baixar e descompactar
mkdir p /usr/src/a2billing
cd /usr/src/a2billing
wget http://ip fornecido pelo instrutor/treinamento/fontes/a2billing/A2Billing_1.3.4.tar.gz
wget http://ip fornecido pelo instrutor/treinamento/fontes/a2billing//a2billing.sql
tar xvzf A2Billing_1.3.4.tar.gz

2. Criar as bases de dados no MySQL


cd /usr/src/a2billing
mysql p < a2billing.sql

3. Alterar o arquivo de configurao do A2Billing. Edite o arquivo


altere o parmetro dbtype para mysql.

/usr/src/a2billing/a2billing.conf

4. Instalar o A2Billing: GUI, AGIs e sons em portugus brasileiro.


cd /usr/src/a2billing
cp a2billing.conf /etc/asterisk
ln -s /usr/src/a2billing/A2Billing_UI /var/www/a2billing
ln -s /usr/src/a2billing/A2BCustomer_UI /var/www/a2billingcustom
cd /usr/src/a2billing/A2Billing_AGI
cp a2billing.php /var/lib/asterisk/agi-bin/
cp -rf libs_a2billing /var/lib/asterisk/agi-bin/
chmod +x /var/lib/asterisk/agi-bin/a2billing.php
cd /usr/src/a2billing
cp -rf addons/sounds/br/* /var/lib/asterisk/sounds/pt_BR/

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 30/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Preparar o Asterisk para funcionar com o A2Billing:


5. Configurar uma conta AMI para o A2Billing. Edite o arquivo
conta a seguir:

/etc/asterisk/manager.conf

e adicione a

[myasterisk]
secret = mycode
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

6. Alterar o plano de discagem. Crie o contexto a seguir para que as chamadas sejam tratadas pelo
A2Billing.
context a2billing {
_X. => {
Answer;
Wait(1);
AGI(a2billing.php);
Wait(1);
Hangup;
}
}

7. Faa o include do contexto criado no item anterior no contexto ramais.


Testar o funcionamento:
8. Acesse o endereo http://localhost/a2billing. Utilize para o logon as informaes a seguir:
login = root
senha = myroot

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 31/34 -

Asterisk PBX na Prtica Avanado_V.2.5

Captulo 11

HeartBeat e DNS RR

Heartbeat
Usado para construir clusters de altssima disponibilidade. Trabalha enviando um heartbeat entre
duas mquinas, uma primria ou master e outra secundrio ou slave. Em caso de falha, a mquina
configurada como secundria ir assumir os servios que estavam rodando na mquina primria.
Os clientes acessam os servios rodando no cluster atravs de um endereo IP nico, publicado pela
mquina considerada primria. Em caso de queda ou falha na mquina primria, este endereo IP
automaticamente assumido pela mquina secundria, que neste momento passa a ser o servidor master do
cluster.
A configurao do Heartbeat envolve trs aquivos, que devem ser duplicados em ambos os servidores.

/etc/heartbeat/authkeys:

arquivo da chave e forma de autenticao usada pelos nodos. Pode-se usar CRC,
MD5 ou SHA1. Para a sua correta leitura e processamento deve possuir os direitos 600. O comando do
Linux que altera essa propriedade o chmod 600 /etc/heartbeat/authkeys.

Exemplo:
auth 1
1 crc
2 sha1 <chave sha1>
3 md5 <chave md5>

/etc/heartbeat/haresources:

especifica os servios compartilhados e o host primrio do cluster.

Sintaxe:
<nome do host da mquina primria> IPaddr::<endereo IP publicado pelo cluster> <nome dos scripts do init.d que
inicializam os servios compartilhados pelo cluster>

Exemplo:
servidorPRIMARIO IPaddr::192.168.0.10 asterisk mysql

/etc/heartbeat/ha.cf:

lista dos nodos do cluster, topologia de comunicao e as funcionalidades habilitadas

na configurao.
debugfile: arquivo onde as mensagens de debug sero gravadas.
logfile: arquivo onde as demais mensagens sero gravadas.
keepalive: tempo de envio do heartbeat entre os nodos do cluster.
deadtime: quanto tempo de inatividade para declarar o nodo como inativo.
warntime: quanto tempo antes de enviar o ltimo aviso de heartbeat para os nodos do cluster.
initdead: Primeiro tempo de inatividade. Alguns sistemas operacionais levam mais tempo para
ativar as interfaces de rede e seus servios aps um reboot da mquina. Como resultado passamos a
http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 32/34 -

Asterisk PBX na Prtica Avanado_V.2.5

ter um tempo de inatividade diferenciado quando a mquina restartada. O tempo do initdead


deve ser o dobro do tempo do parmetro deadtime.
udpport : Porta UDP de comunicao bast e ucat do sistema. Por default usada a porta 694.
bcast: Qual interface de rede deve ser usada para para a troca de heartbeats entre os nodos do
cluster.
auto_failback: Determina se a mquina primria voltar a ser o servidor master do cluster aps ter
sido substituda pela mquina secundria no momento de uma falha.

Exemplo:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility daemon
keepalive 1
deadtime 4
warntime 10
initdead 120
udpport 694
bcast eth0
auto_failback on
node servidorPRIMARIO
node servidorSECUNDARIO
ping 192.168.250.254
debug 1

Figura 1: Exemplo de aplicao de Heartbeat

http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 33/34 -

Asterisk PBX na Prtica Avanado_V.2.5

DNS RR
DNS Round-Robin a implementao do servidor DNS onde so resolvidos diferentes endereos IP
para a mesma identificao de host. Comumente utilizado para a distribuio de processamento entre
diferentes servidores. Seu maior problema no ter nenhum critrio de balanceamento de carga e/ou
performance para a distribuio dos endereos IP.
Exemplo:
ipbx

192.168.0.11
192.168.0.12
192.168.0.13

Figura 2: Exemplo de implementao de DNS Round-Robin

Figura 3: Exemplo de aplicao com Heartbeat e DNS Round-Robin


http://www.asteriks.com.br

Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010

- 34/34 -

Você também pode gostar