Você está na página 1de 177

ASTERISK

Ateno

Com o intuito de oferecer sempre os melhores servios pedimos alguns minutinhos de sua ateno:

Celular: mantenha-o no modo silencioso/vibrador. Dvidas: sobre os tpicos que estiverem sendo apresentados sero discutidas durante o curso, dvidas sobre projetos e implantaes podero ser discutidas no intervalos ou por e-mail. Desejamos uma tima aula.

Introduo ao Asterisk

Asterisk um Software Livre (cdigo aberto), que implementa as funcionalidades de um PABX. Criado por Mark Spencer a mais de 10 anos. Jim Dixon, criador do projeto Zapata.

Aplicaes

Interligando um PABX-IP em um PABX convencional utilizando E1:

Aplicaes

PABX convencional e PABX-IP Asterisk. Ligaes entrantes pela PSTN:

Aplicaes

PABX convencional e PABX-IP Asterisk. Ligaes de sada para nmeros locais e operadora PSTN:

Aplicaes

PABX convencional e PABX-IP Asterisk. Ligaes de sada para nmeros ddd e operadora VoIP:

Aplicaes

PABX convencional e PABX-IP Asterisk. Ligaes entre ramais do PABX convencional e ramais do PABX Asterisk:

Aplicaes

PABX convencional e PABX-IP Asterisk. Ligaes entre ramais do PABX Asterisk e ramais do PABX convencional:

Aplicaes

Integrando filiais com tronco IAX2.

Vantagens do VoIP e Asterisk

Reduo de custos; Mobilidade; Cabeamento nico; UC;

AsteriskIPBX - Arquitetura

Podemos definir a arquitetura bsica do Asterisk como: Protocolos: SIP, IAX, H323, DGV Canais de Comunicao: SIP/1000, DGV/g1 Codecs: g711a, g729a, GSM Aplicaes: Dial, PlayBack, MeetMe, HangUp

Protocolos VoIP

Protocolos mais utilizados: SIP e IAX2 SIP Padro IETF; Portas TCP/IP e UDP 5060; Mdia RTP (10000 20000); IAX2 Utilizado para interligar centrais Asterisk; Porta TCP-UDP 4569

Canais de Comunicao

SIP/1000 IAX2/1010 Protocolo - identificao

Codec

CoDec (enCoder/Decoder), codificao e decodificao de sinais. Codificao de Sinais, transformar um sinal analgico em digital e vice-versa.

1101001010100100100101001010

Codec

Compresso de Sinais, reduzir o tamanho de um sinal digital (pacote), com intuito de otimizar o consumo de banda.

Codec G711

G711a Padro utilizado no Brasil pelas operadoras PSTN. pcm-a - G711a alaw 64kbps pcm-u - G711u ulaw 64kbps Codec de baixa compresso e baixa latncia.

Codec GSM

GSM O mesmo padro utilizado pelos telefones celulares. GSM 13,2kbps. Codec com compresso e consequentemente com latncia.

Codec G729a

G729a Codec proprietrio DIGIUM. G729a 8kbps. Codec com compresso e consequentemente com latncia.

8kbps de dados para udio

PassThrough de udio

Quando o codec de udio entre os clientes so iguais , entre os Call Legs (pernas), o Asterisk faz o passthrough do udio.

Transcodificao de Codecs

Caso os codecs entre as pernas de uma chamada sejam diferentes o Asterisk far a transcodificao, ou seja a converso de formatos. Este processo gera latncia.

Transcodificao de Codecs com G729

Caso uma das pernas use o codec G729, o Asterisk deve possuir licenas para que seja possvel a transcodificao. Codec com custo. Aps a instalao do codec podemos checar com o comando: CLI> g729 show licenses
Obs: Se um terminal esta em G729 e a musiconhold em mp3 ocorre transcodificao.

Prioridade de Codecs

A prioridade dos codecs definida pelo dispositivo que inicia a chamada.


[peer1] disallow=all allow=alaw allow=g729 [peer2] disallow=all allow=g729 allow=alaw

Escolha da CPU

No existe mgica para a escolha. Segundo a Digium caso sejam utilizadas simultneas 120 transcodificaes G711 para G729 ser necessrio um Xeon 3.0 Dual Core. 300 chamadas simultneas em passthrough utilizando um Semprom 2.6 1Gb RAM com consumo de 90% de CPU. Gravao e Transcodificao.

Instalar o AsteriskIPBX

Verses de Asterisk:

Instalar o AsteriskIPBX

Diretrios:
/usr/lib/asterisk/modules/ /etc/asterisk/ /var/lib/asterisk/licences/ /var/lib/asterisk/moh/ /var/lib/asterisk/sounds/ /var/log/asterisk/ (.so) (configurao) (licenas como o g729a) (musica em espera) (arquivos de sons) (arquivos de log)

Instalar o AsteriskIPBX

Para o que servem os pacotes instalados: DAHDI Drivers para placas Digium (A partir de 2008 deixou-se de utilizar o Zaptel); LibPri Pacotes para a sinalizao ISDN; Asterisk Software de PABX; Asterisk-Addons pacotes que no seguem o GPL, como, MP3, H.323, conectividade MySQL;
Info sobre Asterisk 1.8 https://wiki.asterisk.org/wiki/display/AST/Asterisk+1.8+Documentation

Instalar o AsteriskIPBX

Laboratrio 1. (40 min)

Instalar o AsteriskIPBX

asterisk cvvv (Carrega o asterisk como cliente e habilita verbose em 3); asterisk r asterisk g (Mostra console do asterisk); (Usado para debug com gdb, cria core dump) (Iniciar asterisk como servio)

/etc/init.d/asterisk start

Instalar o AsteriskIPBX

Comandos: core core core core core show version show applications show application Dial set verbose show channels

Instalar o AsteriskIPBX

Precisamos aprender a interpretar as mensagens de console, para isso devemos utilizar no mnimo um verbose em nvel 3. CLI> core set verbose 3

Obs: Podemos ajustar o verbose automaticamente ao iniciar o asterisk, para isso descomente o parmetro de verbose no arquivo asterisk.conf.

Instalar o AsteriskIPBX

Tentativa de registro de um peer SIP no servidor de um provedor VoIP.


[Sep 3 15:09:14] NOTICE[3316]: chan_sip.c:11551 sip_reg_timeout: -Registration for 85103@200.201.54.23' timed out, trying again (Attempt #8)

Obs: Este NOTICE pode ser desabilitado no arquivo logger.conf

Instalar o AsteriskIPBX

Reiniciar: core restart <regra> Parar: core stop <regra> Regra: now (imediatamente) gracefully (no permite novas chamadas) when convenient (somente quando no houver mais chamadas)

Placas DigiVoice FXO VB0408PCI

4 ou 8 canais FXO; DSP com tratamento de codecs G711 e GSM; Cancelamento de Eco por DSP;

Placas DigiVoice FX VB0404FX

4 canais FXS; 2 canais FXO e 2 canais FXS; 1 canal FXO e 3 canais FXS; DSP com tratamento de codecs G711 e GSM; Cancelamento de Eco por DSP;

Placas DigiVoice E1 VB3030PCI

1 canal E1 (R2-MFC ou ISDN-Pri) DSP com tratamento de codecs G711 e GSM; Cancelamento de Eco por DSP; R2-MFC nativo pelo DSP; ISDN utiliza LibPri (Asterisk);

Placas DigiVoice E1 VB3030PCIe

Debug: 1 Testar cabos coaxiais, pode ser feito loop (TX-RX) no modem da PSTN; 2 Testar cabo UTP, pode ser utilizado testador de cabos UTP; 3 Testar placa DigiVoice com loop (TXRX) no conector RJ-45;

Placas DigiVoice - Cabeamento E1

Em um cabo normal temos uma pinagem entre os conectores de 1:1, so utilizados os terminais 1 e 2 para TX e 4 e 5 para RX. Pode ser utilizado um cabo de rede CAT568.

Placas DigiVoice - Cabeamento E1

Em um cabo crossover temos uma pinagem com inverso entre os terminais 1 e 2 para TX e 4 e 5 para RX. Este cabo comumente utilizado para conectar sistemas que possuam conexo E1 em RJ-45 com mesma pinagem entre TX e RX.

Placas DigiVoice E1 VB6060PCI e PCIe

Placas DigiVoice GSM VB0404GSM

Placas DigiVoice - Debug

O vlib_diag um aplicativo destinado a testar as funcionalidades das placas DigiVoice. Com este aplicativo podemos originar e receber ligaes, gravar e reproduzir udio, entre outros testes.

Para execut-lo encerre os servios do asterisk com core stop now no CLI> e de qualquer diretrio do linux execute o comando vlib_diag

Placas DigiVoice - Debug

O console do Asterisk permite que utilizemos comandos para analisar o funcionamento das placas DigiVoice. Ex: CLI> dgv show alarms

Configurao Arquivo digivoice.conf

A configurao dos parmetros de funcionamento das placas encontram-se no arquivo digivoice.conf, localizado no diretrio /etc/asterisk/ e dispostos em forma de sees. Neste arquivo configuramos os parmetros das placas instaladas, E1, FXO, FXS e GSM, podemos configurar o E1 como R2 ou ISDN, os ganhos tx e rx, eco, entre outros. Todos os parmetros de configurao encontram-se documentados no arquivo digivoice.conf.help,que est no diretrio ../dgvchannel-1.0.5/

Seo - [general]

Nesta seo podemos habilitar/desabilitar os codecs utilizados. [general] allow_slinear=0 ;codec linear allow_ulaw=1 ; codec g711u allow_alaw=1 ; codec g711a allow_gsm=0 ; codec GSM consolelanguage=br - utilizar os idiomas br ou en para as mensagens de help e alarmes no console do asterisk.

Seo - [allportsconfig]

- configuramos as opes de sinalizao e callprogress [allportsconfig] default_callprogress=cp_default.cfg detectiontype = 1 ; (1-DTMF, 2-MFP) dialtype = 1 ; (0-Pulso, 1-DTMF) afterdialpause=1000 ; Tempo em milesegundos para pausa apos a discagem. ringbacktone1 = tone1 ringbacktone2 = tone1 ringbacktimes = 1000,4000,1000,4000 busytone1 = tone1 busytone2 = tone1 busytimes = 250,250,250,250 subchannelringtone1=tone1 subchannelringtone2=tone1 subchannelringtimes=100,100,100,5000

Seo - [groups]

- configuramos os canais que sero utilizados por cada grupo, podemos desta forma configurar e utilizar um grupo de canais alm dos canais independentes. [groups] group=1 ports=>1-30 group=2 ports=>31-60 group=3 ports=>61-64 - pode-se alterar os grupos como desejar de forma independente das placas, ex: group = 3 ports => 61 group = 4 ports => 62-64

Seo [port_config] (PSTN R2-MFC)


[port_config] ; -> Exemplo de configuracao para sinalizacao R2 ligado com a ; rede publica de telefonia. signalling=r2mfc_ndis_fixed context=from-pstn language=pt_BR accountcode= musiconhold= tx_gain=-3 ; (-40 a 12) rx_gain=0 ; (-40 a 12) echotype=dsp ; swleg echocan=3 echotraining=1000 callprogress=cp_default.cfg silence_threshold=-30 relaxdtmf=1 ; (0 3)

Seo [port_config] (PSTN R2-MFC)


gen_dtmf=1 gen_ringback=1 gen_busy=1 dtmf_to_asterisk=2 faxdetection=1 faxpasstrhough=0 drop_tx_samples_factor=33 r2_country=br max_digits_rx=4 cid_pos=2 category=1 group_b_value=1 port_id=1145678901 b_subscriber_hangup=0 ccb_pass_through=0 wait_dialtone=1 ;Aguarda confirmao de ocupao R2 dialtone_timeout=3000 ; Disca MFC aps timeout de 3 seg. ports=>1-30

Seo [port_config] (PABX R2-MFC)


; -> Exemplo de configuracao para sinalizacao R2 ligado com um ; pabx legado. signalling=r2mfc_ndis_variable context=from-internal language=pt_BR accountcode= musiconhold= tx_gain=-6 rx_gain=0 echocan=2 echotraining=400 callprogress=cp_default.cfg silence_threshold=-24 relaxdtmf=1 gen_dtmf=1 gen_ringback=1 gen_busy=1

Seo [port_config] (PABX R2-MFC)


dtmf_to_asterisk=2 faxdetection=1 drop_tx_samples_factor=33 r2_country=br min_digits_rx=1 max_digits_rx=20 interdigit_timeout=2000 cid_pos=0 category=1 group_b_value=1 port_id= b_subscriber_hangup=0 ccb_pass_through=0 wait_dialtone=1 dialtone_timeout=3000 ports=>31-60

Seo [port_config] (FXO)

; -> Exemplo de configuracao para placa FXO 4 canais/portas. signalling=fxo context=from-pstn language=pt_BR accountcode= musiconhold= tx_gain=-6 rx_gain=0 echocan=4 echotraining=1200 callprogress=cp_default.cfg silence_threshold=-36 relaxdtmf=1

Seo [port_config] (FXO)

gen_dtmf=1 gen_ringback=1 gen_busy=1 dtmf_to_asterisk=2 cid_type=1 (1-DTMF, 2-FSK) faxdetection=1 drop_tx_samples_factor=33 wait_dialtone=1 dialtone_timeout=3000 ports=>61-64

Seo [port_config] (FXS)

; -> Exemplo de configuracao para placa FXS 4 canais/portas. signalling=fxs context=from-internal language=pt_BR accountcode= musiconhold= tx_gain=-6 rx_gain=-6 echocan=3 echotraining=64 callprogress=cp_default.cfg silence_threshold=-24 relaxdtmf=1 gen_dtmf=0 gen_ringback=1

Seo - [port_config] (FXS)

gen_busy=1 dtmf_to_asterisk=1 faxdetection=1 drop_tx_samples_factor=33 port_id= dialtone_timeout=10000 flash_min_time=80 flash_max_time=650 ring_type=2 mailbox= immediate=no second_call_digits= ports=>65-68

Seo [port_config] (GSM)

; -> Exemplo de configuracao para placa GSM 4 canais/portas. signalling=gsm context=from-pstn language=pt_BR accountcode= musiconhold= tx_gain=-6 rx_gain=-6 echocan=4 echotraining=1200 callprogress=cp_default.cfg silence_threshold=-36 relaxdtmf=1 gen_dtmf=0

Seo [port_config] (GSM)

gen_ringback=1 gen_busy=1 dtmf_to_asterisk=2 faxdetection=1 drop_tx_samples_factor=33 hide_number=0 pin_number= ports=>69-72

Seo - [e1_config]

[e1_config] e1_sync=1 ;e1_sync_alternative=2 use_crc4=0 span=1,cas ;span=1,ccs,cpe,euroisdn,overlapdial,local,local span=2,cas cards=>1

Instalando CB3000 TDMoE (Banco de Canais)

CB3000 TDMoE um banco de canais E1/TDMoE para at 64 canais FXO/FXS. Quando utilizado com conexo E1-R2/MFC disponibiliza at 30 canais FXO/FXS. Quando utilizado com conexo TDMoE disponibiliza por equipamento at 64 canais FXO/FXS, com expanso para at 192 canais (03 CB3000 TDMoE cascateados).

Instalando CB3000 TDMoE (Banco de Canais)

Descrio do CB3000 TDMoE

Canais FXO e FXS Portas 101 a 164

Ethernet eth1 eth2 Portas 1 a 64 TDMoE

E1 Portas 1-30

USB -Configurao

Instalando CB3000 TDMoE (Banco de Canais)

A configurao do CB3000 realizada atravs da porta USB utilizando um software terminal como por exemplo o minicom ou hyperteminal. Criamos um arquivo de texto contendo as configuraes e a descarregamos para o CB3000.
OBS: Esta sendo desenvolvido um software de configurao para o CB3000 TDMoE.

Instalando CB3000 TDMoE (Configurao)

Configurao da porta E1 do CB3000 TDMoE, com 64 portas, sendo: 48 FXS e 32 FXO;


[e1_config] e1_enable= 0 e1_sync= 1 use_crc4= 0 mf_level= -13 e1_port_ocupation= fixed

;(Habilita a interface E1 0=off, 1=on) ;(Sincronismo 1=recebe, 3=gera) ;(0=off, 1=on) ;(nvel de sinal MFC) ;(Distribuio das portas, associa a porta 1 do E1 para a porta 31)

Instalando CB3000 TDMoE (Configurao)

Configurao da porta TDMoE do CB3000


[tdmoe_config] tdmoe_enable= 1 tdmoe_subaddress= 0 tdmoe_ports= 64 tdmoe_sync= 0 mac_dest= 00:30:4f:6f:c9:a6 tdmoe_port_ocupation= fixed [ext_config] ext_port_ocupation= fixed ext_port_expansion= 1 ;(Habilita protocolo TDMoE) ;(posio do CB3000 em cascateamento) ;(Nmero de portas TDMoE)
;(Sincronismo do TDMoE, 0=recebe, 1=envia)

;(Mac do equip. destino) ;(Ocupao das portas TDMoE)

;(Ocupao das portas FXS/FXO) (0=30/32 canais e 1=33/64 canais)

Instalando CB3000 TDMoE (Configurao)

Configurao dos canais FXO em TDMoE;

[port_config] signalling= tdmoe_fxo access= free ports => 1-32 ;(Sinalizao FXO com TDMoE) ;(Determina direo das portas)

Instalando CB3000 TDMoE (Configurao)

Configurao dos canais FXS em TDMoE;

signalling= tdmoe_fxs access= free ports => 33-64

;(Sinalizao FXS com TDMoE) ;(Determina direo das portas)

Instalando CB3000 TDMoE (Configurao)

Configurao dos canais FXO;

signalling= fxo_direct access= free tx_gain= 0 rx_gain= 0 echocan= 0 echotaps= 16 echotrainning = 900 silence_threshold= -30 ports => 101-132

;(Determina canais FXO)

Instalando CB3000 TDMoE (Configurao)

Configurao dos canais FXS;

signalling= fxs_direct ;(Determina canais FXS) access= free tx_gain= 0 rx_gain= 0 echocan= 0 echotaps = 16 echotrainning = 900 silence_threshold= -30 ports => 133-164 [end_conf] ;(Encerra o arquivo de configurao)

Instalando CB3000 TDMoE (Banco de Canais)

A instalao do CB3000 TDMoE utiliza canais do tipo DAHDI do Asterisk. As configuraes devem ser feitas nos arquivos: system.conf (/etc/dahdi) chan_dahdi.conf (/etc/asterisk)

Instalando CB3000 TDMoE (Banco de Canais)

Exemplo do arquivo SYSTEM.CONF (etc/dahdi): loadzone=br ;(Manter padro br) defaultzone=br ;(Manter padro br) #TDMoE CB3300_A: ;(Comentrio) dynamic=eth,eth0/aa:bb:cc:dd:ee:ff,64,1 ;(Tipo de interface para a comunicao, Identificao do dispositivo (eth0, eth1 ... eth9) / MAC Address do CB3000 destino, Quantidade de canais para a comunicao TDMoE, Sincronismo, 0- Recebe ou 1- Gera) fxoks=33-64 ;(Interface FXS do CB3000 de 33 a 64 canais) fxsks=1-32 ;(Interface FXO do CB3000 de 1 a 32 canais) channels=1-64 ;(Canais totais pertencentes ao dispositivo eth0)

Instalando CB3000 TDMoE (Banco de Canais)

Exemplo do arquivo CHAN_DAHDI.CONF (etc/asterisk): [general] [channels] context= default rxgain=0.0 txgain=0.0 busydetect=yes busycount=6 usecallerid=yes group= 1 signalling= fxs_ks channel=> 1-32

;(Configurao para FXO, igual ao system.conf)

signalling= fxo_ks ;(Configurao para FXS, igual ao system.conf) channel=> 33-64

Arquivos de configurao do Asterisk

Encontram-se no diretrio /etc/asterisk/ Principais arquivos: sip.conf iax.conf extensions.conf features.conf digivoice.conf logger.conf (Configurao de peers SIP) (Configurao de peers IAX) (Planos de discagem) (Facilidades, como transferncia) (Configurao de placas DigiVoice) (Habilitar e Desabilitar Logs)

Arquivos de configurao do Asterisk

Todos arquivos de configurao seguem a mesma sintaxe: [seo] parmetro1 = valor parmetro2 = valor parmetro3 = valor . . parmetroN = valor

Arquivos de configurao do Asterisk

Existem sees com nomes e funes especficas: Seo general define configuraes padres para as demais sees. Seo globals seo onde sero criadas variveis globais. No plano de discagem uma seo chamada de contexto, porm nos arquivos sip.conf e iax.conf recebem o nome de peer.

Configurando Canais de Comunicao SIP

SIP Configuramos os canais SIP no arquivo /etc/asterisk/sip.conf [general] ; parmetros comuns todas as sees udpbindaddr=0.0.0.0:5060 ; end ip e porta que recebe conexes disallow = all ; desabilita codecs allow = alaw ; habilita codec g711a allow = gsm ; habilita codec GSM language = pt_BR ; idioma das mensagens reproduzidas

Configurando Canais de Comunicao SIP

Seo de canais de comunicao (peer).


[peer] ; canal de comunicao tipo SIP defaultuser = nome ; usurio para registro secret = senha ; senha para registro host = dynamic ; endereo IP associado ao canal SIP disallow = all ; desabilita todos os codecs allow = g729 ; habilita codec g729 context = regra ; regras de discagem type = friend ; sentido da conexo callerid = nome <nmero>; envia identidade para o destino nat = yes ; troca ip do terminal pelo ip do servidor canreinvite = yes ; permite conexo da midia RTP por P2P

Configurando Canais de Comunicao SIP

Uso de Templates na criao de canais SIP. Definio de um template: [template](!) host = dynamic type = friend disallow = all allow = alaw context = interno

Configurando Canais de Comunicao SIP

Associando o template ao canal de comunicao: [peer1](template) secret = senha callerid = nome <nmero>

[peer2](template) secret = senha2 context = externo

Configurando Canais de Comunicao

Parmetro type, o que peer, user e friend ?????? user Faz chamadas por meio do Asterisk. (O telefone recebe chamadas) peer Recebe chamadas por meio do Asterisk. (O telefone faz chamadas) friend Faz e recebe chamadas por meio do asterisk. (O telefone recebe e faz chamadas)

Configurando Canais de Comunicao

Configurando Canais de Comunicao

Aps o trmino da criao dos peers no arquivo sip.conf necessrio recarregar na memria estas alteraes, para isso use o comando:
CLI> sip reload

Configurando Canais de Comunicao

Detalhes do arquivo iax.conf, para a seo [peer]. [peer] . . requirecalltoken=no ; Utilizado para aumentar a segurana de conexo em terminais IAX, como alguns peers IAX mais antigos no tem tratamento para Call Token utilizamos este parmetro como no. CLI> iax2 reload (recarrega alteraes)

Configurando Canais de Comunicao

Laboratrio 2. (30 min)

Configurando Canais de Comunicao

Tentativa de realizar uma chamada entre o peer 2000 para o peer 2001, sem existir um plano de discagem.
== Using SIP RTP CoS mark 5 [Sep 3 15:15:31] NOTICE[3316]: chan_sip.c:20139 handle_request_invite: Call from '2000' to extension '2001' rejected because extension not found.

Mais alguns Comandos para SIP e IAX2

Podemos verificar as configuraes dos peers SIP e IAX2 com os comandos: sip show peer <canal> Ex: CLI> sip show peer 2000 Mostra detalhes do peer SIP; iax2 show peer <canal> Mostra detalhes do peer IAX;

Plano de Discagem

Plano de Discagem responsvel por todas as aes que sero executadas pelo Asterisk, como permitir que ramais interajam entre si, que seja possvel executar uma chamada externa, entre outras funcionalidades. As configuraes das regras de discagem so feitas no arquivo extensions.conf

Plano de Discagem

[contexto] exten => extenso,prioridade,aplicao


[interno] exten => 2000,1,Dial(SIP/2000) exten => 2000,2,HangUp() exten => 2001,1,Dial(IAX2/2001) exten => 2001,2,HangUp() exten => 2002,1,Dial(SIP/2002) exten => 2002,2,HangUp()

Plano de Discagem

Mscaras
X=09 Z=19 N=29 . = 0 9 (inclusivo) ! = 0 9 (exclusivo) [24-79] = so vlidos apenas os dgitos 2,4,5,6,7,9

[externo] exten => _2XXX,1,Dial(SIP/${EXTEN}) exten => _2XXX,n,HangUp() exten => _NXXXXXXX,1,Dial(DGV/g1/${EXTEN}) exten => _NXXXXXXX,n,HangUp()

Plano de Discagem

[externo] exten => _2XXX,1,Dial(SIP/${EXTEN}) exten => _2XXX,n,HangUp() exten => _NXXXXXXX,1,Dial(DGV/g1/${EXTEN}) exten => _NXXXXXXX,n,HangUp() exten => _0NXXXXXXX,1,Dial(DGV/g1/${EXTEN:1}) exten => _0NXXXXXXX,n,HangUp()

Plano de Discagem

Utilizao de canais utilizando grupos em troncos. exten => _0NXXXXXXX,1,Dial(DGV/g1/${EXTEN:1}) g G r R (Ocupa canais do menor para o maior) (Ocupa canais do maior para o menor) (Ocupao cclica, menor para maior) (Ocupao cclica, maior para menor)

Plano de Discagem - include Podemos reaproveitar as regras existentes em um contexto.


[interno] exten => _2XXX,1,Dial(SIP/${EXTEN}) exten => _2XXX,n,HangUp() [local] include => interno exten => _NXXXXXXX,1,Dial(DGV/g1/${EXTEN}) exten => _NXXXXXXX,n,HangUp() [ddd] include => local exten => _0ZZZZN.,1,Dial(DGV/g1/${EXTEN}) exten => _0ZZZZN.,n,HangUp()

Plano de Discagem - Prioridade

A prioridade de busca difere da ordem em que foi escrita no extensions.conf exten => _NXX.,1,Dial(DGV/g1/${EXTEN}) exten => _2XXX,1,Dial(SIP/${EXTEN}) exten => 2100,1,PlayBack(im-sorry) Este plano visto pelo Asterisk na ordem:

Plano de Discagem - Prioridade

A prioridade de busca difere da ordem em que foi escrita no extensions.conf exten => _NXX.,1,Dial(DGV/g1/${EXTEN}) exten => _2XXX,1,Dial(SIP/${EXTEN}) exten => 2100,1,PlayBack(im-sorry) Este plano visto pelo Asterisk na ordem: 2100 _2XXX _NXX.

Plano de Discagem - Dial(parmetros)

Dial(SIP/9001,30,tTrxXkKA(aviso)L(1000000:200000:10000)) A(aviso) reproduz mensagem para o destino; L(x:y:z) limita chamada a x ms, avisa em y ms e repete aviso a cada z ms; r ring falso; S(x) desliga chamada aps x segundos; t transferncia do lado do destino; T transferncia do lado da origem; x grava chamada do lado do destino (automixmonitor); X grava chamada do lado origem (automixmonitor); k one step parking (destino); K one step parking (origem);

Plano de Discagem

Detalhes do arquivo extensions.conf [general] -parmetros comuns todas as sees; [globals] contm variveis criadas pelo usurio; [contextos] conjunto de regras criados pelo usurio;

Plano de Discagem

Laboratrio 3 (20 min)

Plano de Discagem - Desvios

Podemos executar desvios quando convenientes. Goto(prioridade) exten exten exten exten => => => => 2010,1,Answer() 2010,2,PlayBack(beep) 2010,3,Wait(1) 2010,4,Goto(2)

Plano de Discagem - Desvios

Goto(extenso,prioridade) exten => 2011,1,Answer() exten => 2011,2,PlayBack(beep) exten => 2011,3,Goto(2012,1) exten => 2012,1,Wait(1) exten => 2012,2,PlayBack(beep) exten => 2012,3,Goto(2011,2)

Plano de Discagem - Desvios

Goto(contexto,extenso,prioridade) exten => 2050,1,Goto(aviso,s,1) [aviso] exten => s,1,Answer() exten => s,2,PlayBack(mensagem) exten => s,3,HangUp()

Plano de Discagem Desvios para Label

Goto(label) Goto(extenso,label) Goto(contexto,extenso,label) exten => 2051,1,Answer() exten => 2051,n(volta),BackGround(msg-ura) exten => 2051,n,HangUp() exten => 1,1,PlayBack(msg-1) exten => 1,n,Goto(2051,volta)

Criando uma URA

Laboratrio 4 (20 min)

Criando uma URA Personalizada

Extenses especiais: i - invalido t - timeout h hangup fax Fax s - start Para que as extenses especiais funcionem, deve ser inserido na seo [general] do arquivo extensions.conf, o parmetro: autofallthrough = no

Criando uma URA Personalizada

Podemos utilizar mensagens pr-gravadas como a do Laboratrio 4, ou gravar novas mensagens utilizando um ramal do PABX. [interno] exten => exten => exten => exten =>

*70,1,Answer() *70,2,Record(<mensagem>.<formato>) *70,3,PlayBack(<mensagem>) *70,4,HangUp()

Criando uma URA Personalizada


[from-pstn] exten => s,1,Set(TIMEOUT(response)=<segundos>) exten => s,n,Set(TIMEOUT(digit)=<segundos>) exten => s,n,Answer() exten => s,n(repete),BackGround(<mensagem>) exten => 1,1,PlayBack(tt-monkeys) exten => 3,1,Dial(IAX2/2002) exten => i,1,PlayBack(invalido) exten => i,n,Goto(s,repete) exten => t,1,PlayBack(atelogo)

Criando uma URA Personalizada Laboratrio 5 (30 min)

Plano de Discagem - Variveis

Globais Criadas na seo [globals], no incio do arquivo extensions.conf. [globals] PSTN=021 SUPORTE=2000
exten => _0ZZN.,1,Dial(DGV/g1/${PSTN}${EXTEN:1})

Plano de Discagem - Variveis

Canal Criadas no momento de criao de um canal.


exten => 2100,1,Set(RAMAL=${SUPORTE}) exten => 2100,2,Dial(SIP/${RAMAL}) exten => 2100,3,HangUp()

Plano de Discagem Variveis

Manipulando o contedo de variveis ${varivel:posio_inicial:comprimento} [globals] EXEMPLO=ABCDE12345 ${EXEMPLO:1} = ${EXEMPLO:-4} = ${EXEMPLO:0:1} = ${EXEMPLO:2:3} = ${EXEMPLO:-4:2} =

Plano de Discagem Variveis

Manipulando o contedo de variveis O resultado do retorno : [globals] EXEMPLO=ABCDE12345 ${EXEMPLO:1} = BCDE12345 ${EXEMPLO:-4} = 2345 ${EXEMPLO:0:1} = A ${EXEMPLO:2:3} = CDE ${EXEMPLO:-4:2} = 23

Plano de Discagem - Expresses

Expresses: Aritmticas: $[1+1] - retorna a soma; $[${CONTADOR}+1] retorna a soma do contedo da varivel CONTADOR mais 1; Comparao: $[${CONTADOR}<21] retorna V ou F

Plano de Discagem Desvios Condicionais

GotoIf(expresso?label:label1) salta para o label se a expresso retornar verdadeiro e o label1 se for falso;

GotoIf($[${CONTADOR}<21]?retorna:termina)

Plano de Discagem Desvios Condicionais

Contador de 0 a 9 utilizando GotoIf


exten=>600,1,Answer() exten=>600,n,Set(CONT=0) exten=>600,n(testa),GotoIF($[${CONT}<10]?fala:para) exten=>600,n(fala),SayDigits(${CONT}) exten=>600,n,Set(CONT=$[${CONT}+1]) exten=>600,n,Goto(testa) exten=>600,n(para),HangUp()

Plano de Discagem Desvios Condicionais

ExecIf(expresso?aplicao:aplicao1) executa a aplicao se a expresso for verdadeira ou aplicao1 caso falso;

ExecIf($[${CALLERID(num)}=1199658916]?HangUp)

Plano de Discagem Desvios Condicionais

Contador de 0 a 9 utilizando ExecIf

exten=>601,1,Answer() exten=>601,n,Set(CONT=0) exten=>601,n(testa),Execif($[${CONT}<10]?SayDigits(${CONT}):HangUp()) exten=>601,n,Set(CONT=$[${CONT}+1]) exten=>601,n,Goto(testa)

Plano de Discagem Aplicaes

SayNumber Reproduz nmero. SayDigits Reproduz dgitos. SayAlpha Reproduz caracteres. SayPhonetic Reproduz alfabeto fontico internacional.

Plano de Discagem - Macros

Macros so utilizadas para reaproveitamento de cdigo. Macro(nomedamacro,arg1,arg2...)


; deve ser criada antes dos contextos [macro-interno] exten => s,1,Dial(${ARG1}/${ARG2},${ARG3}) [interno] exten => _2XXX,1,Macro(interno,SIP,${EXTEN},30) ------------------------------macro-ARG1-ARG2-ARG3---

Plano de Discagem - Macros

[macro-disca] exten => s,1,Dial(${ARG1}/${ARG2},${ARG3}) exten => s,n,Goto(call-${DIALSTATUS}) exten => s,n(call-NOANSWER),PlayBack(naoat) exten => s,n,HangUp() exten => s,n(call-BUSY),PlayBack(ocupado) exten => s,n,HangUp() [interno] exten => _2XXX,1,Macro(disca,SIP,${EXTEN},20)

Plano de Discagem - Macros

Outra maneira de criar a mesma macro. [macro-disca] exten => s,1,Dial(${ARG1}/${ARG2},${ARG3}) exten => s,n,Goto(call-${DIALSTATUS},1) exten => call-NOANSWER,1,PlayBack(naoat) exten => call-NOANSWER,n,HangUp() exten => call-BUSY,1,PlayBack(ocupado) exten => call-BUSY,n,HangUp()

Plano de Discagem - DIALSTATUS

Alguns retornos para a varivel DIALSTATUS. CHANUNAVAIL CONGESTION BUSY NOANSWER ANSWER CANCEL HANGUP

Plano de Discagem - Macros

Laboratrio 6 (40 min)

Voice Mail

Voice Mail, ou Correio de Voz, consiste no servio de secretria eletrnicade um PABX. O ramal que ir receber a facilidade de VoiceMail deve possuir o parmetro mailbox, este parmetro colocado na seo de canal do ramal. [peer] . mailbox = ramal@default

Voice Mail

As configuraes das facilidades de uma caixa postal so feitas no arquivo voicemail.conf. Este arquivo dividido em 3 sees. [general] define as facilidades do servio. [zonemessages] formato de data, hora e fuso horrio. [classe da caixa postal] define a classe do voice mail, normalmente utiliza-se a classe default.

Voice Mail

Aplicao VoiceMail() VoiceMail(<exten>,<tipo de msg>) Ex:


exten => s,n(call-BUSY),VoiceMail(${EXTEN},b) exten => s,n(call-NOANSWER),VoiceMail(${EXTEN},u)

Voice Mail

Detalhes do arquivo voicemail.conf [general]


format formato do arquivo de audio; maxmsg nmero mximo de recados; maxsecs tempo mximo do recado; minsecs tempo mnimo para gravar caixa postal; maxsilence tempo mximo de silencio;

Voice Mail

Detalhes do arquivo voicemail.conf [default] classe do correio de voz


extenso => senha,diretrio,email,parmetros

Voice Mail

Diretrio das mensagens (classes): /var/spool/asterisk/voicemail/default Envio das mensagens por e-mail: Utiliza MTA (Message Transfer Agent)

Voice Mail

Laboratrio 7 (30 min)

Voice Mail

Para consultar as caixas postais podemos utilizar a aplicao VoiceMailMain(). exten => *60,1,VoiceMailMain() Caso seja digitado o ramal especfico este ser consultado, seno ser feita a consulta do correio de voz do ramal originador da chamada.

Voice Mail

Laboratrio 8 (30 min)

SIP

SIP (Session Initiated Protocol) Padro IETF; Similar aos protocolos HTML e SMTP; Usa portas TCP/IP e UDP 5060 (sinalizao); Usa portas UDP para mdia RTP (10000 a 20000);

SIP

Processo de uma chamada SIP.

Servidores SIP

Tipos de Servidor: Proxy Roteador de pedidos at o destino; Redirect permite que o usurio se locomova geograficamente e permanea sendo localizado; Registrar mantm um cadastro dos usurios para localizao;

Servidores SIP

NAT (Network Address Translator) O SIP armazena os endereos de origem e destino dos endpoints dentro do campo de dados dos pacotes TCP/IP; NAT trata os endereos armazenados na camada de rede (Network Layer) dos pacotes; Resolver utilizando firewalls e SBC (Session Border Controlers) que tratam SIP;

Servidores SIP

NAT e Asterisk Cliente (ramal) atrs de NAT (Asterisk): nat = yes qualify = yes O Asterisk usa o endereo do pacote TCP/IP e no do SIP.

Servidores SIP

Servidores SIP

NAT e Asterisk Servidor Asterisk atrs de NAT: [general] localnet = endereo-de-rede/subnetmask externip = ip-pblico-do-servidor O roteador deve ter a opo port forwarding, para que os pacotes TCP/IP tenham o mesmo valor de porta antes e depois de passar pelo NAT.

Servidores SIP

Provedor SIP

Chamamos de Provedor SIP quem disponibiliza os servios de conexo para estabelecer chamadas telefonicas. Para conectar-se a um Provedor SIP devemos obter do mesmo suas caractersticas.

Provedor SIP

Uma das principais configuraes que devem ser feitas o modo de registro no provedor, uma vez que o mesmo deve autenticar o usurio para poder localiz-lo e permitir chamadas. sip.conf [general]
register => user:secret@host-provedor:5060/identidade

Provedor SIP

Detalhes do peer utilizado para conexo ao provedor VoIP.


[peer] domain domnio utilizado pelo provedor; fromuser login fornecido pelo provedor; fromdomain domnio fornecido pelo provedor; insecure permisso de conexo

OBS: os parmetros invite,port para insecure, permitem que o provedor conecte-se ao peer sem a necessidade de se registrar.

Provedor SIP Receber Chamadas

Para receber uma chamada por meio do provedor VoIP podemos identificar a chamada entrante pelo identificador do register. register => user:secret@host:5060/1141238756 Sempre que uma chamada for encaminhada pelo provedor e o identificador constar em uma regra a chamada ser atendida: [from-voip] exten => 1141238756,1,Dial(SIP/2000) exten => 1141238756,n,HangUp()

Provedor SIP

Laboratrio 9 (40 min)

Trunk IAX2

Protocolo aberto; Utiliza a porta TCP/IP e UDP 4569 para sinalizao e mdia de udio RTP; Oferece economia de Banda no modo Trunk IAX2;

Trunk IAX2

Trunk IAX2
Filial-101 [para-102] username= de-101 secret = 9999 host = 192.168.10.102 qualify = yes type = peer disallow = all allow = gsm trunk = yes [de-102] context = from-iax secret = 4321 qualify = yes type = user disallow = all allow = gsm trunk = yes requirecalltoken = no Filial-102 [para-101] username= de-102 secret = 4321 host = 192.168.10.101 qualify = yes type = peer disallow = all allow = gsm trunk = yes [de-101] context = from-iax secret = 9999 qualify = yes type = user disallow = all allow = gsm trunk = yes requirecalltoken = no

Transferncia de Ligaes

Laboratrio 10 (15 min)

Trunk IAX2

; Filial-101 [SP-RJ] username= SP-RJ secret = 1234 host = 192.168.10.102 qualify = yes type = friend disallow = all allow = gsm trunk = yes context = from-iax requirecalltoken = no

; Filial-102 [SP-RJ] username= SP-RJ secret = 1234 host = 192.168.10.101 qualify = yes type = friend disallow = all allow = gsm trunk = yes context = from-iax requirecalltoken = no

Transferncia de Ligaes

Para que possamos transferir chamadas devemos habilitar estas facilidades no arquivo features.conf. Modos de Transferncia: Assistida Deve permanecer na chamada at que o destino atenda. Cega Entrega a chamada ao destino mesmo se estiver indisponvel. Obs: devem ser adicionados os parmetros t (destino) e T (origem) na aplicao Dial(), para permitir ao canal transferir uma chamada

Transferncia de Ligaes

Laboratrio 11 (45 min)

Musica em Espera - MOH

Podemos selecionar esperas telefnicas diferentes por canal. necessrio que o asterisk-addons esteja instalado para que seja possvel utilizar moh em mp3.

Musica em Espera - MOH

Os arquivos de som utilizados na moh por padro esto em: /var/lib/asterisk/moh/ Mas podem ser definidos os caminhos durante a configurao, utilizando o parmetro directory.

Musica em Espera - MOH

A configurao da musica em espera feita no arquivo musiconhold.conf. [default] mode = files ou custom directory = caminho dos arquivos de udio sort = random ou alpha

Musica em Espera - MOH

Podemos indicar qual msica em espera ser utilizada incluindo o parmetro mohinterpret na seo do peer, ou caso deseje alterar para todos os peers podemos utilizar a seo [general]. [peer] . mohinterpret=default Obs: recarregue o modulo musiconhold.so CLI> module reload res_musiconhold.so

Musica em Espera - MOH

Podemos ajustar a msica de espera que ser utilizada no momento em que a chamada estabelecida:
exten => 2000,1, Set(CHANNEL(musicclass)=<classe>) Ex: exten => 2000,1, Set(CHANNEL(musicclass)=forro) exten => 2000,n,Dial(SIP/2000,60,tT) exten => 2020,1, Set(CHANNEL(musicclass)=metal) exten => 2020,n,Dial(SIP/2020,60,tT)

Musica em Espera - MOH

possvel converter arquivos utilizando o console do Asterisk utilizando: file convert <origem> <destino> ex:
file convert /sounds/som.gsm /sounds/som.alaw

Musica em Espera - MOH

Podemos converter arquivos de udio diretamente no Linux utilzando o aplicativo sox.

sox som.wav r 8000 c 1 som.gsm


sox som.wav t raw r 8000 s w c 1 som.sln

Musica em Espera - MOH

Laboratrio 12 (20 min)

Captura de Chamadas

Captura de chamadas significa transferir a chamada que esta tocando em um ramal para o seu e assim atend-la. Tipos: Grupo Direta

Captura de Chamadas - Grupos

Captura por Grupos: Definir a quais grupos de chamada os ramais pertencem e tambm quais so os seus grupos de captura. estas definies so feitas nos peers. callgroup pickupgroup Para habilitar a captura por grupos basta habilitar a facilidade no arquivo features.conf, utiliza por padro o cdigo *8

Captura de Chamadas - Grupos

Captura de Chamadas - Direta

possvel capturar tambm um ramal digitando o cdigo de captura e seu nmero, a esta facilidade chamamos de captura direta. Utilizamos a aplicao Pickup().
exten => _*302XXX,1,PickUp(${EXTEN:3}@interno) exten => _*302XXX,n,HangUp()

Captura de Chamadas

Laboratrio 13 (15 min)

Estacionamento de Chamadas

Caso um atendente no esteja disponvel esteja necessrio que o cliente o aguarde podemos estacionar uma chamada, ou seja colocar o cliente na espera at que o atendente esteja disponvel. Este recurso deve ser ativado no arquivo features.conf

Estacionamento de Chamadas

Detalhes do arquivo features.conf [general] parkext => 700 (cdigo para estacionar) parkpos => 701-706 (faixa de estacionamentos) context => parkedcalls parkingtime => 45 (tempo de permanncia no estacionamento) parkedcalltransfers => caller (permite transferir aps retomar do estacionamento)

Estacionamento de Chamadas

Laboratrio 14 (15 min)

Monitoramento de Chamadas - Chanspy

Monitoramento de chamadas utilizado para acompanhar um atendimento. Utilizando a aplicao: exten => *40,1,ChanSpy() Ser monitorado o peer com a chamada ativa a mais tempo.

Monitoramento de Chamadas - ChanSpy

Monitoramento de chamadas de um canal especfico. Utilizando a aplicao: ChanSpy(<chanprefix>,<opo>) Como opo podemos usar: q = quiet d = 4 (spy), 5 (whisper), 6 (barge)

Monitoramento de Chamadas - ChanSpy

Regra utilizando ChanSpy.


exten => _*412XXX,1,ChanSpy(SIP/${EXTEN:3},d)

Monitoramento de Chamadas - ChanSpy

Laboratrio 15 (15 min)

Conferncia

Sala de Conferncia; Nmero de participantes depende do hardware; Ingresso direto na sala; Gerenciamento pela console do Asterisk

Conferncia

Configuramos as salas no arquivo meetme.conf. [general] audiobuffers = 32 [rooms] conf = 1 conf = 2,1234 conf = 3,1234,9876
0bs: conf = <room><,secret><,admin-secret>

Conferncia

Para acessar as salas necessrio criar uma extenso no arquivo extensions.conf. [interno] exten => _10X,1,MeetMe(${EXTEN:2},iI) exten => _10X,n,HangUp() onde: i = anncio de entrada I = anncio de sada

Conferncia

Laboratrio 16 (20 min)

Bilhetagem

Bilhetagem o armazenamento das chamadas telefnicas. Os arquivos gerados podem ser utilizados para gerar contas de telefone. Diretrio do arquivo de bilhetes, Master.csv: /var/log/asterisk/cdr-csv/

Bilhetagem - Custom

possvel customizar os bilhetes gerados. Esta customizao deve ser feita no arquivo cdr_custom.conf.

Titulo

www.digivoice.com.br

Fim.

3.5 Wagner Antonio Barth 19/09/2011