Escolar Documentos
Profissional Documentos
Cultura Documentos
na prtica
Avanado
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
- 2/34 -
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
- 3/34 -
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
http://www.asteriks.com.br
- 4/34 -
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.
b.
c.
d.
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.
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.
http://www.asteriks.com.br
- 5/34 -
i.
[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
- 6/34 -
http://www.asteriks.com.br
- 7/34 -
http://www.asteriks.com.br
- 8/34 -
- 9/34 -
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
/etc/odbcinst.ini
[MySQL]
Description
Driver
= /usr/lib/odbc/libmyodbc.so
Setup
= /usr/lib/odbc/libodbcmyS.so
FileUsage
= 1
Digite odbcinst
-q -d
/etc/odbc.ini
[asterisk-mysql]
Description
= MySQL Asterisk
Driver
= /usr/lib/odbc/libmyodbc.so
SERVER
= localhost
PORT
= 3306
DATABASE
= proibidos
OPTION
= 3
USER
= root
PASSWORD
-v asterisk-mysql
Digite isql
http://www.asteriks.com.br
- 10/34 -
[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
odbc
show
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.
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
- 11/34 -
http://www.asteriks.com.br
- 12/34 -
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
[RJ-SP],
- 13/34 -
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
[SP-RJ],
http://www.asteriks.com.br
- 14/34 -
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:
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
de
altere
arquivo
SENDTO=fax-incoming@company.com
FILETYPE=pdf:
http://www.asteriks.com.br
- 15/34 -
IAXModem:
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
Asterisk:
[iaxmodem]
context = enviafax
host = dynamic
username = iaxmodem
secret = password
type = friend
disallow = all
allow = slinear
qualify = yes
/etc/asterisk/extensions.ael
9090 => {
Answer;
Dial(IAX2/iaxmodem);
Wait(2);
HangUp;
}
http://www.asteriks.com.br
- 16/34 -
context enviafax {
includes {
ddi;
}
}
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
Exemplo:
asteriks:~# faxstat
HylaFAX scheduler on asteriks: Running
Modem ttyIAX (+47 33676271): Running and idle
http://www.asteriks.com.br
- 17/34 -
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
http://www.asteriks.com.br
- 18/34 -
Laboratrio
2
Neste laboratrio ser feita a migrao das regras do contexto
dados MySQL.
ramais
ramais,
e insira as
switches {
Realtime/ramais@extensions;
}
http://www.asteriks.com.br
- 19/34 -
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
= "pt-br,";
= "pt-brPA,";
http://www.asteriks.com.br
- 20/34 -
/usr/src/asterisk/apps/Makefile
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
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
- 21/34 -
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
== Found
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
- 22/34 -
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
- 23/34 -
http://www.asteriks.com.br
- 24/34 -
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
- 25/34 -
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
- 26/34 -
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
http://www.asteriks.com.br
- 27/34 -
4. Instalar o QueueMetrics
cd /var/lib/tomcat5.5/webapps/
tar xvzf /usr/src/queuemetrics/QueueMetrics-1.5.2-trial.tar.gz
http://www.asteriks.com.br
- 28/34 -
= $options{d} || "queuemetrics";
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
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/.
login = demoadmin
senha = demo
http://www.asteriks.com.br
- 29/34 -
Captulo 10
Asterisk2Billing
/usr/src/a2billing/a2billing.conf
http://www.asteriks.com.br
- 30/34 -
/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;
}
}
http://www.asteriks.com.br
- 31/34 -
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:
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:
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
- 32/34 -
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
http://www.asteriks.com.br
- 33/34 -
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
- 34/34 -