13
Não diga alô, diga Asterisk! Apostila AsteriskBrasil.org CAPA: Vários telefones fazendo um papel de parede e no meio um asterisco vazado em branco ou o inverso. Índice de Capítulos 1 Sou alienígena, fale sobre Telefonia....................................................................................... 4 1.1.Breve história da telefonia...................................................................................................... 4 1.2.A evolução e as novas tendências........................................................................................ 6 1.1.1 Telefonia Analógica.............................................................................................................. 7 1.1.2 Telefonia Digital..................................................................................................................... 7 1.1.3 Telefonia IP............................................................................................................................. 7 1.1.4 Telefonia IP x Voz sobre IP.................................................................................................. 8 1.1.5 Telefonia Móvel...................................................................................................................... 8 2 Conhecendo o Asterisk.............................................................................................................. 9 2.1 Quem? Quando? Porque? Como?....................................................................................... 9 2.1.1 O que é o Asterisk?............................................................................................................... 9 2.1.2 Entendendo o desenvolvimento do Asterisk................................................................... 9 2.1.3 Participe também!............................................................................................................... 10 2.2 Arquitetura tecnológica do Asterisk.................................................................................... 10 2.2.1 Diretórios e arquivos.......................................................................................................... 10 2.2.2 O servidor............................................................................................................................. 12 2.2.3 Sopa de letrinhas... Codecs e Protocolos..................................................................... 12 2.2.3.1 Telefonia IP....................................................................................................................... 12 2.2.3.2 Telefonia Digital............................................................................................................... 13 2.2.3.3 Telefonia Analógica......................................................................................................... 13 2.2.3.4 CODECs............................................................................................................................ 13 2.2.4 Os Canais(channels)......................................................................................................... 13 2.2.4.1 Canal SIP (chan_sip.so)................................................................................................ 13 2.2.4.2 Canal IAX (chan_iax2.so)............................................................................................... 17 2.2.4.3 Canal Local (chan_local.so)......................................................................................... 18 2.2.4.4 Canal ZAP (chan_zap.so )............................................................................................. 18 2.2.4.5 Canal Unicall (chan_unicall.so)................................................................................... 18 2.2.5 Equipamentos periféricos................................................................................................. 19 2.2.5.1 Placas digitais e analógicas......................................................................................... 19 2.2.5.2 Telefones.......................................................................................................................... 20 2.2.5.3 ATAs................................................................................................................................... 20 2.2.5.4 Softphones........................................................................................................................ 21 2.2.5.5 Outros................................................................................................................................ 21 2.3 Documentação adicional e Downloads............................................................................ 21 3 Configurações básicas do Asterisk....................................................................................... 21 3.1 Inserindo os padrões de telefonia Brasileiro................................................................... 22 3.2 Adicionando a linguagem pt_BR ao Asterisk................................................................... 22 3.3 Criando ramais....................................................................................................................... 23 3.4 Criando troncos...................................................................................................................... 23 3.5 Realtime................................................................................................................................... 23 4 Mergulhando no Dialplan......................................................................................................... 24 4.1 Contextos(context).................................................................................................................. 25 4.1.1 Contexto [general]............................................................................................................... 25 4.1.2 Contexto [globals]............................................................................................................... 26 4.1.3 Parâmetro include.............................................................................................................. 27 4.1.4 Parâmetros específicos de um contexto........................................................................ 28 4.2 Extensões(exten).................................................................................................................... 28 4.2.1 Extensões especiais.......................................................................................................... 29 4.2.2 Padrões de discagem ...................................................................................................... 29 4.3 Prioridades.............................................................................................................................. 29 4.3.1 Prioridade n+101................................................................................................................ 30 4.3.2 Prioridade next ..................................................................................................................... 30 4.3.3 Prioridade same................................................................................................................. 30 4.3.4 Sinais numéricos e prioridades...................................................................................... 31 4.4 Aplicações............................................................................................................................... 31 4.4.1 Aplicação Dial – Onde tudo começa............................................................................... 32 4.4.2 Aplicação Set ....................................................................................................................... 33 4.4.2.1 Declaração de variáveis................................................................................................. 33 4.4.2.2 Execução de funções...................................................................................................... 34 4.4.2.3 AstDB................................................................................................................................. 35 4.4.3 Goto, GotoIf, GotoIfTime..................................................................................................... 36 4.4.4 Aplicação Macro.................................................................................................................. 36 4.4.5 Aplicação VoiceMail – O famoso Correio de Voz.......................................................... 36 4.4.5.1 Armazenamento de mensagens.................................................................................. 37 4.4.5.2 Configuração das caixas de correio de voz................................................................ 38 4.4.5.3 Notas importantes sobre a aplicação VoiceMail().................................................... 39 4.4.5.4 Aplicações complementares ao Correio de Voz....................................................... 39 4.4.6 MeetMe.................................................................................................................................. 42 4.4.7 Queue.................................................................................................................................... 42 BLOG Rumor aponta que tablet do Google será anunciado dia 26 de novembro he Asterisk Development Team has announc the first release candidate of Asterisk 1.6.2 The Asterisk Development Team has announced the first release candidate of Asterisk 1.4.36 Mantendo o Asterisk um pouco mais seguro com Fail2Ban Rumores dizem que o Google Chrome OS Ta será lançado em Novembro APOI O LOGIN Nome de Usurio Senha Memorizar Confirmar Perdeu a senha? Cadastre-se agora! Novo Blog AsteriskBrasil.org! Programa��o do IPComm 2008 disponvel! pesquisar... Pesquisar HOME WIKI LISTAS NOTCI AS GALERIA CONTATO PABX IP Asterisk A melhor integradora Asterisk Consultoria, Instalação e Hardware www.sincronismotelecom.com Aastra Telecom do Brasil Fabricante de Soluções IP PABX VoIP Gateways Softswitches Call Center www.aastra.com.br Solução de PABX IP Veja Central Pabx! Saiba Mais Online ou 11-3355-3400 www.totalIP.com.br 12/9/2010 AsteriskBrasil.org - A comunidade bras… www.asteriskbrasil.org/index.php?opti… 1/13

Apostila Asterisk

Embed Size (px)

Citation preview

Page 1: Apostila Asterisk

Não diga alô, diga Asterisk! Apostila AsteriskBrasil.org CAPA: Vários telefones fazendo um papel de parede eno meio um asterisco vazado em branco ou o inverso.

Índice de Capítulos

1 Sou alienígena, fale sobre Telefonia....................................................................................... 41.1.Breve história da telefonia...................................................................................................... 41.2.A evolução e as novas tendências........................................................................................ 61.1.1 Telefonia Analógica..............................................................................................................7 1.1.2 TelefoniaDigital..................................................................................................................... 7 1.1.3Telefonia IP............................................................................................................................. 71.1.4 Telefonia IP x Voz sobre IP.................................................................................................. 81.1.5 TelefoniaMóvel...................................................................................................................... 8 2Conhecendo o Asterisk.............................................................................................................. 92.1 Quem? Quando? Porque? Como?....................................................................................... 9 2.1.1O que é o Asterisk?............................................................................................................... 92.1.2 Entendendo o desenvolvimento do Asterisk................................................................... 9 2.1.3Participe também!............................................................................................................... 10 2.2Arquitetura tecnológica do Asterisk.................................................................................... 10 2.2.1Diretórios e arquivos.......................................................................................................... 10 2.2.2O servidor............................................................................................................................. 122.2.3 Sopa de letrinhas... Codecs e Protocolos..................................................................... 12 2.2.3.1Telefonia IP....................................................................................................................... 122.2.3.2 Telefonia Digital...............................................................................................................13 2.2.3.3 Telefonia Analógica.........................................................................................................13 2.2.3.4CODECs............................................................................................................................ 132.2.4 Os Canais(channels)......................................................................................................... 132.2.4.1 Canal SIP (chan_sip.so)................................................................................................ 132.2.4.2 Canal IAX (chan_iax2.so)............................................................................................... 172.2.4.3 Canal Local (chan_local.so)......................................................................................... 182.2.4.4 Canal ZAP (chan_zap.so )............................................................................................. 182.2.4.5 Canal Unicall (chan_unicall.so)................................................................................... 18 2.2.5Equipamentos periféricos................................................................................................. 19 2.2.5.1Placas digitais e analógicas......................................................................................... 19 2.2.5.2Telefones.......................................................................................................................... 202.2.5.3ATAs................................................................................................................................... 202.2.5.4 Softphones........................................................................................................................21 2.2.5.5Outros................................................................................................................................ 212.3 Documentação adicional e Downloads............................................................................ 21 3Configurações básicas do Asterisk....................................................................................... 21 3.1Inserindo os padrões de telefonia Brasileiro................................................................... 22 3.2Adicionando a linguagem pt_BR ao Asterisk................................................................... 22 3.3 Criandoramais....................................................................................................................... 23 3.4Criando troncos...................................................................................................................... 233.5Realtime...................................................................................................................................23 4 Mergulhando no Dialplan.........................................................................................................24 4.1Contextos(context).................................................................................................................. 254.1.1 Contexto [general]...............................................................................................................25 4.1.2 Contexto[globals]............................................................................................................... 26 4.1.3Parâmetro include.............................................................................................................. 27 4.1.4Parâmetros específicos de um contexto........................................................................ 28 4.2Extensões(exten).................................................................................................................... 284.2.1 Extensões especiais.......................................................................................................... 294.2.2 Padrões de discagem ...................................................................................................... 294.3 Prioridades..............................................................................................................................29 4.3.1 Prioridaden+101................................................................................................................ 30 4.3.2Prioridade next..................................................................................................................... 304.3.3 Prioridade same................................................................................................................. 304.3.4 Sinais numéricos e prioridades...................................................................................... 31 4.4Aplicações............................................................................................................................... 314.4.1 Aplicação Dial – Onde tudo começa............................................................................... 32 4.4.2Aplicação Set....................................................................................................................... 334.4.2.1 Declaração de variáveis................................................................................................. 334.4.2.2 Execução de funções...................................................................................................... 344.4.2.3AstDB................................................................................................................................. 354.4.3 Goto, GotoIf, GotoIfTime.....................................................................................................36 4.4.4 AplicaçãoMacro.................................................................................................................. 36 4.4.5Aplicação VoiceMail – O famoso Correio de Voz.......................................................... 36 4.4.5.1Armazenamento de mensagens.................................................................................. 37 4.4.5.2Configuração das caixas de correio de voz................................................................ 38 4.4.5.3 Notasimportantes sobre a aplicação VoiceMail().................................................... 39 4.4.5.4 Aplicaçõescomplementares ao Correio de Voz....................................................... 39 4.4.6MeetMe.................................................................................................................................. 424.4.7Queue.................................................................................................................................... 42

BLOG

Rumor aponta que tablet do Google será

anunciado dia 26 de novembro

he Asterisk Development Team has announced

the first release candidate of Asterisk 1.6.2.12

The Asterisk Development Team has

announced the first release candidate of

Asterisk 1.4.36

Mantendo o Asterisk um pouco mais seguro

com Fail2Ban

Rumores dizem que o Google Chrome OS Tablet

será lançado em Novembro

APOIO

LOGIN

Nome de Usu�rio

Senha

Memorizar

Confirmar

Perdeu a senha?Cadastre-se agora!

Novo Blog

AsteriskBrasil.org!

Programa��o do

IPComm 2008

dispon�vel!

pesquisar...

Pesquisar

HOME WIKI LISTAS NOT�CIAS GALERIA CONTATO

PABX IP AsteriskA melhor integradora AsteriskConsultoria, Instalação e Hardwarewww.sincronismotelecom.com

Aastra Telecom do BrasilFabricante de Soluções IP PABX VoIPGateways Softswitches Call Centerwww.aastra.com.br

Solução de PABX IPVeja Central Pabx! Saiba Mais Onlineou 11-3355-3400www.totalIP.com.br

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 1/13

Page 2: Apostila Asterisk

4.6.2 Operadores Matemáticos.................................................................................................. 494.7 Exemplos completos de dialplan....................................................................................... 49 5Gerenciando o Asterisk............................................................................................................ 495.1 Gerenciamento de ramais................................................................................................... 495.2 Gerenciamento de troncos................................................................................................... 505.3CDR..........................................................................................................................................50 5.4Troubleshooting..................................................................................................................... 505.4.1Logging................................................................................................................................. 505.4.2Eco.........................................................................................................................................50 5.4.3Picotamento......................................................................................................................... 505.4.4Delay...................................................................................................................................... 505.4.5 Códigos SIP.........................................................................................................................50 5.5Backup......................................................................................................................................53 5.6Tunning....................................................................................................................................53 5.7Segurança............................................................................................................................... 535.8 Sistemas distribuídos e alta disponibilidade................................................................... 53 6 Dicas eTruques........................................................................................................................ 53I.Índice com todas as aplicações disponíveis na série 1.2 do Asterisk............................. 53 II.Índice comtodas as variáveis internas do Asterisk............................................................. 53 III.Siglas eDicionário.................................................................................................................... 53

1 Sou alienígena, fale sobre Telefonia. Entende-se por telefonia, toda e qualquer forma de transmitir vozhumana, de um ponto a outro com a utilização de instrumentos amplificadores.

Ou segundo o Wikipedia:

INSERIR DEFIFINICAO DO WIKIPEDIA

Impossível imaginar a evolução de toda a comunidade sem mencionar os devidos créditos ao poder, que nósser humanos desenvolvemos de desejar comunicação a todo custo a toda hora e de várias formas.

Ainda somos e seremos escravos da transmissão e recepção de informação, é fato.

1.1. Breve história da telefonia X Alexander Graham Bell Elisha Gray

Nos idos de 1870, dois inventores, Elisha Gray e Alexander Graham Bell, ambos, indepedentemente projetaramum euipamento que poderia transmitir a voz eletronicamente, o famoso telefone. Ambos correram prapatentear suas soluções, porém Alexander Graham Bell ganhou a corrida por questões de algumas horas.Apartir deste momento os dois travaram uma batalha famosa sobre a invenção do telefone na qual Bell sesaiu campeão.

Alexander Graham Bell nasceu em 1847 em Edinburgh, Escócia. Ele mudou-se para Ontario, e então para osEstados Unidos se estabelecendo em Boston antes de iniciar sua carreira como inventor. Ao longo de suavida, Bell dedicou-se à educação de pessoas surdas. Este interesse o levou a inventar o microfone e, em1876, a sua “maquina elétrica de voz(electrical speech machine)” que hoje nós chamamos de telefone. Asnotícias de seu invento rapidamente se espalharam pelo país e até na Europa. Em 1878, Bell realizou aprimeira chamada em New Haven, Connecticut. Em 1884, chamadas de longa distância foram feitas entreBoston e Nova York.

Bell imaginou grandes possibilidades de uso para o seu invento, porém ele nunca imaginou que sua máquinade transmissão elétrica de voz pudesse também transmitir vídeo um dia. Esse dia chegou, e desde a suamorte em 1922 a indústria de telecomunicações tem vivenciado uma incrível revolução. Hoje pessoas quenão houvem podem comunicar-se através de telefones especiais. Fibras óticas estão melhorando a qualidadee velocidade na transmissão de dados. Comunicações sem fio são capazes de deixa-lo informado e presentemesmo em locais remotos, enfim iremos abpradr um pouco sobre todos os benefícios que a máquina falantede Bell alavancou a toda a comunidade mundial.

1.2. A evolução e as novas tendências A busca incansável por reduções de custo, qualidade, versatilidade,independência, facilidade e demais adjetivos tornaram possível a evolução sistemática dos meios decomunicação. A Telefonia moderna é um dos produtos deste crescimento. É possível estar em dois lugares aomesmo tempo. Atualmente falar ao telefone é algo que se faz em todo momento a toda hora e em qualquerlugar. Esteja você no trem, no ônibus, no metrô, no carro, no avião ou em lugares menos móveis como a suacasa, apartamento, escritório, fábrica, hotel ou motel, definitivamente estamos imersos neste mundo decircuitos e mais circuitos. Habilitar uma credencial neste mundo é tão simples quanto o seu uso, algo que emtempos remotos foi um investimento com visível participação na renda familiar, hoje é mais um adereço damoda e participa ativamente na vida de crianças. LINHA DO TEMPO: FOTOS DE VÁRIOS TELEFONES: DOMAIS ANTIGO PRO MAIS MODERNO Cada país possui o seu órgão que regulamenta os meios de comunicação,em alguns lugares existem órgãos específicos para o tema Telefonia. No Brasil este órgão é conhecido porANATEL[1].

1.1.1 Telefonia Analógica

Método original inventando por diversos inventores e que encontrou seu ápice de desenvolvimento eutilização, ou melhor, de massificação durante os anos 50. Utiliza-se como meio de comunicaçãoprincipalente os cabos de cobre, os pares de cobre que ainda hoje reinam nos quadros de distribuição deempresas de telefonia. 1.1.2 Telefonia Digital

Telefonia multiplexada, sinais digitais, processador de sinais digitais(DSP) entram em cena para transformareste sinal analógico, conhecido por voz, em um sinal digital. O sinal digital se distingue por identificadoresindividuais, trocados no momento que antecede o streaming de voz, a chamada fase de sinalização. Estesidentificadores individuais permitem o convívio de diversos outros sinais ao mesmo instante. Em suma isso é oque chamamos de multiplexação. Várias chamadas acontecendo ao mesmo tempo e pelo mesmo meio físico.

Na Telefonia Digital comumente conhecida utiliza-se o transporte de voz sem compactação, assim como elaé, somente digitalizada. Enviando 64Kb por segundo com 8khz e 8 bits(...detalhar khz e bit...).

1.1.3 Telefonia IP

Telefonia IP é o conceito mais atual para utilização de comunicação por voz.. Como toda e qualquertecnologia teve seus momentos de testes ferrenhos e provas de bala e fogo. Em determinado momentochegou-se a algo que se poderia dizer como: utilizável. Com custos ainda proibitivos para a suamassificação, a Telefonia IP criou-se em meio a grandes implementações de transporte de áudio.

Backbones de grandes empresas de telefonia já cruzavam o Atlântico lançando cabos e mais cabos por ondetrafegariam enormes quantias de minutos de conversas, reuniões e bate-papos, todas elas utilizando oprotocolo IP de comnicação.

O protocolo IP[2] chegou para trazer mais um conceito dentro dos meios de comunicação. Sua fácilimplementação e sua riqueza em controles e documentação virou uma página importante na história dastelecomunicações. Um dia foi o que chamavam de ARPANET[3], uma rede de dessentralização de informaçãocriada como um artifício de estratégia militar pelo exército americano. A INTERNET hoje é o ponto deencontro de comunidades virtuais,

ENQUETE

Meu dia a dia com o Asterisk �:Mantendo o IPBX/Gateway da empresa ondetrabalho

Desenvolvendo produtos para empresas deTI/Telecom

Fu�ando como hobby

Votar Ver

chCounter: MySQL error!SQL query:

LOCK TABLES

`joomla_asterisk`.`jos_astats_counted_users`

AS c WRITE,

`joomla_asterisk`.`jos_astats_counted_users`

WRITE,

`joomla_asterisk`.`jos_astats_ignored_users`

AS i WRITE,

`joomla_asterisk`.`jos_astats_ignored_users`

WRITE, `joomla_asterisk`.`jos_astats_data`as

d WRITE, `joomla_asterisk`.`jos_astats_data`

WRITE,

`joomla_asterisk`.`jos_astats_pages`as p

WRITE,

`joomla_asterisk`.`jos_astats_online_users`

as o WRITE,

`joomla_asterisk`.`jos_astats_online_users`AS

online WRITE,

`joomla_asterisk`.`jos_astats_online_users`

WRITE,

`joomla_asterisk`.`jos_astats_log_data`

WRITE;

Error number: 145Table './joomla_asterisk/jos_astats_pages' is marked ascrashed and should be repaired Script stopped.

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 2/13

Page 3: Apostila Asterisk

CODificação e DECodificação utilizam-se de funções matemáticas para transformar um pacote de voz com64Kb para um pacote de, por exemplo, 8Kb. Cada algoritmo desse tem um nome/apelido. Alguns deles sãoG729a, µlaw, alaw, GSM, iLBC dentre outros[4].

1.1.4 Telefonia IP x Voz sobre IP

Telefonia IP e Voz Sobre IP, ou VoIP, são duas distintas classes na escala do transporte de voz.

Telefonia IP envolve todos os serviços e meios de utilização de voz empacotada. Correio de voz, gravaçãode chamadas, transferências, conferências todas elas ocorrendo no mesmo mundo IP, o uso destes infinitosrecursos é caracterizado como Telefonia IP.

Voz sobre IP ou VoIP é ato de se transferir voz sobre um canal IP de comunicação em. Pode serrepresentado como sendo o combustível ou o meio de transporte da Telefonia IP.

1.1.5 Telefonia Móvel

Existem diversas formas de se comunicar de forma dinâmica, mas nenhuma delas se compara ao poder damobilidade. O que em certa época era apenas um dos recursos disponíveis em aeronaves e foguetes hojeecontra-se em todos os lares do mundo, na maioria deles pelo menos.

A Telefonia Móvel tem sua masssificação claramente denotada pela disseminação dos famosos “telefonescelulares”. Tecnologias como TDMA, CDMA, GSM tomaram conta da mídia e ainda hojem permanecem fortesem um crescente segmento das telecomunicações.

A Telefonia Móvel tem se tornado uma parceira ideal para o crescimento da Telefonia IP. Já existem diversosprodutos IP encoporando tecnologias móveis, porém este ainda é um meio menos popular de transporte devoz.

2 Conhecendo o Asterisk O Asterisk é o canivete suiço das telecomunicações. Hoje ele faz muito mais quequalquer outra plataforma de telefonia(vídeo e imagem definitivamente também). O limite é sua criatividade,lembre-se disto sempre. 2.1 Quem? Quando? Porque? Como? O Asterisk foi criado em 1999 por Mark Spencer,fundador da Linux Support Services, uma empresa que inicialmente prestava serviços de consultoria esuporte em platafromas GNU/Linux(para não ferir alguns xiitas...). Em um determinado momento Markencontrou-se em frente a um projeto de telefonia: A necessidade de solucionar um problema em seusatendimentos de chamados telefônicos(Help Desk). Hoje aquele seu projeto é considerado como uma daspróximas inovações do mundo Open Source após o surgimento do Linux. Batizado como Asterisk, umcaractere coringa em ambientes UNIX like, este software escrito originialmente em linguagem C(VERIFICAR SEÉ SOMENTE C) é parte do vasto território dos programas de código aberto disponíveis ao redor do globo.2.1.1 O que é o Asterisk?

O Asterisk é um software de PBX, ou seja, um programa de computador que possui todos os recursos de umaCentral Telefônica e faz a conexão de redes privadas de telefonia com a rede pública de telefonia. Assimcomo em qualquer 2.1.2 Entendendo o desenvolvimento do Asterisk

O estrondoso sucesso do Asterisk teve seu início com o lançamento da primeira versão estável do sistema, oAsterisk 1.0. Atualmente ele encontra-se na versão Asterisk 1.4. Seguindo os mesmos moldes deversionamento do Kernel Linux, o Asterisk possui um versão em desenvolvimento que tem o seu último dígitoidentificador um número ímpar, por exemplo, a versão atual em desenvolvimento é a versão Asterisk 1.5. Embreve, quando ela estiver estabilizada e devidamente testada, esta versão irá tornar-se Asterisk 1.6 e serádivulgada comom última versão estável do sistema. Cada série(1.0, 1.2, 1.4, etc.) Tem seu prórpiomantenedor, ou seja, cada versão lançada tem um coordenador, que irá controlar o sistema após o seulançamento. Cada nova versão lançada, automaticamente encerra o desenvolvimento de uma versão antiga.Por exemplo, no lançamento da versão Asterisk 1.6, o Asterisk 1.4 será descontinuado. Claro que correçõesde segurança e bugs ainda serão implementados, porém novas funcionalidades e a evolução do sistema serátodo focado para a versÃo mais recente. O Asterisk utiliza o software SVN para versionamento de seu códigoe a ferramenta Mantis para registros de bugs e requisição de novas funcionalidades. 2.1.3 Participe também!

Para participar no desenvolvimento do Asterisk, você pode contribuir de diversas formas. Documentando oprojeto, que envolve manuais, howtos, documentação de código entre outros. Projetos a para continente,país para pais e até de estado para estado. Para ser um desenvolvedor você precisa estar muito próximo docódigo do sistema e ter uma boa noção de programação e desejável conhecimento dos protocolos e padrõesde telefonia. Como o Asterisk é distribuído sob a GPL 2.0, basta escrever suas linhas de código e reportar aolíder do projeto(o mantenedor do código da respectiva versão), ele irá determinar se o seu código irá ou nãofazer parte do sistema. É claro que antes de se aventurar é importante e determinante que você participe dalista de emails dos desenvolvedores[5]. 2.2 Arquitetura tecnológica do Asterisk Basta entender um poucosobre as características do Asterisk para começar a evoluir seus conhecimentos neste software. Estecapítulo irá trazer o básico para iniciar uma imersão mais profunda neste sistema. INSERIR IMAGEMDESCRITIVA DO ASTERISK 2.2.1 Diretórios e arquivos

O Asterisk segue o modelo LSB[6] de disposição de diretórios e arquivos. Veja abaixo a espinha dorsal dosistema: /etc/asterisk Arquivos de configuração. Você irá conhecê-los com mais detalhes no decorrer destelivro ou gerando os arquivos de exemplo do sistema. Ao final da compilação do Asterisk, digite “makesamples”, para gerar estes arquivos. Exemplo de um arquivo de configuração do Asterisk:/etc/asterisk/sip.conf [101] ;contexto type=peers ;parâmetro de configuração context=ramais ;parâmetrode configuração secret=senha ;parâmetro de configuração language=pt_BR ;parâmetro de configuraçãodisallow=all ;parâmetro de configuração allow=g729,alaw ;parâmetro de configuração mailbox=101@correio;parâmetro de configuração ou /etc/asterisk/extensions.conf [ramais] ;contexto include ⇒ ramais.conf;incluir conteúdo de outro arquivo exten ⇒ 101,1,Dial(SIP/101,10) ;extensão com prioridade 1 exten ⇒101,2,VoiceMail(u101@correio);extensão com proridade 2 Todos os arquivos seguem a notação acima comcontextos e contéudos(parâmetros, includes e extensões). Os conteúdos variam de arquivo para arquivo ealguns contextos possuem comportamento expecial como veremos nos próximos capítulos deste livro./var/lib/asterisk/sounds Arquivos de som do sistema. Mensagens e sons utilizados nas diversas aplicações doAsterisk ficam armazendas neste diretório. Caso você esteja usando o Asterisk no Brasil, você irá precisarconfigurar o sistema de acordo com a linguagem Português do Brasil, utilizando o código de linguagem pt_BRonde for requisitado. Alguns subdiretórios possuem arquivos de áudio específicos./var/lib/asterisk/sounds/digits /var/lib/asterisk/sounds/letters /var/lib/asterisk/sounds/phonetic/var/lib/asterisk/agi-bin Diretório que contém as aplicações AGI[7] utilizadas pelo Asterisk. São pequenosprogramas auxiliares que podem ajudar o Asterisk em momentos de tomada de decisões no fluxo de umachamada ou trazendo mais recursos e aplicações no formato “plugin”. /var/spool/asterisk Local para onde aschamadas são enviadas antes de chegar ao seu destino final. Aqui as chamadas são enfileiradas e saem umaa uma aos seus destinos. É aqui que também ficam as caixas postais dos ramais do sistema./usr/lib/asterisk/modules O código do Asterisk é todo moduarizado, ou seja, você pode unir peça a peça paramoldar o sistema de acordo com suas necessidades. Os arquivos neste diretório tem aseguintenomenclatura: tipo_nome.so (Ex.: channel_zap.so) Alguns módulos bastante comuns em um sistema Asterisksão: format_g729.so Suporte ao codec g729 chan_sip.so Suporte ao protocolo SIP de comunicação IPapp_voicemail.so Módulo que controla o correio de voz app_meetme.so Módulo que gerencia as conferências/var/log/asterisk Arquivos de log so sistema. Neste diretório você encontra os arquivos que contém os“rastros” de atividade do Asterisk. Você pode possuir diferentes arquivos cada qual com um nível dedetelhamento ou tipo de mensagem. O arquivo que controla o seu conteúdo é o /etc/asterisk/logger.conf[8].2.2.2 O servidor

O Asterisk possui versões que podem ser ujtilizadas em FreeBSD, MacOSX, Linux dentre outros menosexpressivos sistemas operacionais. A versão mais utilizada e melhor documentada e testada é a versão parao sistema operacional Linux. O hardware indicado para utilização do Asterisk varia de acordo com a suautilização. Você deve dimensionar o seu sistema baseado na quantidade de ramais/troncos e/ou nasaplicações a serem utilizadas em sua implementação. Exemplo de maquina para SOHO Exemplo de maquinapara Empresa Media Exemplo de maquina para Empresa Grande 2.2.3 Sopa de letrinhas... Codecs e

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 3/13

Page 4: Apostila Asterisk

- IP (Internet Protocol) O protocolo base da rede Internet e de redes privadas. - TCP (Transport ControlProtocol) Protocolo de transporte de dados em redes IP com controle de entrega de pacotes. - UDP (...)Protocolo de transporte de dados em redes IP sem controle de entrega de pacotes. - SIP (Session InitiationProtocol) Protocolo de transporte de pacotes de voz em redes de dados IP. O SIP é o protocolo maisutilizado nas implementações atuais de transporte de voz. Seu caráter aberto e fácil implementaçãotornaram este protocolo um padrão presente em todos(ou na grande maioria) os produtos e serviços detelefonia IP. - H323 (...) O H323 .... 2.2.3.2 Telefonia Digital

- MFCR2 (...) Uma variante brasileira deste protocolo é MFCR2DBR - PRI Padrão de sinalização E1 utilizadonos países norte americanos. 2.2.3.3 Telefonia Analógica

- FXS (Foreign eXchange Station) Sinalização enviada para telefones analógicos. - FXO (Foreign eXchangeOffice) Sinalização enviada para troncos analógicos 2.2.3.4 CODECs

- G729 - G723 - G726 - iLBC - Speex 2.2.4 Os Canais(channels)

Os canais são os responsáveis pela comunicação entre as aplicações, ramais e troncos do Asterisk. Todos osrecursos que envolvem chamadas, são disponibilizados por meios de canais de comunicação, os “channels”do Asterisk. IMAGEM COM CANAIS E O ASTERISK O Asterisk possui diversos tipos de canais. Os tipos decanais possíveis são: 2.2.4.1 Canal SIP (chan_sip.so)

Este canal é reponsável pela comunicação SIP entre o Asterisk e ramais ou troncos que falem esteprotocolo. O canal SIP é configurado através do arquivo /etc/asterisk/sip.conf Os parâmetros deconfiguração SIP para o contexto [general] são: Parâmetros Valores Descrição disallow all|lista de codecsdisallow=all Desabilita todos os codecs. allow all|lista de codecs Habilita todos(all) ou os codecsespecificados e espaçados por vírgulas por ordem de preferência. Utilizar disallow=all para especificar alguns.allowexternalinvites yes|no Permite ou não o INVITE e REFER para domínios não locais. Deafult é yes.allowguest yes|no Permite ou não chamadas não conhecidas(guest). Default é yes autocreatepeer yes|noSe estiver como yes irá permitir que qualquer um se autentique ccomo peer(sem checagem de credenciais).Interessante em conjunto com o SER. Default é no. autodomain yes|no Habilita ou não a abilidade doAsterisk inserir hosts locais ou Ips locais a lista de domínios. Default é no. bindaddr número ip Endereço IPonde o Asterisk irá escutar as requisições SIP. Default é 0.0.0.0. bindport número inteiro Porta UDP onde oAsterisk irá escutar as requisições SIP. Default é 5060. callerid nome Callerid padrão caso nenhum sejaespecifdicado. O default é asterisk. canreinvite update|yes|no Permite que A e B trafeguem mídia de vozdiretamente sem utilziar o Asterisk. Default é yes. checkmwi tempo em segundos Tempo em segundos dointervalo de checagem das caixas de correio. Default é 10. compactheaders yes|no Se o Asterisk enviará ounão cabeçalhos compacados(aabreviados) nas mensagens SIP. Default é no. context nome O contextodefault. Usado quando um endpoint não possui esta informaçcão. defaultexpirey tempo em segundos Otempo em segundos para registros SIP(entrante/saintes). Default é 120. dtmfmode inband|info|rfc2833 ModoDTMF. Default é rfc2833. domain nome Lista de domínios, separados por vírgula, ao qual o Asterisk irá serresponsável. dumphistory yes|no Habilita o suporte de gerar um dump de conversas SIP no LOG_DEBUG.Default é no. extermip número ip ou nome Endreço IP ou nome do host que será colocado em mensagens SIPse o Asterisk estiver atrás de NAT. Se for usado o nome de host, ele será verificado somente uma vez. Usarexternhost se o nome estiver associado a um IP dinâmico. externhost nome Nome do host que será colocadoem mensagens SIP se o Asterisk estiver atrás de NAT. extermrefresh tempo em segundos Tempo emsegundos que será feito um refresh do DNS do nome especificado em externhost. Default é 10.ignoreregexpire yes|no Indica quando usar a informação de Contact de um peer se esta informação estiverociosa por ter alcançado seu tempo máximo de expiração.. language nome Idioma padrão para as aplicaçõesPlayback() e Background() localnet endereço ip/ mascara de rede Endereço de rede local e mascara.fromdomain nome de domínio Altera o campo From: do cabeçalho SIP quando o Asterisk é um UA(UserAgent). insecure very|yes|no|invite|port Como tratar conexões SIP com peers. Default é no(autentica todasas conexões). maxexpirey tempo em segundos Tempo máximo, em segundos, que será aguardado pararegistros SIP. Default é 3600. musicclass nome Uma das classes de Música em Espera disponível nosistema(musiconhold.conf) musiconhlod nome Mesmo que musicclass nat yes|no|never|route Default é no.Use yes caso o seu UA esteja atrás de NAT. notifymimetype mediatype/subtype Permite sobrepor o tipo demidia[9] no MWI NOTIFY usado no correio de voz. notifyringing yes|no NOTIFY no momento de ringing.Default é yes. outboundproxy número ip ou dns srv Proxy para envio de chamadas saintes. Não especificar oprefixo _sip._udp em caso de DNS SRV. outboundproxyport número inteiro Porta UDP do proxy de chamdassaintes. pedantic yes|no Permite a checagem pedantic de callerid, cabeçalhos multiline SIP e cabeçalhos URIcodificados. port número inteiro Porta SIP do UA. Não é a mesma coisa do que bindport. progreeinbandnever|no|yes Se é necessário gerar ring inband SEMPRE. Default é never/ promiscredir yes|no Permite osuporte a Redirects 302. Irá redirecionar todos a extensão local presente no campo Contact ao invés daextensão de destino. qualify yes|no|tempo em milisegundos Checa se o cliente(UA) está alcançavel. Se yesirá checar a cada 2000ms. Default é no. realm nome Alterar o realm padrão(asterisk). recordhistory yes|noHabilita o logging do histórico de transações SIP. regcontext nome Contexto padrão para utilizar nasrespostas SIP REGISTERs dos servidores SIP. register ⇒ <username>:<password>:[authid]@<sip client/peerid in sip.conf>/<contact> Para realizar o registro SIP em outro server. registerattempts número inteiroNúmero de tentativas de registro antes de desistir de realizar o registro. Default é 0. registertimeout tempoem segundos Tempo para esperar para caracaterizar um timeout de registro. Default é 0(sem limite).relaxdtmf yes|no Relaxar a detecção DMTF. rtautoclear yes|no|tempo em segundos Auto expirar contascriadas no realtime. Default é 120. rtcachefriends yes|no Fazer cache de contas SIP na lista interna doAsterisk como é feito usando os arquivos de configuração ao invés de realtime. Default é no. rtpholdtimeouttempo em segundos Tempo, em segundos, de timeout de uma chamada em hold antes de derruba-la. Defaulté 0(ilimitado). rtpkeepalive tempo em segundos Tempo em segundos até que seja enmviado um RTPKeepalive em caso de inatividaade de um canal de voz. rtptimeout tempo em segundos Tempo em segundosaté caracterizar a chamada como inativa. Default é 0(sem RTP timeout). rtupdate yes|no Envia updates deregistry ao banco de dados do Asterisk quando estiver usando realtime. sendrpid yes|no Se um Remote-Party_ID do cabeçalho SIP devará ser enviado. Default é no. sipdebug yes|no Modo debug no início domódulo SIP. srvlookup yes|no Habilitar consultas DNS SRV. Default é no. tos valor qos Parametro QoS parrasaída de chamdas. Valores numéricos pode ser usados como tos=184 trustrpid yes|no Se o Remote-Party-IDdo cabeçalho SIP deverá ser confiável. useclientcode yes|no useregphone yes|no Para usar user=phone aoURI. useragent nome Customizar o cabeçalho User-Agent do protocolo SIP. Alterar a identificação doAsterisk. Default é asterisk. videosupport yes|no Para usar o suporte a vídeo. Default é no. vmexten nomeExtenssão do dialplan para acessar o correio de voz. Default é asterisk. Parâmetros específicos paratype=peer e type=user. Parâmetros Valores Descrição type host disallow allow allowexternalinvites Yes|noPermite ou não o INVITE e REFER para domínios não locais. Deafult é yes. allowguest Yes|no Permite ou nãochamadas não conhecidas(guest). Default é yes 2.2.4.2 Canal IAX (chan_iax2.so)

Este canal é reponsável pela comunicação SIP entre o Asterisk e ramais ou troncos que falem esteprotocolo. O canal SIP é configurado através do arquivo /etc/asterisk/sip.conf Os parâmetros deconfiguração SIP são: Parâmetros Descrição Type host=0.0.0.0 Host permitido para acesso ao sistema.peer/user disallow=all peer/user allow=g729,ulaw peer friend 2.2.4.3 Canal Local (chan_local.so)

Canais do tipo “Local” são utilizados para acessar recursos locais do Asterisk. Você pode por exemplo chamarum ramal SIP utilizando a seguinte notação: Local/3333 ao invés de SIP/333. 2.2.4.4 Canal ZAP(chan_zap.so )

Os canais ZAP são utilizados para realizar a comunicação do Asterisk com o mundo da telefonia Digital eAnalógica. É através dele que configuraremos os troncos E1(PRI), por exemplo, com uma operadora detelefonia. Ou através dele disponibilizamos ramais analógicos conectados diretamente ao servidor Asterisk.Para a utilização deste tipo de canal é necessário a utilização de placas(geralmente com barramento PCI)conectadas ao servidor Asterisk. Vamos falar um pouco mais sobre placas deste tipo mais adiante. O arquivoque configura este canal é o /etc/asterisk/zapata.conf. Veja na tabela abaixo os parâmetros disponíveisneste arquivo: Parâmetros Descrição language=pt_BR group=0 channels=1-4 2.2.4.5 Canal Unicall[10](chan_unicall.so)

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 4/13

Page 5: Apostila Asterisk

O Canal Unicall tem enorme importância em território brasileiro, pois é ele o responsável pelo suporte aoprotocolo de sinalização de E1 CAS MFCR2DBR.

O arquivo que configura este módulo é o /etc/asterisk/unicall.conf. Os parâmetros utilizados neste arquivo seassemelham muito com os parâmteros utilizado no arquivo de configuração de canais ZAP. Veja na tabelaabaixo ps parâmetros disponíveis neste arquivo:

Parâmetros Descrição language=pt_BR group=0 channels=1-4 2.2.5 Equipamentos periféricos

O Asterisk, como qualquer outro ambiente de telefonia, possui apetrechos tecnológicos para disponibilizar umambiente completo de comunicação. Telefones, placas, gateways, enfim, é necessário alguns acessóriospara que se faça o uso completo do Asterisk.

Neste capítulo iremos conhecer alguns destes acessórios.

2.2.5.1 Placas digitais e analógicas

Para conectar o Asterisk às redes de telefonia convencionais(chamaremos de PSTN[11] estas redes nodecorrer deste livro).

Existem diversos fabricantes de placas analógicas e digitais que possuem suporte no Asterisk. As maisconhecidas são as placas Digium, empresa de Mark Spencer, criador do Asterisk. Abaixo vamos listar algunsfabricantes e seus produtos.

Digium (LOGO)

TE110P (FOTO DA PLACA)

LISTAR TODAS AS PLACAS

Sangoma

LISTAR TODAS AS PLACAS

Voicetronix

LISTAR TODAS AS PLACAS

Go Varion

LISTAR TODAS AS PLACAS

Digivoice

LISTAR TODAS AS PLACAS

Khomp

LISTAR TODAS AS PLACAS

Pika

LISTAR TODAS AS PLACAS

O projeto Zapata Telephony[12] disponibiliza sob a licença GPL um projeto para fabricação de alguma destasplacas, ou seja, no Asterisk até hardware utilizado pode ter especificação aberta.

A maioria das placas acima são basedas no projeto Zapata Telephony e suas configurações estão disponíveisno arquivo /etc/zaptel.conf.

2.2.5.2 Telefones

Impossível imaginar(pelo menos por enquanto) um sistema de telefonia sem telefones. Pois bem, o Asteriskpossui uma lista extensa de telefones suportados. Vamos comentar sobre alguns deles.

Polycom FOTO

Cisco FOTO

Snom FOTO

Analógico SIEMENS (FXS)

UM BEM ANTIGO... (FXS)

2.2.5.3 ATAs

Analog Telephony Adapter, este é o significado de ATA. Um ATA é utilizado para transformar um telefoneanalógico em telefone IP. Existem diversos ATAs disponíveis no mercado, basicamente a sua diferença estána quantidade de portas(conectores). Existem ATAs de uma porta analógica e de até vinte e quatro portasanalógicas, o que significa que podemos ter um telefone ou vinte e quatro telefones conectados no mesmoequipamento, cada qual com seu número próprio.

Um ATA é um gateway de pequeno porte que faz a converção de um sinal analógico para um sinal IP.

Alguns ATAs estão listados abaixo.

IAXy (FOTO)

Handy Tone (FOTO)

Linzsys PAP2 (FOTO)

2.2.5.4 Softphones

Softphones são telefones IP via software, ou seja, são telefones que podemos utilizar em um computador.Existem diversos(para nÃo dizer milhares) de opções de softwaphones disponíveis. Alguns comerciair, outroslivres. Para Windows, Linux ou MacOSX, PDAs e handhelds, enfim, a oferta é grande e você saberá escolhero que melhor se adapta ao seu projeto.

Xten (SCREENSHOT)

Firefly (SCREENSHOT)

EyeBeam (SCREENSHOT)

Kphone (SCREENSHOT)

Ekiga (SCREENSHOT)

2.2.5.5 Outros

Channels banks PABX IPBX Gateways balun A balun is a device designed to convert between balanced andunbalanced electrical signals, such as between coaxial cable and ladder line. Baluns can be considered assimple forms of transmission line transformers. 2.3 Documentação adicional e Downloads

Canal Unicall – http://www.soft-switch.org/unicall [http://www.soft-switch.org/unicall]

Projeto Asterisk – http://www.asterisk.org [http://www.asterisk.org]

Projeto AsteriskBrasil.org – http://www.asteriskbrasil.org [http://www.asteriskbrasil.org]

Biblia Sagrada do Engenheiro VoIP – http://www.voip-info.org [http://www.voip-info.org]

3 Configurações básicas do Asterisk Todas as configurações do Asterisk se encontram nos arquivos *.confdo diretório /etc/asterisk. Não existe distinção no local onde se configura um ramal ou um tronco ou mesmouma sala de conferência. Todos estes recursos estão presentes, muitas vezes, nos mesmos arquivos deconfiguração. O que os distingue dentro do mesmo arquivo, são os contextos.

Antes de começar a Asteriskar é necessário fazer um preparo do seu sistema. Vamos tropicalizar o servidor erealizar alguns ajustes.

3.1 Inserindo os padrões de telefonia Brasileiro /etc/asterisk/.indications.conf [general] country = br [br]description = Brazil ringcadance = 1000,4000 dial = 425 busy = 425/250,0/250 ring = 425/1000,0/4000congestion = 425/250,0/250,425/750,0/250 callwaiting = 425/50,0/1000 ; Dialrecall não é utilizado no Brasil.Use o padrão inglês. dialrecall = 350+440 ; Record não é utilizado no Brasil. Use tom de ocupado record =

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 5/13

Page 6: Apostila Asterisk

linguagem Português do Brasil basta regravar os áudios e adiciona-los nos diretórios abaixo

# mkdir /var/lib/asterisk/sounds/pt_BR # mkdir /var/lib/asterisk/sounds/digits/pt_BR # mkdir/var/lib/asterisk/sounds/letters/pt_BR # mkdir /var/lib/asterisk/sounds/phonetic/pt_BR Os arquivos de áudiodevem possuir o mesmo nome porém podem ser gravados com outros formatos de áudio. O formato padrãodos arquivos originais é o GSM, porém para se ter maior qualidade nas locuções é interessante gravar o áudiocom uma qualidade mais alta.

Os áudios devem posssuir amostragem de 8Khz e qualidade de 16 bits para que se possa trafegar em redesde telefonia.

Observe que se um ramal, com suporte somente ao codec GSM, acessar o servidor com os áudios gravadosem outro formato não GSM, o Asterisk irá realizar um processo de transcoding[13], o que irá trazer impactosde performance.

3.3 Criando ramais Ramal SIP: sip.conf

Exemplo:

Ramal Analógico(ZAP): zapata.conf

Exemlo:

Ramal IAX: iax.conf

Exemplo:

3.4 Criando troncos Tronco SIP: sip.conf

Tronco Digital(ZAP): zapata.conf

; Note the ‘g2’ in the TRUNK variable above. It specifies which group (defined ; in zapata.conf) to dial, i.e.group 2, and how to choose a channel to use in ; the specified group. The four possible options are: ; ; g:select the lowest-numbered non-busy Zap channel ; (aka. ascending sequential hunt group). ; G: select thehighest-numbered non-busy Zap channel ; (aka. descending sequential hunt group). ; r: use a round-robinsearch, starting at the next highest channel than last ; time (aka. ascending rotary hunt group). ; R: use around-robin search, starting at the next lowest channel than last ; time (aka. descending rotary huntgroup).

Tronco Digital(Unicall)

Tronco Analógico: zapata.conf

3.5 Realtime O Realtime é um recurso relativamente novo no Asterisk. Em suma ele permite que se armazeneconfigurações e o próprio plano de discagem do Asterisk em u m banco de dados relacional. Estasconfigurações, neste modo de operação, são automaticamente instanciadas no sistema, sem que haja anecessidade de se refazer uma leitura nos arquivos de configuração do Asterisk.

Este recurso é indispensável em ambiente de alto tráfego de telefonia. Um simples reiniciar da plataforma detelefonia poderia ocasionar interrupação de serviços por alguns instantes, mas o sufcietnte para ser sensívelaos usuários.

O realtime ainda é um recurso novo no Asterisk, portanto nem tudo pode estar presente neste modo deoperaçcão. Alguns arquivos de configuração ainda são necessários.

Use realtime sempre que possível.

4 Mergulhando no Dialplan O arquivo responsável pelo Dialplan, ou plano de discagem, do Asterisk é o/etc/asterisk/extensions.conf. Podemos chamar de a Peça Chave do Asterisk o arquivo extensions.conf. Umplano de discagem é composto por contextos, extensões, prioridades e aplicações. Alguns contextos sãoreservados e possuem uma sintaxe especial. Veja a sintaxe do arquivo /etc/asterisk/extensions.conf:[general] parametro01 = valor01 parametro02 = valor02 ... [globals] GLOBALVAR01 = valor01 GLOBALVAR02 =valor02 ... [contexto] exten ⇒ extensão,prioridade,aplicação(argumentos) Vamos analizar um pequenotrecho deste arquivo para entender sua morfologia e sintaxe. [ramais] exten ⇒ 101,1,Dial(SIP/101,10) exten⇒ 101,2,VoiceMail(u101@correio) exten ⇒ 101,3,Hangup() exten ⇒ 102,1,Dial(SIP/102,10) exten ⇒102,2,VoiceMail(u102@correio) exten ⇒ 102,3,Hangup()

[ramais] é o contexto, 101 e 102 são as extensões o segundo parâmetro(1.2.3) são as prioridades e Dial,VoiceMail e Hangup são as aplicações.

Neste capítulo vamos entender um pouco mais sobre cada uma destas peças do plano de discagem doAsterisk.

Usando #include para incluir arquivos Você pode incluir outros arquivos dentro do dialplan, para isso adicionea seguinte linha dentro do extensions.conf. #include extensions_ramais.conf O conteúdo do arquivo/etc/asterisk/extensions_ramais.conf também estará disponível no dialplan. NÃO CONFUNDIR ESTE INCLUDECOM O INCLUDE DE CONTEXTOS, ANALISADO MAIS ADIANTE. Vale lenbrar que todos os arquivos do projetoAsterisk permitem a utilização de #include[14]. Porém há diferença entre dois 4.1 Contextos(context)[ramais] É o contexto do trecho de dialplan exemplificado acima, é ele o responsável pela diferenciaçãodeste segmento de código para outros no mesmo arquivo. Este método possibilita a divisão do arquivo emgrupos que podem ser totalmente distintos entre si. Os nomes dos contextos não podem conter espaços,somente caracteres alfanumericos. 4.1.1 Contexto [general]

O contexto [general] é utilizado para adicionar alguns parâmetros gerais de configuração do dialplan,portanto o nome de contexto general é reservado pelo Asterisk. São estes os parâmetros de configuração docontexto [general]: Parametro Valor Descrição static Yes|no If static is set to no, or omitted, then thepbx_config will rewrite

; this file when extensions are modified. Remember that all comments

; made in the file will be lost when that happens. writeprotect Yes|no if static=yes and writeprotect=no, youcan save dialplan by

; CLI command ‘save dialplan’ too

; autofallthrough Yes|no ; If autofallthrough is set, then if an extension runs out of

; things to do, it will terminate the call with BUSY, CONGESTION

; or HANGUP depending on Asterisk’s best guess (strongly recommended).

;

; If autofallthrough is not set, then if an extension runs out of

; things to do, asterisk will wait for a new extension to be dialed

; (this is the original behavior of Asterisk 1.0 and earlier). clearglobalvars Yes|no ; If clearglobalvars is set,global variables will be cleared

; and reparsed on an extensions reload, or Asterisk reload.

;

; If clearglobalvars is not set, then global variables will persist

; through reloads, and even if deleted from the extensions.conf or

; one of its included files, will remain set to the previous value.

; priorityjumping Yes|no ; If priorityjumping is set to ‘yes’, then applications that support

; ‘jumping’ to a different priority based on the result of their operations

; will do so (this is backwards compatible behavior with pre-1.2 releases

; of Asterisk). Individual applications can also be requested to do this

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 6/13

Page 7: Apostila Asterisk

simples, que retorna o valor da variavel ${ENV(VARIAVEL)} Para utilizar o valor de uma variável deambiente(sistema operacional) ${texto${VARIAVEL}} Acrescentando um prefixo a um valor de variável 4.1.3Parâmetro include

É possível incluir um contexto dentro de outro utilizando o parâmetro include da seguinte forma: [ramais]include ⇒ ramaisIP exten ⇒ 101,1,Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒101,3,Hangup() exten ⇒ 102,1,Dial(SIP/102,10) exten ⇒ 102,2,VoiceMail(u102@correio) exten ⇒102,3,Hangup() Neste caso quem estiver com permissões de acesso ao contexto [ramais] também teráacesso ao contexto [ramaisIP]. Isto é possível graças ao parametro include dentro do contexto [ramais]. Osincludes podem assumir uma condição de tempo para serem ativados. Por exemplo, poderíamos inserir oinclude do exemplo acima da seguinte forma: [ramais] include ⇒ ramaisIP|9:00-17:00|mon-fri|*|* exten ⇒101,1,Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒ 101,3,Hangup() exten ⇒102,1,Dial(SIP/102,10) exten ⇒ 102,2,VoiceMail(u102@correio) exten ⇒ 102,3,Hangup()

Neste caso o contexto [ramaisIP] só estaria disponível para o contexto ramais, de segunda a sexta das noveas cinco horas da tarde.

4.1.4 Parâmetros específicos de um contexto

Alguns parâmetros diferentes de exten ⇒ podem ser usados dentro de contextos.

Você pode acessar um plano de discagem remoto, de outro servidor Asterisk, utilizando o parâmetro swicth⇒.

switch ⇒ IAX2/user:password@bigserver/local Variantes do swicth ⇒ também podem ser úteis.

lswicth ⇒ Loopback/12${EXTEN}@outroontexto O lswitch ⇒ possui a mesma função do parâmetros switch,porém quando você deseja passar um valor que contenha uma variável, ele não faz a subistituição damesma, ou seja, a string é enviada de forma literal.

eswitch ⇒ Loopback/12${EXTEN}@outrocontexto O eswitch ⇒ realiza a mesma função do lswitch ⇒ porémrealiza a substituição de variáveis antes de encaminhar o dialplan ao realtime. 4.2 Extensões(exten) Umaextensão pode ser composta por letras, números ou uma combinação de ambos. exten ⇒ Define uma linha deprogramação do dialplan. São elas as responsáveis pela inteligência do Asterisk. Por elas configuramos astarefas contidas nos planos de discagem bem como a sua ordem de execução. exten ⇒101,1,Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒ 101,3,Hangup() Este dialplan nosdiria, se falassse português, a seguinte frase: “Quando alguém ou alguma coisa digitar(enviar estes dígitos:101) ao Asterisk, ele irá executar a alpicação Dial com o argumento SIP/101,10. Após concluída esta primeiraação ele irá executar a aplicação VoiceMail com os parâmteros u101@correio. Por último execute a aplicaçãoHangup sem parâmetro algum.” E em português brasileiro, mais claro ainda: “Chame o ramal 101, se ele nãoatender envie esta chamada para o seu Correio de Voz e desligue a chamda em seguida.” Chamamos deextensão a seguinte porção deste exmplo: exten ⇒ 101 Após a vírgula temos as chamadas Prioridades e nasequência as Aplicações. 4.2.1 Extensões especiais

Algumas extensões expeciais presentes no Asterisk são: exten ⇒ t Representa timeout exten ⇒ s Exteninicial, quando uma chamda for enviada a um contexto sem uma extensão definida. S de start. exten ⇒ hExtensão de hangup exten ⇒ o Extensão out, utilizado pela aplicação VoiceMail exten ⇒ talk exten ⇒ hintexten ⇒ fax exten ⇒ T exten ⇒ failed 4.2.2 Padrões de discagem

É possível utilizar caracteres coringas como valor de extensões. Se uma extensão é iniciada com o caractereunderscore ‘_’ isto não é interpretado literalmente pelo Asterisk e sim como um padrão de discagem.

Os padrões de discagem definem coringas para representar dígitos ou um grupo de dígitos sem ter amecessidade de especifica-los explicitamente como uma extensão do plan o de discagem.

Veja a seguinte linha de um dialplan:

exten ⇒ _014ZZXXXXXXX,2,Macro(chama-tronco,2,${EXTEN}) Neste caso qualquer número que inicie com014, tenha um total de 12 dígitos, sendo o quarto e quinto dígito um número entre 1 e 9 e os demaisnúmeros sendo qualquer dígito entre 0 e 9 irá seguir por essa linha do diaplan enviando para a macro chama-ramal o valor da variável ${EXTEN}.

Veja, na tabela abaixo, o significado de todos os padrões de discagem disponíveis:

Padrão Descrição X Qualquer dígito entre 0 e 9 Z Qualquer dígito entre 1 e 9 N Qualquer dígito entre 2 e 9[1235-9] Qualquer dígito entre colchetes (neste exemplo, 1,2,3,5,6,7,8,9 . O ponto é um coringa, siginificaqualquer coisa (Por exemplo _9011. significa qualquer coisa começando com 9011 menos o prórpio 9011) !wildcard, causes the matching process to complete as soon as it can unambiguously determine that no othermatches are possible 4.3 Prioridades As prioridades são o segundo parâmetro das extensões. É com ela quedefinimos a rodem de ações dentro de um plano de discagem. As prioridades devem ser especificadas deforma crescente e não precisam necessariamente ser contínuas, por exmplo: exten ⇒ 101,1,Dial(SIP/101,10)exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒ 101,3,Hangup() As prioridades 1, 2 e 3 poderiam serescritas da seguinte forma: exten ⇒ 101,1,Dial(SIP/101,10) exten ⇒ 101,15,VoiceMail(u101@correio) exten⇒ 101,18,Hangup() 1, 15 e 18 são as novas prioridades. Isso pode ajudar muito em casos onde se estádesenvolvendo um dialplan e existe a necessidade de se adicionar linhas entre as extensões já criadas.Lembre-se que as prioridades sempre devem começar com 1 nestes casos. VERIFICAR A VERACIDADE 4.3.1Prioridade n+101

Uma prioridade específica merece atenção. A prioridade n + 101. Veja o exemplo abaixo. exten ⇒101,1,Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒ 101,102,VoiceMail(b101@correio)exten ⇒ 101,3,Hangup() Neste caso a prioridade 102, ou 1 + 101 diz que caso a prioridade número 1encontre sinal de ocupado o Asterisk deve enviar a chamada para a prioridade 102, caso contráriocontinuará executando a prioridade seguinte a número 2. 4.3.2 Prioridade next

A prioridade next ou simplesmente n siginifica a prioridade anterior mais um.

exten ⇒ 101,1,Dial(SIP/101,10) exten ⇒ 101,n,VoiceMail(u101@correio) exten ⇒101,1+101,VoiceMail(b101@correio) exten ⇒ 101,n,Hangup() Moleza hein?

4.3.3 Prioridade same

A prioridade same ou simplesmente s, significa que esta prioridade tem o mesmo valor da prioridade anterior.

A prioridade s+1 tem o mesmo valor que a prioridade n.

exten ⇒ 101,1,Dial(SIP/101,10) exten ⇒ 101,s+1,VoiceMail(u101@correio) exten ⇒101,102,VoiceMail(b101@correio) exten ⇒ 101,s+1,Hangup() 4.3.4 Sinais numéricos e prioridades

As prioridades podem ser seguidas de um sinal ‘+’ (ou outro sinal numérico)e um valor a ser somado. Esterecurso é utilizável em conjunto com as prioridades next e same.

exten ⇒ 101,1,Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒101,1+101,VoiceMail(b101@correio) exten ⇒ 101,3,Hangup() 4.3.5 Apelidos para prioridades

As prioridades podem possuir apelidos ou alias para que possam ser referenciadas com a aplicação Goto() ouem outras áreas do plano de discagem..

Este apelidos devem ser especificados entre parentesis logo após o valor da prioridade, como no exemploabaixo.

exten ⇒ 101,1(dial),Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒101,dial+101,VoiceMail(b101@correio) exten ⇒ 101,3,Hangup() Outro exemplo:

exten ⇒ 101,1(,Dial(SIP/101,10) exten ⇒ 101,2,VoiceMail(u101@correio) exten ⇒101,102,VoiceMail(b101@correio) exten ⇒ 101,n,Goto(${EXTEN},hangup) exten ⇒ 101,hangup,Hangup() 4.4Aplicações As aplicações formam o coração do dialplan. Elas trazem aplicativos pré empacotados ao plano dediscagem. As aplicações são o terceiro parâmetro de uma extensão. Uma aplicação pode receber parâmetrose sua notação é a seguinte: Aplicação(parâmetro1,parâmetro2,parâmtero3) Geralmente os parâmetros são

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 7/13

Page 8: Apostila Asterisk

ou melhor, é ela que as realiza. O Dial em termos Asterísticos, conecta um canal(channel) a outrocanal(channel). Um exmplo de utilização da aplicação Dial pode ser visto abaixo: exten ⇒101,10,Dial(SIP/101,10) No caso acima a aplicação Dial possui dois parâmetros, o primeiro especifica o canale informações necessárias para a sua utilização, o segundo parâmetro designa a duração em segundos que aaplicação Dial irá tentar estabelacer o canal. Exiiste a possibilidade de um terceiro parâmetro, chamado deflag. Por exemplo, a linha de exten ⇒ acima poderia estar escrita da seguinte forma: exten ⇒101,10,Dial(SIP/101,10,tw) Um flag é representada por uma letra do alfabeto e cada uma tem sua função.No exemplo acima utilizamos as flags t e w. Veja abaio o significado destas e de outras flags disponíveis parao comando Dial. Flag Descrição T Permite a transferência pelo orginador da chamada t Permite atransferência pelo recebedor da chamada W Permite a gravação sob demanda do orginador da chamada wPermite a gravação sob demanda do orginador da chamada f forces callerid to be set as the extension of theline making/redirecting the outgoing call. For example, some PSTNs don’t allow callerids from other extensionsthan the ones that are assigned to you. d This flag trumps the ‘H’ flag and intercepts any dtmf while waitingfor the call to be answered and returns that value on the spot. This allows you to dial a 1-digit exitextension while waiting for the call to be answered - see also RetryDial o Restore the Asterisk v1.0 CallerIdbehaviour (send the original caller’s ID) in Asterisk v1.2 (default: send this extension’s number) r Gerarringtone antes mesmo de começar a chamar o ramal. Usar com cuidado. m[classe] Toca uma música emespera a pessoa que está chamando um ramal. Utilizar m(classe da música em espera). Utilizar em conjuntocom a opção “r”. M(x[^argumento]) Executes the macro (x) upon connect of the call (i.e. when the calledparty answers) h Permite o recebedor desligar uma chamada pressionando *. H Permite o originador desligaruma chamada pressionando *. C Reset the CDR (Call Detail Record) for this call. This is like using the NoCDRcommand. P[(x)] Usa o PrivacyManager, usando “x” como valor do banco de dados.(x é opcional) g Whenthe called party hangs up, exit to execute more commands in the current contextG(contexto^ramal^prioridade) If the call is answered, transfer both parties to the specified context andextension. The calling party is transferred to priority x, and the called party to priority x+1. This allows thedialplan to distinguish between the calling and called legs of the call (new in v1.2). A(arquivo) Toca umanúncio(arquivo.gsm|.wav|.*) para o recebedor da chamada. D([chamado][:chamador]) After the calledparty answers, send digits as a DTMF stream, then connect the call to the originating channel. (You canalso use ‘w’ to produce .5 second pauses.) L(x[:y][:z]) n IMPORTANTE! - Não utilize espaços entre as flagsda aplicação Dial(), pois eles não irão funcionar. - Se você utilizar algumas destas flags(t, T, h, H, w, W ouL) na aplicação Dial() o Asterisk sempre estará no mediapath, ou seja, o parâmetro canreinvite=yes não iráfuncionar. 4.4.2 Aplicação Set

A aplicação Set tornou-se muito mais expressiva na versão Asterisk 1.2. Diversas aplicações foraminutilizadas pois desenvolveu-se sua análoga no formato de funções da aplicação Set. Em versões anterioresdo Asterisk, a aplicação Set foi muito utilizada para nomear variáveis(globais e de canal). Vamos conhecerum pouco sobre as opções que esta aplicação fornece para a construção de um plano de discagem. Estasopções são três, Declaração de Variáveis, Execução de funções e Interação com o AstDB(Banco de dadosinterno do Asterisk) 4.4.2.1 Declaração de variáveis

Utilizando a aplicação Set, podemos declarar variáveis no sistema Asterisk. A declaração de váriáveis nasversões anteriores do Asterisk(série 1.0) eram realizadas pela aplicação SetVar. Atualmente ela foidescontinuada em favor da aplicação Set. Para declarar uma variável de canal(válida somente no momentoda chamada ou enquanto o canal estiver sendo executado) utilize o exemplo abaixo como referência: exten⇒ 101,1,Set(TEMPORING=30) exten ⇒ 101,2,Dial(SIP/101,${TEMPORING},tw) exten ⇒101,3,VoiceMail(u101@correio) exten ⇒ 101,103,VoiceMail(b101@correio) exten ⇒ 101,4,Hangup() Apósdeclarar uma variável você pode fazer uso dela inserindo o nome da variável entre um cifrão e uma chaveaberta e outra chave fechada como abaixo: ${TEMPORING} O Asterisk irá substituir ${TEMPORING} por 30que neste exmplo significa que o tempo que a aplicação Dial irá utilizaar para chamar o ramal 101 será de 30segundos. Para declarar uma variável global, ou seja, visível por todas as extensões do seu diaplan, utilize aaplicação SetGlobalVar. 4.4.2.2 Execução de funções

Como dito no início deste tópico, tem se migrado uma série de pequenas aplicações para o formato defunção. Isto significa que a aplicação Set tem outras habilidades que não seja somente a declaração devariáveis ela pode realizar funções antes executadas por aplicações. As funções possuem uma sintaxe muitosemelhante a utilizada na declaração de variáveis, porém as funções recebem um argumento a mais antes dovalor declarado. Veja o exemplo abaixo: exten ⇒ s,1,Set(TIMEOUT(digit)=30) No caso acima estamos usandoa função “TIMEOUT” com o argumento “digit” para declarar o tempo máximo entre os dígitos....... A funçãoTIMEOUT foi concebida apartir de suas análogas aplicações DigitTimeout, AbsoluteTimeout eResponseTimeout. Como na declaração de variáveis o uso de ${} também é permitido caso queira utilizar ovalor retronado da função em algum outro lugar do seu plano de discagem. Veja o exemplo abaixo: Algumasfunções disponíveis são estas: Função Argumentos Descrição TIMEOUT Digits|absolute|response CALLERIDAll|Name|num|rdnis LANGUAGE CUT DB CDR MATH CHECK MD5 MD5 GROUP_COUNT DB_EXISTSFAMILA/CHAVE Checa se existe o PAR/CHAVE no AstDB SIP_HEADER Você pode verificar todas as funçõesdisponíveis executando show functions na linha de comando Asterisk. *cli> show functions 4.4.2.3 AstDB

O AstDB é o banco de dados interno do Asterisk. Este banco de dados não é um banco de dados relacionalcomo o MySQL, Oracle, PostgreSQL. O AstDB é um banco de dados baseado no Berkeley DB v.1.

O Asterisk armazena seus dados dentro do AstDB utilizando o seguinte formato:

FAMILIA/CHAVE=VALOR

Cada familia pode ter somente uma chave com o mesmo nome.

Resursos poderosos podem ser utilizados com o AstDB. Você pode, por exemplo, desenvolver aplicações(vocêvai estudar sobre AGI para realizar este desenvolvimento) que inserem dados sobre a disponibilidade de umaramal. É claro que o prórpio Asterisk guarda esta informação dentro do AstDB, porém você pode manipularesta informação e forçar um status. Um exmeplo prático desta aplocaçcão poderia ser um recursos de NãoPerturbe, que quando o usuário digitar uma extensão o plano de discagem aramazena um avalor deFAMILIA/CHAVE dentro do AstDB que será consultado no momento de uma chamada para este ramal.

Vamos conhecer um pouco mais sobre esta apliucação nas próximas linhas, fique tranquilo.

Inserindo/Extraindo/Apagando entradas no AstDB

As funções de inserção, extração e remoção do AstDB estão disponíveis tanto na linha de comando doAsterisk(*CLI) ou através de aplicações que podem ser usadas em seu plano de discagem.

Para inserir dados no AstDB é necessário utilziar a aplicação Set, pois trata-se de declaração de um valor, eele será aramazenado dentro do banco de dados do Asterisk. Veja a sintaxe de inserção abaixo.

exten ⇒ extensão,prioridade,Set(${DB(FAMILIA/CHAVE)=VALOR}) Para apagar uma entrada do banco dedados do Asterisk, é necessário utilizar a aplicação Dbdel como mostrado na linha abaixo.

exten ⇒ extensão,prioridade,DBdel(FAMILIA/CHAVE) Veja o exemplo real abaixo. É uma aplicação de nãoperturbe que traz ao usuário a possibilidade de indisponibilizar o seu ramal quando necessário discando ocódigo *11 em seu telefone. O nÃo perturbe pode ser desabilitado digitando *13 no telefone. Em ambos oscasos o plano de discagem irá utilizar a variável interna do Asterisk CALLERIDNUM como valor de chave dafamília NP.

[app-naoperturbe] exten ⇒ *11,1,Answer exten ⇒ *11,2,Wait(1) exten ⇒*11,3,Set(${DB(NP/${CALLERIDNUM})=YES}) exten ⇒ *11,4,Playback(nao-perturbe) exten ⇒*11,5,Playback(ativado) exten ⇒ *11,6,Hangup() exten ⇒ *13,1,Answer exten ⇒ *13,2,Wait(1) exten ⇒*13,3,DBdel(NP/${CALLERIDNUM}) exten ⇒ *13,4,Playback(nao-perturbe) exten ⇒*13,5,Playback(desativado) exten ⇒ *13,6,Hangup()

Recuperar, ou extrair, dados também é uma atividade trivial. Basta atribuir, também com a a aplicação Set,uma variável com o valor do par FAMILIA/CHAVE e utiliza-la no dialplan. Veja neste exemplo como utilizaruma entrada no AstDB.

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 8/13

Page 9: Apostila Asterisk

receber chamadas, ou melhor, se ele está ou não com o não perturbe habilitado.

No exemplo acima, a primeira linha da macro checagemramal recupera o par NP/RAMAL do AstDB e atribui ovalor do par à variável NP. A aplicação GotoIf é utilizada como fator de decisão para encaminhar a chamadaao correio de voz ou então, caso o não perturbe esta desabilitado, para a macro chamaramal com o númerode ramal como argumento.

4.4.3 Goto, GotoIf, GotoIfTime

4.4.4 Aplicação Macro

4.4.5 Aplicação VoiceMail – O famoso Correio de Voz

A aplicação Voicemail, como você pode concluir, é utilizada para acionar o sistema de Correio de Voz doAsterisk. Com esta aplicação é possível que você defina uma condição(ocupado ou indisponível) para quevocê envie a chamada para o sistema de Correio de Voz.

Por exemplo, imagine que você está no telefone ou não está em sua mesa e uma chamada chega ao seuramal. Este é o momemtno ideal para se utilizar a aplicação VoiceMail no seu plano de discagem.

A sintaxe para utilização da aplicaçcão VoiceMail é esta:

VoiceMail(opçõesramal@contexto) Na sintaxe acima o parametro opções esta colado ao parâmetro ramal. Éexatamente desta forma que devemos utilizar esta sintaxe.

Para enviar para várias caixas de correio ao mesmo tempo:

VoiceMail(opçõesramal01@contexto01&ramal02@contexto02) Estas são as opções disponíveis para aaplicação VoiceMail.

Opção Descrição s SEM esta opção uma mensagem irá ser tocada. A mensagem padrÃo do sistema é “Deixesua mensagem a pós o sinal, quando terminar desligue ou pressione quadrado. Se você usar esta opção estamensagem NÃO será tocada. u Se você utilizar esta opção uma mensagem de INDISPONÍVEL será tocada. Amensagem padrão, se o usuário não gravar a sua, é “A pessoa no ramal XXX não está disponível” e nasequência “Deixe sua mensagem após o sinal, quando terminar desligue ou pressione quadrado”. b Se vocêutilizar esta opção uma mensagem de OCUPADO será tocada. A mensagem padrão, se o usuário não gravar asua, é “A pessoa no ramal XXX não está disponível” e na sequência “Deixe sua mensagem após o sinal,quando terminar desligue ou pressione quadrado”. su Se você utilizar esta opção uma mensagem deINDISPONÍVEL será tocada. A mensagem padrão, se o usuário não gravar a sua, é “A pessoa no ramal XXXnão está disponível”. A mensagem com instruções será descartada. sb Se você utilizar esta opção umamensagem de OCUPADO será tocada. A mensagem padrão, se o usuário não gravar a sua, é “A pessoa noramal XXX não está disponível”. A mensagem com instruções será descartada. Veja o exemplo do plano dediscagem abaixo:

4.4.5.1 Armazenamento de mensagens

As mensagens do correio de voz ficam armazenadas no seguinte diretório:/var/spool/asterisk/voicemail/contexto/ramal/INBOX Onde contexto é o nome do contexto onde se encontraas informações do correio e ramal o prórpio ramal(usuário) em questão. 4.4.5.2 Configuração das caixas decorreio de voz

O sistema de correio de voz é configurado e armazena as caixas de correio no arquivo/etc/asterisk/voicemail.conf. Veja a sintaxe do /etc/asterisk/voicemail.conf abaixo: [general] parametro01 =valor01 parametro02 = valor02 ... [zonemessages] eastern=America/New_York|’vm-received’ Q ‘digits/at’ IMpcentral=America/Chicago|’vm-received’ Q ‘digits/at’ IMp central24=America/Chicago|’vm-received’ q‘digits/at’ H N ‘hours’ military=Zulu|’vm-received’ q ‘digits/at’ H N ‘hours’ ‘phonetic/z_p’ COLOCAR O PADRÃODO BRASIL [default] parametro01 = valor01 parametro02 = valor02 ... 9999 ⇒ 2006,RonaldinhoGaúcho,[email protected] 1111 ⇒1010,Dida,[email protected],,attach=no|serveremail=smtp.brasil.com.br|maxmsg=10 Debaixo do contexto[general] inserimos os parâmetros que serão válidos para todas as caixas de correio criada no sistema.Parâmetros específicos ficam abaixo dos contexto das caixas de correio, por exemplo [default]. Este é oformato para criar uma caixa de correio no Asterisk:número_ramal⇒senha_correio,nome_completo_usuario,email,email_pager,opcao1|opcao2|opcao3 Conheça asopções disponíveis para as caixas de correio do Asterisk: Parametro Argumentos Descrição formatwav49|gsm|wav Formatos para armazenamento dos arquivos de mensagens do correio de voz. Mais de umformato pode ser especificado utilizando o caractere ‘|’ .[15] serveremail email Email remetente dasnotificações do correio de voz enviadas aos usuários. attach Yes|no Anexar as mensagens no email denotificação. maxmsg nümero inteiro Número máximo de mensagens por caixa de correio. Valor default é 100.maxmessage tempo em segundos Tamanho máximo de uma mensagem em segundos. minmessage tempo emsegundos Tamanho mínimo, em segundos, de uma mensagem para ser armazenada pelo sistema. Default é 0.maxgreet tempo em segundos Tamanho máximo, em segundos, das mensagens de recepção(ocupado,indisponível e o nome do usuário). skipms tempo em milisegundos Tempo, em milisedgundos, para os saltos derew e ff no playback de mensagens. maxsilence tempo em segundos Tempo, em segundos, de silêncio paraque o sistemaa encerre a gravação de uma mensagem. 4.4.5.3 Notas importantes sobre a aplicaçãoVoiceMail()

O arquivo /etc/asterisk/voicemail.conf não aceita #include pois o Asterisk acessa esta arquivo para fazeralteração de senhas.

Não utiilize comentários(especialmente os que contenham o caractere “[“, pois a aplicação VoiceMailMain,que faz a autenticação do usuário, não é muito inteligente no parsing do arquivo/etc/asterisk/voicemail.conf.

As caixas de correio não podem começar com as letras ‘s’, ‘u’, ‘b’ ou uma combinação delas. Isso se deve asopções da aplicação VoiceMail().

Apartir do momento em que uma caixa de correio já está operando(contém mensagens). Não é possívelalterar os formatos de áudio. Isso irá ocasionar problemas no playback das mensagens do correio de voz.

4.4.5.4 Aplicações complementares ao Correio de Voz

VoiceMailMain()

Disponibiliza acesso ao sistema de Correio de Voz do Asterisk. É com esta aplicação que posssibilitamos oacesso as mensagens e informações pessoais dos usuários de um servidor Asterisk.

Acessando esta aplicação o usuário será servido com o seguinte menu:

Digite 1. Ler as mensagens do correio de voz Digite 2. Alterar de pasta

Digite 0. Pasta de mensagens novas Digite 1. Pasta de mensagens antigas Digite 2. Pasta de mensagens trabalho Digite 3. Pasta de mensagens familia Digite 4. Pasta de mensagens amigos Digite #. Cancela

Digite 3. Opções avançadas

Press 1. Send reply Press 3. Hear the message envelope Press 5. Leave a message Press *. Return to the main menu

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 9/13

Page 10: Apostila Asterisk

Press 2. Record your busy message Press 3. Record your name Press 4. Change your password Press *. Return to the main menu

Press *. Help Press #. Exit HasNewVoicemail()

HasVoicemail()

MailBoxExists()

We will use the GoToIf application to determine the dial status of the call. For the purpose we need also thevariable ${DIALSTATUS}. The first extension after the one with Dial application, will check whether thecalled person is available. If the person is unavailable, then the execution will continue with the extensionwith priority 7. This extension contains the VoiceMail application. In its brackets we have set the following:uanatoliy@testmail. The first letter - u means that a message for an unavailable condition has to be played.The message by default is: The person at extension is unavailable”. The word anatoliy is for the mailboxwhich we have set in the voicemail.conf. The last part is @testmail. This shows the context invoicemail.conf, in which the mailbox anatoliy is configured. So, the caller will hear a message and he/she willbe allowed to record a message and to store it in the mailbox of anatoliy. The message will be stored in thedirectory /var/spool/asterisk/voicemail/testmail/anatoliy/INBOX. In order to send the message in the mailbox,the caller has to hang up the line or to press the pound key(#), when he/she finishes with the recording ofthe message. If the GoToIf check show that the user is available, then the next application with priority 4will be executed. This one will check, whether the line is busy or not. If the line is busy, then the executionwill continue with the extension with priority 9. This extension contains again the VoiceMail application. In itsbrackets we have set the following: banatoliy@testmail. The first letter - b means that a message for busycondition has to be played. The message by default is: The person at extension is on the phone. The wordanatoliy is for the mailbox which we have set in the voicemail.conf. The last part is @testmail. This showsthe context in voicemail.conf, in which the mailbox anatoliy is configured. The caller will hear the message,that the called person is busy and he/she will be allowed to record a message and to store it in the mailboxof anatoliy. The message will be stored in the directory/var/spool/asterisk/voicemail/testmail/anatoliy/INBOX. In order to send the message in the mailbox, the callerhas to hang up the line or to press the pound key(#), when he/she finishes with the recording of themessage. Now, if the user is available and the line is free and the called person does not answer within 5seconds, the next executed extension will be the one with priority 5. This one contains another copy of theVoiceMail application. As arguments in its brackets we have set the following: anatoliy@testmail. There is nofirst letter which means that a message with instructions has to be played. The message by default is:Please leave your message after the tone. When done, hang up, or press the pound key. The word anatoliyis for the mailbox which we have set in the voicemail.conf. The last part is @testmail. This shows thecontext in voicemail.conf, in which the mailbox anatoliy is configured. Again the user will be allowed to recorda message after the signal. The message will be stored in the directory/var/spool/asterisk/voicemail/testmail/anatoliy/INBOX. In order to send the message in the mailbox, the callerhas to hang up the line or to press the pound key(#), when he/she finishes with the recording of themessage. NOTE: Please, pay attention that between the option flags and the voicemail number there is noseparator. That is why the voicemails cannot start with “s”, “u”, “b” or any combination of these threeletters. Maybe you have noticed that between the extensions with priority 5, 7 and 9, we have extensionswith the GoTo application. It cause the jumping to the last extension with priority 10 which has the Hangupapplication. Thanks to it the line will be hung up. This is necessary, because otherwise the three VoiceMailapplication will be executed subsequently. In this way the effect from the GoToIf applications will be lost.Aplicações complementares:

4.4.6 MeetMe

4.4.7 Queue

A aplicação Queue é utilizada para “enfileirar” chamadas. Este tipo de aplicação é geralmente(na verdadenão conheço outra aplicação para ela) utilizada em filas de atendimento de Call Centers Passivos[16]

Conhecida também como DAC(Distribuidor Automático de Chamadas) a aplicação Queue distribui chamadasentrantes, em ordem de chegada, para o primeiro agente[17] disponível. O sistema atende imediatamente aschamdas e, se necessário, envia o chamador para uma fila até que ele possa ser redirecionado ao próximoagente disponível. Balanceando as chamdas entre os agentes irá assegurar que todos os chamadores irãoreceber um bom atendimento.

O Asterisk suporta múltiplas filas de atendimentos e elas podem ser configuradas no arquivo/etc/asterisk/queues.conf e referenciadas como argumento da aplicação Queue no seu plano de discagem.Os agentes são definidos no arquivo /etc/asterisk/agents.conf.

Sintaxe da aplicação Queue()

Esta é a sintaxe para utilização da aplicação Queue:

exten ⇒ extensão,prioridade,Queue(nome|opções|URL_opcional|sobrepor_anuncio|timeout) nome: Fila criadano arquivo /etc/asterisk/queues.conf opções: ‘t’ — allow the called user transfer the calling user ‘T’ — toallow the calling user to transfer the call.

'd' — data-quality (modem) call (minimum delay). 'H' — permite ao chamador desligar pressionando '*'. 'n' — no retries on the timeout; will exit this application and go to the next step. 'r' — Ringar ao invés de tocar música em espera

URL_opcional: Envia uma URL para dispositivos que suportam este recurso. sobrepor_anuncio: Sobrepõe oanúncio

Configuração de filas de atendimento

O arquivo responsável pela configuração de filas de atendimento no Asterisk é o /etc/asterisk/queues.conf.Veja abaixo a sua sintaxe.

[general] parametro-geral01 = valor01 parametro-geral02 = valor02 ... parametro-geral03 = valor03 [fila01]parametro01 = valor01 parametro02 = valor02 ... parametro03 = valor03 member ⇒ Zap/1 member ⇒ Zap/2member ⇒ Agent/1001 member ⇒ Agent/1002 ;Cada membro(member) é listado em uma linha individual.[fila02] parametro01 = valor01 parametro02 = valor02 ... parametro03 = valor03 member ⇒ Agent/@1member ⇒ Agent/1:1,1 ; Usar grupos de agentes, como no exemplo da fila02, irá desabilitar as estratégiasde busca de agentes(roudrobin, leastrecent, etc.) Parâmetros de configuração de filas de atendimentoConheça os parâmetros disponíveis para filas de atendimento. Estes parâmetros podem ser especificadospara uma fila específica ou para todoas as filas do sistema, para isto basta inserir o parâmetro desejado nopcontexto [general] do seu arquivo de configuração.. Parâmetros valores Descrição periodic-announcearquivo_de_audio Mensagem periodica enviada enquanto o chamador aguarda atendimento periodic-announce-frequency número inteiro Tempo em segundo s de frequencia da mensagem periódica weightnúmero inteiro Número inteiro que define o peso da Fila. Números maiores terão maior prioridade deatendimento pelos agentes. monitor-format gsm|wav|wav49 Para gravar as chamdas que forem atendidas nafila. *Somente depois do atendimento* announce-frequency núemero inteiro Frequencia em segundos deanúncio ao chamadro sobre sua posição na fila e/ou o tempo médio de atendimento. Use o valor ‘0’ paradesabilitar esta função. announce-holdtime yes|no|once Devemos incluir o tempo médio de atendimento noanúncio de posições na fila? *Se o tempo for menor que 1 min. não irá anunciar* queue-youarenext queue-youarenext Arquivos de áudio para anúncios de posição na fila e/ou tempo de atendimento médio. Alteresomente se nÃo quiser utilizar os valores padrões. queue-thereare queue-thereare queue-callswaiting queue-

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 10/13

Page 11: Apostila Asterisk

tocada segundos amntes de o agente atender a chamda. Usado para diferenciar para o agente em que filaele está atendendo a chamada. strategy ringall|roundrobin|leastrecent|fewestcalls|random|rrmemoryEstratégia de distribuição de chamadas aos atendentes. Veja detalhes obre cada tipo ainda neste capítulo.Ringall é a default. servicelevel número inteiro Tempo em segundo do nível aceitável de serviço. Para gerarestatísticas de nível de serviço(SLA[18]). context contexto Contexto do plano de discagem que o chamadortem acesso enquanto aguarda atendimento. timeout número inteiro Tempo em segundos que consideramos aindisponibilidade de um agente. retry número inteiro Tempo em segundos para aguardar antes de tentaracessar todos os agentes novamente. maxlen número inteiro Número máximo de pessoas que podemaguardar na mesma fila. announce-round-seconds número inteiro Arredondamento dos segundos no anúnciodo tempo. monitor-join yes|no Para unir os dois áudios(IN e OUT) quando se está gravando umaconversação joinempty yes|no|strict yes(chamadores podem entrar em uma fila sem membros ou somentecom memebros indisponíveis)

no (chamadores não podem acessar filas sem membros)

strict(chamadores não podem acessar filas sem membros ou com membros indisponíveis) leavewhenemptyyes|no|strict Para eliminar chamadores que já estão na fila. Mesmas opções de joinempty. eventwhencalledyes|no Setado para yes irá gerar alguns eventos de gerência(AgentCalled, AgentDump, AgentConnect,AgentComplete) eventmemberstatusoff yes|no Setado para no irá gerar o seguinte evento degerência(QueueMemberStatus) reportholdtime yes|no Se você quiser reportar ao agente o tempo de esperado chamador antes de atende-lo. Uma fila é considerada vazia quando não possuir membros ou se nenhumde seus membros não estiverem disponíveis(agentes não logados).

Estratégias de ring de agentes em filas de atendimento

Ringall:

Estratégia padrão caso nada seja especificado.

Irá chamar todos os agentes ao mesmo tempo. Uma chamada entra e todos os agentes são acionados,porém quem atender antes irá “ganhar” a chamada.

Roundrobin:

A estratégia roundrobin nao pode ser confundida com a distribuição circular de chamadas, veja como estemétodo trabalha.

O roundrobin lembra o último agente para quem ele _iniciou_ o envio da última chamada e inicia as tentativassubsequentes apartir do próximo agente. Se você tiver três agentes, e a primeira chamada seguir a ordem1→2→3, a próxima chamada irá seguir a ordem 2→3→1, a próxima 3→2→1 e assim por diante.

É possível utilizar o método Roundrobin para realizar uma distribuição circular de chamadas atribuindopenalidades aos agentes. O Asterisk irá sempre iniciar a busca por agentes sem penalidades depois aosagentes com penalidade 1 e assim por diante.

Rrmemory:

Este método lembra da último agente que ele tentou _chamar_, independente por quem ele iniciou, enviandoa próxima chamada para o agente seguinte ao que atendeu a última chamada, Se você tiver três agente e aprimeira chamada seguir a rodem 1→2(e a chamada é atendida), então a próxima chamada irá seguir a ordem3→1(e é atendida), a próxima irá seguir a ordem 2→3→1, e asssim por diante.

Se a primeira chamada, 1→2, estivesse em modo Roundrobin e ela fosse atendida, a segunda chamada iriacomeçar pelo agente 2 novamente.

Fewestcalls:

Irá iniciar a busca pelos agentes que tem o menor número de chamadas atendidas.

Random:

Faz uma busca aleatória independente de uma regra específica.

Leastrecent:

Irá iniciar a busca pelo agente que foi chamado menos recentemente pela fila em questão.

Configuração de agentes

Assim em como a maioria dos arquivos de configuração do Asterisk, o /etc/asterisk/agents.conf possui umaseção geral([general]) e uma específica para agentes([agents]), como mostrado abaixo:

[general] parametro-geral01 = valor01 parametro-geral02 = valor02 ... parametro-geral03 = valor03 [agents]parametro01 = valor01 parametro02 = valor02 ... group=1 ; agent ⇒ agentid,agentpassword,name agent ⇒1001,4321,Silvio Santos agent ⇒ 1002,4321,Fausto Silve group=2 agent ⇒ 1003,4321,Didi Mocó agent ⇒1004,4321,João Cleber Parâmetros de configuração de agentes

Estes são os parâmetros disponíveis para os agentes de uma fila de atendimento. Somente um parâmetropode ser especificado no contexto [general].

Parâmetros valores Descrição persistentagents yes|no Único parâmterro disponível no contexto [general].Define se o login do agente ficará ou não armazenado no AstDB. Isso tem impacto após um reload doAsterisk. autologoff número inteiro Tempo em segundos para deslogar um agente da fila. Valor default é 15.ackall yes|no Se o agente logou usando a aplicação AgentCallbackLogin e esta opção estiver setada parayes, o Asterisk irá aguardar uma confirmação de login(tecla #) antes de disponibilizar este agente na fila.wrapuptime número inteiro Tempo em milisegundos que o agente irá ter de descanso antes de receber outrachamada. O default é 5000 ms. musiconhold nome da classe Define a nome da classe da música em esperapara tocar aos agentes. O valor padrão é a classe default. updatecdr yes|no Define se irá alterar o canal deorigem no CDR para o número do agente. Default é no. Se estiver setado para yes ele irá adicionar o nomedo agente no CDR e não o número do ramal em que ele se encontra. recordagentcalls yes|no Grava ou nãoas chamadas atendidas pelos agentes. recordformat wav|gsm|wav49 Formato do arquivo de áudio dasgravações de chamadas dos agentes. Padrão é wav. createlink yes|no Adiciona no userfield do CDR um linkpara acessar gravação da chamada. urlprefix http://server.ip/diretorio/ [http://server.ip/diretorio/] Adicionaum prefixo no link para o audio de uma chamada gravada. savecallsin /diretorio/de/gravacoes Diretorio paraaramazenar as gravações de chamdas dos agentes. Padrão é /var/spool/asterisk/monitor custom_beeparquivo de audio Com esta opção você pode especificar um beep diferente para os agentes conectados

Exemplo de arquivo /etc/asterisk/agents.conf

[general] persistentagents=yes [agents] autologoff=15 ackcall=no wrapuptime=5000 musiconhold ⇒ defaultrecordagentcalls=yes recordformat=gsm group=1 agent ⇒ 101,101,user1 agent ⇒ 102,102,user2 agent ⇒103,103,user3 group=2 agent ⇒ 8889,8889,operador 1 agent ⇒ 8888,8888,ivan group=3 agent ⇒8887,8887,operador 2 4.5 AGI 4.6 Operadores 4.6.1 Operadores Booleanos

4.6.2 Operadores Matemáticos

4.7 Exemplos completos de dialplan 5 Gerenciando o Asterisk 5.1 Gerenciamento de ramais sip show peers

zap show channels

5.2 Gerenciamento de troncos sip show users

zap show channels

show channels verbose

5.3 CDR Call detail record.

5.4 Troubleshooting 5.4.1 Logging

/etc/asterisk/logger.conf

/var/spool/asterisk/debug

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 11/13

Page 12: Apostila Asterisk

MG2

aggressive Supression

5.4.3 Picotamento

Banda de rede

Latência

5.4.4 Delay

Jitter

5.4.5 Códigos SIP

Retirado da RFC do SIP:

Os códigos de resposta SIP são similares e extensíveis aos códigos de resposta HTTP/1.1. Nem todos oscódigos.são apropriados, e somente aqueles que são apropriados são mostrados nesta seção deste material.

Outros códigos HTTP/1.1 não devem ser usados.

O SIP também define uma nova classe de códigos, 6xx.

1xx: Provisional — request received, continuing to process the request;

Provisional responses, also known as informational responses, indicate that the server contacted isperforming some further action and does not yet have a definitive response. A server sends a 1xx response ifit expects to take more than 200 ms to obtain a final response. Note that 1xx responses are not transmittedreliably. They never cause the client to send an ACK. Provisional (1xx) responses MAY contain messagebodies, including session descriptions.

2xx: Success — the action was successfully received, understood, and accepted;

3xx: Redirection — further action needs to be taken in order to complete the request;

4xx: Client Error — the request contains bad syntax or cannot be fulfilled at this server;

5xx: Server Error — the server failed to fulfill an apparently valid request;

6xx: Global Failure — the request cannot be fulfilled at any server.

SIP response codes, class 1: Provisional messages

These are sent within a SIP dialogue

100 Trying

180 Ringing

181 Call Is Being Forwarded

182 Queued

183 Session Progress

SIP Response codes: 2xx class

The 2xx class of responses indicates a success

200 OK

202 accepted: Used for referrals

SIP response codes, class 3xx

The 3xx class of responses indicates a redirection of the call

300 Multiple Choices

301 Moved Permanently

302 Moved Temporarily

305 Use Proxy

380 Alternative Service

SIP responses, class 4: Request failures

400 Bad Request

401 Unauthorized: Used only by registrars. Proxys should use proxy authorization 407

402 Payment Required (Reserved for future use)

403 Forbidden

404 Not Found: User not found

405 Method Not Allowed

406 Not Acceptable

407 Proxy Authentication Required

408 Request Timeout: Couldn’t find the user in time

410 Gone: The user existed once, but is not available here any more.

413 Request Entity Too Large

414 Request-URI Too Long

415 Unsupported Media Type

416 Unsupported URI Scheme

420 Bad Extension: Bad SIP Protocol Extension used, not understood by the server

421 Extension Required

423 Interval Too Brief

480 Temporarily Unavailable

481 Call/Transaction Does Not Exist

482 Loop Detected

483 Too Many Hops

484 Address Incomplete

485 Ambiguous

486 Busy Here

487 Request Terminated

488 Not Acceptable Here

491 Request Pending

493 Undecipherable: Could not decrypt S/MIME body part

SIP responses, class 5: Server failures

500 Server Internal Error

501 Not Implemented: The SIP request method is not implemented here

502 Bad Gateway

503 Service Unavailable

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 12/13

Page 13: Apostila Asterisk

600 Busy Everywhere

603 Decline

604 Does Not Exist Anywhere

606 Not Acceptable

5.5 Backup O que copiar...

5.6 Tunning

5.7 Segurança

5.8 Sistemas distribuídos e alta disponibilidade 6 Dicas e Truques I. Índice com todas as aplicaçõesdisponíveis na série 1.4 do Asterisk II. Índice com todas as variáveis internas do Asterisk III. Siglas eDicionário

[1] Agência Nacional de Telecomunicações - http://www.anatel.gov.br [http://www.anatel.gov.br] [2]Internet Protocol – O protocolo da Internet. [3] ARPANET – DEFINICAO [4] Uma lista completa de CODECsutilizados pelos Asterisk , você encontra no capítulo 2 deste livro. [5] Lista de desenvolvedores do Asterisk -htttp://lists.digium.com.br/asterisk-devel [6] Linux Standard Base – http://www.lsb.org [http://www.lsb.org][7] Asterisk Gateway Interface - Você pode encontrar mais detalhes sobre o que é AGI no capítulo destelivro. [8] Saiba mais sobre o logger.conf no capítulo 6 deste livro. [9] Tipos de mídia podem ser encontradosneste link: http://www.iana.org/assignments/media-types/ [http://www.iana.org/assignments/media-types/][10] Unicall – Mais informações sobre este tipo de canal você encontra em http://www.soft-switch.org/unicall [http://www.soft-switch.org/unicall] [11] Public Switched Telephony Network [12]http://www.zapatatelephony.org [http://www.zapatatelephony.org] [13] Veja mais sobre transcoding nocapítulo 5 deste livro(Gerenciando o Asterisk) [14] Lembre-se, o arquivo /etc/zaptel.conf não faz parte doprojeto Asterisk e sim do projeto Zapata Telephony – http://www.zapatatelephony.org[http://www.zapatatelephony.org] [15] Apartir do momento em que uma caixa de correio já estáoperando(contém mensagens). Não é possível alterar os formatos de áudio. Isso irá ocasionar problemas noplayback das mensagens do correio de voz. [16] Call Center Passivo é aquele que somente recebe chamdas.,não origina(Call Center Ativo) [17] Agentes também são conhecidos como PAs, ou Postos de Atendimento.[18] Service Level Agreement

apos tila_as terisk.txt (1294 views) · Modificado em: 29/04/2010 22:48 por denis

12/9/2010 AsteriskBrasil.org - A comunidade bras…

www.asteriskbrasil.org/index.php?opti… 13/13