Asterisk Avancado

Embed Size (px)

Citation preview

  • 8/18/2019 Asterisk Avancado

    1/34

     

    Asterisk ® PBX

    na práticaAvançado

  • 8/18/2019 Asterisk Avancado

    2/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 2/34 -

    Índice

    Capítulo 1 –   Revisão: DialPlan – SIP – Links E1 – Macros ......................................................................3 Capítulo 2 –   Asterisk Extension Language ................................................................................................7 

    Capítulo 3 –   Asterisk Database (AstDB) / Aplicação MySQL()................................................................9 Capítulo 4 –   Trunks IAX2 ........................................................................................................................13 Capítulo 5 –   Servidor de Faxes com HylaFAX + IAXModem ................................................................15 Capítulo 6 –   ARA - Asterisk RealTime Architecture...............................................................................18 Capítulo 7 –   Verbio ..................................................................................................................................20 Capítulo 8 –   DUNDi.................................................................................................................................25 Capítulo 9 –   Filas de Atendimento (DAC) e QueueMetrics.....................................................................28 Capítulo 10 –   Asterisk2Billing .................................................................................................................30 Capítulo 11 –   HeartBeat e DNS RR .........................................................................................................32 

  • 8/18/2019 Asterisk Avancado

    3/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 3/34 -

    Capítulo 1 – Revisão: DialPlan – SIP – Links E1 – Macros

    !"#$%"&'%($ *

    Neste laboratório será feita a instalação do Asterisk, drivers para as placas de comunicação da

    Digivoice e os arquivos de som em português brasileiro.

    1.  Download dos arquivoscd /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.gzwget 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 arquivoscd /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 comentáriobasta inserir o caractere # no início da linha.

    cd /usr/src/dahdi-linux-versão 

    make install

    cd /usr/src/dahdi-tools-versão 

    ./configure

    make install

  • 8/18/2019 Asterisk Avancado

    4/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 4/34 -

    LibPRI:

    ln –s /usr/src/libpri-versão /usr/src/libpri 

    cd /usr/src/libpri

    make install

     Asterisk:

    cd /usr/src

    ln –s /usr/src/asterisk-versão /usr/src/asterisk 

    cd /usr/src/asterisk

    ./configure

    make menuselect

    make install

    make samples

    make config

     Asterisk-AddOns:

    cd /usr/src/asterisk-addons-versão 

    ./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 português brasileiro (pt_BR)

    cd /var/lib/asterisk

    tar xvzf /usr/src/fontes/sounds-1.0-pt_BR.tar.gz

  • 8/18/2019 Asterisk Avancado

    5/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 5/34 -

    4.  Inicializar os arquivos de configuração do Asteriskecho 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

    !"#$%"&'%($ +

    Neste laboratório será feita a configuração completa de um servidor IPBX.

    1.  Configure o seu servidor Asterisk de acordo com as instruções 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 deverão ser colocadas no contexto ramais.

    d .  Todas as chamadas externas devem ser gravadas.

    e .  Devem  ser criados contextos distintos para cada um dos destinos possíveis, como porexemplo LOCAL FIXO, LOCAL MÓVEL, DDD FIXO, DDD MÓVEL e DDI.

    f .  Os números de serviço, 0300, 0800 e 0900 devem estar em um contexto separado sendoterminados pelo link E1.

    g .  As chamadas LOCAL e DDD Fixo serão terminadas via Link E1, com saída redundante pelo provedor VoIP. A operadora PSTN (link E1) exige a entrega das ligações nos formatos:

    •  099 + DDD + número, como por exemplo: 0994730565620 para destinos interurbanos.

    •  número, como no exemplo: 40639374 para os destinos locais.

    h .  As chamadas DDD Móvel e DDI serão terminadas via provedor VoIP. O provedor VoIPexige a entrega das ligações no formato:

    •  55 + DDD + número, como por exemplo: 554784046006 para destinos DDD Móvel.

    •  PAÍS + número, como no exemplo: 13458763646 para destinos DDI.

  • 8/18/2019 Asterisk Avancado

    6/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 6/34 -

    i .  Configure a conexão com o provedor VoIP de acordo com as informações a seguir.[asteriks]

    context = entradaSIP

    type = friend

    defaultuser = cliente   

    secret = senha

    fromuser =   

    host =   

    insecure = invite,port

    qualify = yes

    port = 5060

    nat = yes

    disallow = all

    allow = gsm

    allow = g729dtmfmode = rfc2833

    canreinvite = no

  • 8/18/2019 Asterisk Avancado

    7/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 7/34 -

    Capítulo 2 – Asterisk Extension Language

    Neste laboratório será feita a construção de uma URA no modo de programação 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;

    }

  • 8/18/2019 Asterisk Avancado

    8/34

  • 8/18/2019 Asterisk Avancado

    9/34

  • 8/18/2019 Asterisk Avancado

    10/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 10/34 -

    !"#$%"&'%($ +

    Neste laboratório será feita o desenvolvimento de uma função para o bloqueio do envio de ligações,

    baseados em uma tabela no banco de dados MySQL utilizando ODBC.

    1.  Criar a base de dados de números 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 /etc/odbcinst.ini para a configuração do conector do banco de dados com o UnixODBC.

    [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 /etc/odbc.ini  para a configuração do arquivo dereferência entre o Asterisk o UnixODBC.

    [asterisk-mysql]

    Description = MySQL Asterisk

    Driver = /usr/lib/odbc/libmyodbc.so

    SERVER = localhost

    PORT = 3306

    DATABASE = proibidos

    OPTION = 3

    USER = root

    PASSWORD = 

    • Digite isql -v asterisk-mysql a fim de verificar se o conector está adequadamente configurado.

  • 8/18/2019 Asterisk Avancado

    11/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 11/34 -

    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 =>   

    pre-connect => yes

    idlecheck => 3600

    • Para ativar as alterações, recarregue o módulo ODBC através da console do Asterisk com ocomando module reload res_odbc.so

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

    *CLI> odbc show

    ODBC DSN Settings

    -----------------

    Name: ipbx

    DSN: ipbx-mysql

    Pooled: No

    Connected: Yes

    4.  Para que o Asterisk acesse a base de dados MySQL, deve-se criar funções ODBC para a seleção,

    atualização, exclusão ou inserção de informações.• Adicione as linhas a seguir ao arquivo /etc/asterisk/func_odbc.conf  e digite module reloadfunc_odbc.so na console do Asterisk para ativar as alterações.

    [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})}'

  • 8/18/2019 Asterisk Avancado

    12/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 12/34 -

    5.  Adicione as linhas a seguir ao arquivo /etc/asterisk/extensions.ael, dentro do contexto aplicacoes. Noteque para cadastrar um número que será bloqueado deve-se discar o código 60 seguido do númerocompleto de telefone no formato DDD + número. E para a liberação de um número de telefone, ouseja a sua exclusão da base de dados, deve-se usar o código 61 seguido do número completo de

    telefone no formato DDD + número.

    // 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 terminação da chamada

    macro externas (TERMINACAO, PREFIXO, DESTINO) {

    // Checa se o número de destino é permitido

    Gosub(proibidos,s,1(${DESTINO}));

    // Inicia gravação da chamada

    Gosub(gravachamada,s,1(${DESTINO}));

    // Executa a chamada

    Dial(${TERMINACAO}/${PREFIXO}${DESTINO},,tT);

    HangUp;

    }

    // Fim da MACRO externas

  • 8/18/2019 Asterisk Avancado

    13/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 13/34 -

    Capítulo 4 – Trunks IAX2

    Neste laboratório será feita a integração de todos os servidores da sala de aula através da utilização de

     Trunks IAX2.• A seguir está um exemplo de interligação de duas filiais, uma localizada no Rio de Janeiro e outra em

    São Paulo. Tomando como base este exemplo, monte a estrutura de Trunks IAX2 com todos os

    servidores da sala de aula.

    • Supondo-se que o endereço IP do servidor da filial de São Paulo é 200.1.1.1  e o endereço IP do

    servidor da filial do Rio de Janeiro é 200.2.2.2.

    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 endereço 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 criação da conta para o recebimento das chamadas, [RJ-SP], o próprio nome da conta

    funciona como nome do usuário para a autenticação.

    • Arquivo /etc/asterisk/extensions.ael, contexto ramais:_02190XX => Dial(IAX2/RJ/${EXTEN:3},30,tT);

    context entradafiliais {

    includes {

    ramais;}

    }

  • 8/18/2019 Asterisk Avancado

    14/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 14/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 endereço 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 criação da conta para o recebimento das chamadas, [SP-RJ], o próprio nome da conta

    funciona como nome do usuário para a autenticação.

    • Arquivo /etc/asterisk/extensions.ael, contexto ramais:_01190XX => Dial(IAX2/SP/${EXTEN:3},30,tT);

    context entradafiliais {

    includes {

    ramais;

    }

    }

  • 8/18/2019 Asterisk Avancado

    15/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 15/34 -

    Capítulo 5 – Servidor de Faxes com HylaFAX + IAXModem

    Neste laboratório será implementada a função de envio e recepção de faxes através do Asterisk.

    1. 

    Instalaraptitude 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: 0

    InternationalPrefix: 00

    DialStringRules: etc/dialrules

    ServerTracing: 0xFFF

    SessionTracing: 0xFFF

    RecvFileMode: 0600

    LogFileMode: 0600

    DeviceMode: 0600

    RingsBeforeAnswer: 2

    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 endereço de e-mail altere o arquivo/var/spool/hylafax/etc/FaxDispatch conforme o exemplo a seguir:

    [email protected]

    FILETYPE=pdf:

  • 8/18/2019 Asterisk Avancado

    16/34

  • 8/18/2019 Asterisk Avancado

    17/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 17/34 -

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

    includes {

    ddi;

    }}

    • Adicionar um usuário para o envio de faxes pelos clientes do HylaFAX:faxadduser fax

    Iniciando os serviços:

    /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 serviços estão rodando corretamente:

    Exemplo:asteriks:~# faxstat

    HylaFAX scheduler on asteriks: Running

    Modem ttyIAX (+47 33676271): Running and idle

  • 8/18/2019 Asterisk Avancado

    18/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 18/34 -

    Capítulo 6 – ARA - Asterisk RealTime Architecture

    !"#$%"&'%($ *

    Neste laboratório será feita a migração dos arquivos de configuração dos seus ramais SIP para o

    servidor de banco de dados MySQL.

    MySQL:

    • Criar as tabelas no servidor MySQLcd /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 =

    dbport = 3306

    dbsock = /var/run/mysqld/mysqld.sock

  • 8/18/2019 Asterisk Avancado

    19/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 19/34 -

    5.  Preparação dos arquivos de ramais

    • Edite o arquivo /etc/asterisk/sip.conf e comente todas as linhas de configuração 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 endereço HTTP://localhost/phpmyadmin e cadastre os seus ramais na tabela sip.

    7.  Testar

    • Reinicie o Asterisk para ativar as alterações

    !"#$%"&'%($ +

    Neste laboratório será feita a migração das regras do contexto ramais  para o servidor de banco de

    dados MySQL.

    • Migre todas as extensões do contexto ramais para o Banco de Dados.

    • Edite o arquivo /etc/asterisk/extensions.ael, comente todas as extensões do contexto ramais, e insira as

    linhas a seguir para que o Asterisk utilize as regras inseridas no Banco de Dados.

    switches {

    Realtime/ramais@extensions;

    }

  • 8/18/2019 Asterisk Avancado

    20/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 20/34 -

    Capítulo 7 – Verbio

    !"#$%"&'%($ *

    Neste laboratório será instalado o software de reconhecimento da fala (ASR) e de conversão 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 parâmetros 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,";

  • 8/18/2019 Asterisk Avancado

    21/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 21/34 -

    Integrar o Verbio ao Asterisk:

    1.  Preparando a compilação do módulo do Verbio

    cd /usr/src/verbio

    cp app_verbio_speech.c /usr/src/asterisk/apps/

    2.  Recompilar o Asterisk. Edite o arquivo /usr/src/asterisk/apps/Makefile e insira as linhas abaixo antesda instrução all: _all 

    MENUSELECT_DEPENDS_app_verbio_speech+=VOX

    VOX_LIB=-lvoxlib

    cd /usr/src/asterisk

    makemake 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 configuração do Verbio para a pasta correta.

    cd /usr/src/verbio

    cp verbio-asterisk-3.0/verbio.conf /etc/asterisk

    !  Setar o idioma para português brasileiro. Edite o arquivo /etc/asterisk/verbio.conf e altere os parâmetros a

    seguir:

    [tts]

    default_language = pt-br

    default_speaker = julia

    [asr]

    default_config = pt-br

    default_language = pt-br

  • 8/18/2019 Asterisk Avancado

    22/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 22/34 -

    4.  Iniciar o Verbio.

    !  Digite a instrução a seguir na console do Linux para iniciar o Verbio em modo demonstração. Neste

    modo o Verbio irá rodar por aproximadamente 30 minutos.

    verbiod –e

    5.  Ativar os módulos do Verbio para o Asterisk.

    !  Na console do Asterisk digite module load app_verbio_speech.so e verifique se as aplicações 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)

    !"#$%"&'%($ +

    Neste laboratório será implementada uma regra de discagem para teste de conversão 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 conversão de texto para fala do Verbio com o Asterisk.”,1500,100,,,,,,dvg);

    HangUp;

    }

  • 8/18/2019 Asterisk Avancado

    23/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 23/34 -

    !"#$%"&'%($ ,

    Neste laboratório será modificada a URA para a utilização das tecnologias de (ASR) e de conversão

    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

    2 Atendimento

    3 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 extensão s

    // Opcao invalida, desvia para correio de voz

    i => {

    VerbioPrompt(Opcao inválida.);

    goto correiotelefonista,s,1;

    }

    // Nao digitou nada, desvia para o ramal 9002

    t => {

    VerbioPrompt(Não pressionou nada.);

    Gosub(discaramal,s,1(SIP,9002));

    }

    // Opcao 1 - Comercial

    1 => {

    VerbioPrompt(Opção Departamento Comercial.);

    Dial(SIP/9002&IAX2/9003,15,tT);

    Goto(correiotelefonista,s,1);

    }

  • 8/18/2019 Asterisk Avancado

    24/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 24/34 -

    // Opcao 2 - Atendimento a Clientes

    2 => {

    VerbioPrompt(Opção Atendimento a Clientes.);

    Dial(SIP/9007,15,tT);

    Dial(SIP/9004,15,tT);Goto(correiotelefonista,s,1);

    }

    // Opcao 3 - Transportes

    3 => {

    VerbioPrompt(Opção Transportes.);

    Dial(SIP/9006,15);

    Voicemail(9006);

    }

  • 8/18/2019 Asterisk Avancado

    25/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 25/34 -

    Capítulo 8 – DUNDi

    Neste laboratório 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 São 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 endereço IP do servidor da filial de São Paulo é 192.168.250.250 e o endereço IP do

    servidor da filial do Rio de Janeiro é 192.168.250.251. 

    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

  • 8/18/2019 Asterisk Avancado

    26/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 26/34 -

    [mappings]

    local-dundi => local-asterisk,0,IAX2,contaparadundi:${SECRET}@192.168.250.250/${NUMBER:3}

    [00:0c:29:a1:3e:98]

    model = symmetrichost = 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

  • 8/18/2019 Asterisk Avancado

    27/34

  • 8/18/2019 Asterisk Avancado

    28/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 28/34 -

    Capítulo 9 – Filas de Atendimento (DAC) e QueueMetrics

    Neste laboratório 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/

  • 8/18/2019 Asterisk Avancado

    29/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 29/34 -

    6.  Configurar o qloader. Edite o arquivo /var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysql-utils/qloader/qloader.pl de acordo com as informações 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 execução automática do qloader.

    • Edite o arquivo /var/lib/tomcat5.5/webapps/queuemetrics-1.5.2/WEB-INF/mysql-utils/qloader/Other-

    initscripts/qloaderd de acordo com as informações a seguir:

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

    • Execute as instruções a seguir para a execução do qloaderd na inicialização 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 serviços:

    /etc/init.d/qloaderd restart

    /etc/init.d/tomcat5.5 restart

    Testar o funcionamento:

    1.  Acesse o endereço http://localhost:8180/queuemetrics-1.5.2/. Utilize para o logon as informações aseguir:

    login = demoadmin

    senha = demo

  • 8/18/2019 Asterisk Avancado

    30/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 30/34 -

    Capítulo 10 – Asterisk2Billing

    Neste laboratório será instalado o software de tarifação 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 configuração do A2Billing. Edite o arquivo /usr/src/a2billing/a2billing.conf  ealtere o parâmetro dbtype para mysql.

    4.  Instalar o A2Billing: GUI, AGIs e sons em português 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/

  • 8/18/2019 Asterisk Avancado

    31/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 31/34 -

    Preparar o Asterisk para funcionar com o A2Billing:

    5.  Configurar uma conta AMI para o A2Billing. Edite o arquivo /etc/asterisk/manager.conf e adicione aconta a seguir:

    [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 peloA2Billing.

    context a2billing {

    _X. => {Answer;

    Wait(1);

    AGI(a2billing.php);

    Wait(1);

    Hangup;

    }

    }

    7.  Faça o include do contexto criado no item anterior no contexto ramais.

    Testar o funcionamento:

    8.  Acesse o endereço http://localhost/a2billing. Utilize para o logon as informações a seguir:

    login = root

    senha = myroot

  • 8/18/2019 Asterisk Avancado

    32/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    http://www.asteriks.com.br   Todos os direitos reservados a Asteriks (Alexandre Keller) - 27/1/2010- 32/34 -

    Capítulo 11 – HeartBeat e DNS RR

    -."%."&

    Usado para construir clusters de altíssima disponibilidade. Trabalha enviando um ‘heartbeat’ entre

    duas máquinas, uma primária ou master e outra secundário ou slave. Em caso de falha, a máquina

    configurada como secundária irá assumir os serviços que estavam rodando na máquina primária.

    Os clientes acessam os serviços rodando no cluster através de um endereço IP único, publicado pela

    máquina considerada primária. Em caso de queda ou falha na máquina primária, este endereço IP é

    automaticamente assumido pela máquina secundária, que neste momento passa a ser o servidor master do

    cluster.

     A configuração do Heartbeat envolve três aquivos, que devem ser duplicados em ambos os servidores.

    !  /etc/heartbeat/authkeys: arquivo da chave e forma de autenticação 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

    3 md5

    !  /etc/heartbeat/haresources: especifica os serviços compartilhados e o host primário do cluster.

    Sintaxe: IPaddr::

    Exemplo:servidorPRIMARIO IPaddr::192.168.0.10 asterisk mysql

    !  /etc/heartbeat/ha.cf: lista dos nodos do cluster, topologia de comunicação e as funcionalidades habilitadas

    na configuração.

    !  "#$%&'()#* +,-%(./ /0"# +1 2#01+ "# "#$%& 1#,3/ &,+.+"+14

    !  )/&'()#* +,-%(./ /0"# +1 "#2+(1 2#01+ 1#,3/ &,+.+"+14

    !  5##6+)(.#* 7#26/ "# #0.(/ "/ 8#+,7$#+7 #07,# /1 0/"/1 "/ 9)%17#,4

    !  "#+"7(2#* -%+07/ 7#26/ "# (0+7(.("+"# 6+,+ "#9)+,+, / 0/"/ 9/2/ (0+7(./4

    !  :+,07(2#* -%+07/ 7#26/ +07#1 "# #0.(+, / ;)7(2/ +.(1/ "# 8#+,7$#+7 6+,+ /1 0/"/1 "/ 9)%17#,4

    !  (0(7"#+"*

  • 8/18/2019 Asterisk Avancado

    33/34

  • 8/18/2019 Asterisk Avancado

    34/34

     Asterisk ® PBX na Prática Avançado_V.2.5

    /01 22

    DNS Round-Robin é a implementação do servidor DNS onde são resolvidos diferentes endereços IP

    para a mesma identificação de host. Comumente utilizado para a distribuição de processamento entre

    diferentes servidores. Seu maior problema é não ter nenhum critério de balanceamento de carga e/ouperformance para a distribuição dos endereços IP.

    Exemplo:ipbx A 192.168.0.11

    192.168.0.12

    192.168.0.13

    M(&%,+ R* OP#26)/ "# (26)#2#07+>3/ "# FST U/%0"VU/$(0

    M(&%,+ W* OP#26)/ "# +6)(9+>3/ 9/2 Q#+,7$#+7 # FST U/%0"VU/$(0