Escolar Documentos
Profissional Documentos
Cultura Documentos
A Telefonia Hoje!
[2]
Asterisk InProprietário, A Telefonia Hoje! 2014
Asterisk InProprietário – A telefonia Hoje! É um trabalho para auxiliar os
profissionais da área de TI que estão iniciando em “ToIP & VoIP”. Este
material é a reunião de várias informações disponibilizadas pela Internet,
artigos e livros.
Minha intenção não é plagiar, mas sim oferecer um material onde você
possa estudar de maneira simples e eficiente.
Bom estudo!
Professor Angelo B. Delphini.
[3]
Asterisk InProprietário, A Telefonia Hoje! 2014
[4]
Integração das Ferramentas ..................................................................................................................................... 84
Instalando repositorios no CentOS ......................................................................................................................... 95
Mão à Obra – Hands On Quatro .............................................................................................................................. 95
Apresentação do Asterisk........................................................................................................................................... 97
História do Asterisk ...................................................................................................................................................... 97
Arquitetura do Asterisk ............................................................................................................................................... 99
O Asterisk e sua Flexibilidade ................................................................................................................................... 99
As APIs............................................................................................................................................................................. 99
O núcleo do Sistema ................................................................................................................................................ 101
Check List Atualização do Kernel .......................................................................................................................... 101
Mão à Obra – Hands On Cinco .............................................................................................................................. 101
Configurando CDR com MysQL ............................................................................................................................. 109
Mão à Obra – Hands On Seis................................................................................................................................. 109
Instalando DAHDI, LIBPRI, LAME e Asterisk .................................................................................................... 119
Mão à Obra – Hands On Sete ................................................................................................................................ 119
Conhecendo o Asterisk ............................................................................................................................................ 123
Estrutura de Pastas................................................................................................................................................... 123
Iniciando o Asterisk .................................................................................................................................................. 125
Mão à Obra – Hands On Oito ................................................................................................................................ 125
Backup dos Ficheiros do Asterisk ......................................................................................................................... 126
Mão à Obra – Hands On Nove .............................................................................................................................. 126
Asterisk Overview ...................................................................................................................................................... 129
Nosso Cenário............................................................................................................................................................. 129
PBX IP Tradicional ..................................................................................................................................................... 131
PBX IP 100% VoIP .................................................................................................................................................... 131
PBX IP HIBRIDO VoIP & PSTN .............................................................................................................................. 132
Gateway VoIP ............................................................................................................................................................. 133
Servidor de Funcionalidades .................................................................................................................................. 134
Resumo de Atendendo o Asterisk ........................................................................................................................ 134
Configurações Básicas ............................................................................................................................................. 135
O Protocolo SIP .......................................................................................................................................................... 135
Configurar Extensões Telefonicas com o SIP.CONF ....................................................................................... 139
Mão à Obra – Hands On Dez ................................................................................................................................. 139
Configurar Extensões Telefonicas com o IAX.CONF ....................................................................................... 160
Mão à Obra – Hands On Onze .............................................................................................................................. 160
O Dial Plan ................................................................................................................................................................... 165
A Sintaxe ...................................................................................................................................................................... 165
Criando o Dial Plan EXTENSIONS.CONF............................................................................................................. 168
Mão à Obra – Hands On Donze ............................................................................................................................ 168
Entendendo Melhor o Dial Plan EXTENSIONS.CONF ...................................................................................... 171
Configurações de IVRs............................................................................................................................................. 183
Criando Facilidades ................................................................................................................................................... 184
Mão à Obra – Hands On Treze.............................................................................................................................. 184
Criando Variaveis Globais........................................................................................................................................ 187
Mão à Obra – Hands On Quatorze ....................................................................................................................... 187
Entendendo Melhor o IVR....................................................................................................................................... 197
Espaço para dedicatória.
Asterisk InProprietário, A Telefonia Hoje! 2014
Conceitos de Telefonia
História da Telefonia
A invenção do telefone é popularmente atribuída ao escocês Alexander Graham Bell em
1876 por ter ele sido o primeiro a patentear o invento que iria revolucionar a forma com
que as pessoas se comunicam. No entanto Bell só conseguiu manter a glória de ter sido o
pai do telefone porque o verdadeiro inventor não teve condições financeiras de renovar a
patente. Até hoje esse fato não é de conhecimento de todos, mas o primeiro a conseguir
estabelecer uma comunicação de voz entre dois equipamentos elétricos foi o italiano
António Meucci entre 1854 e 1855.
Meucci migrou da Itália para Cuba devido às perseguições que sofria por conta de suas
ideias liberais. Observando o comportamento da voz humana, concluiu que a mesma
poderia ser transmitida através de circuitos elétricos e entre 1854 e 1855 desenvolveu um
“telégrafo sonoro” – como ele mesmo chamava – que comunicava o quarto de sua esposa
doente com o seu laboratório. A figura 1.1 mostra o projeto desenvolvido pelo italiano.
Esse invento foi publicado em 1861 por um jornal nova-iorquino mantido por italianos e em
1871 (aproximadamente cinco anos antes de Bell) foi solicitada a patente de um
“Teletrofone”. Como o pedido não foi renovado até 1874 devido aos custos envolvidos,
Graham Bell teve o caminho livre para conseguir registrar o seu protótipo.
Assim, a patente foi mantida devido à morte de Meucci em 1889 e por conta de outros
tropeços burocráticos até que em 2002 o Congresso Americano o reconheceu como
verdadeiro inventor do telefone.
No entanto, Graham Bell, teve seus méritos com esse projeto, pois foi ele quem conseguiu
aperfeiçoar e trazer notoriedade ao invento. Juntamente com outros pesquisadores a rede
de telefonia começou a se difundir e em Portugal as primeiras experiências de telefone
[8]
Asterisk InProprietário, A Telefonia Hoje! 2014
iniciaram-se em 24 de Novembro de 1877, ligando Carcavelos à Central do Cabo em
Lisboa. A primeira rede telefónica pública foi inaugurada em Lisboa a 26 de Abril de 1882
pela Edison Gower Bell Telephone Company of Europe Ltd que tinha a concessão atribuída
desde 13 de Janeiro de 1882. A concessão foi transferida para a The Anglo Portuguese
Telephone Company (APT) em 1887 que a manteve até 1968.
Nessa época eram necessários pontos centralizados que fizessem a comutação manual
entre a origem e o destino: eram os primeiros PBXs (Private Branch Exchange), a figura 1.2
mostra como era uma central telefónica nesta época.
[9]
Asterisk InProprietário, A Telefonia Hoje! 2014
incorporados às centrais telefónicas com o avanço da tecnologia. A figura 1.3 mostra uma
central PABX.
Telefonia Analogica
A telefonia analógica se baseia no simples princípio onde temos uma fonte de tensão e a
ponta que a recebe.
A corrente gerada pela porta FXS para fazer com que o telefone toque é de 90 volts, o
suficiente para alimentar os componentes eletrónicos de um telefone analógico simples
para que faça vibrar o dispositivo de emissão sonora. Vale lembrar que ao trabalhar com
uma linha “viva” é necessário tomar os devidos cuidados.
[ 10 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Logo FXS e FXO são as portas usadas por linhas de telefonia analógica (também
conhecidas por POTS – Sistema de Telefonia Tradicional).
FXO - Foreign eXchange Office. É a interface que recebe a linha analógica. É o plug no
telefone ou aparelho de fax, ou o(s) plug(s) no seu sistema de telefonia analógica. Indica
se o telefone está no gancho/fora do gancho (circuito fechado). Como a porta FXO está
ligada a um dispositivo, tal como fax ou telefone, esse dispositivo é normalmente chamado
de ‘dispositivo FXO’.
FXO e FXS estão sempre em pares, de modo semelhante a um plug macho / fêmea.
Sem um PBX, um telefone fica conectado diretamente à porta FXS fornecida por uma
companhia telefónica.
Se você tiver um PBX, as linhas fornecidas pela companhia telefónica estarão conectadas a
um PBX, assim como os telefones. Portanto, o PBX deve ter tanto as portas FXO (para
conectar com as portas FXS fornecidas pelas companhias telefónicas) quanto portas FXS
(para conectar os aparelhos de telefone e fax).
[ 11 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
FXS & FXO & VoIP
Você vai se deparar com os termos FXS e FXO quando decidir comprar equipamentos que
permitam a conexão de linhas analógicas ao sistema de telefonia VoIP, telefones
analógicos ao sistema de telefonia VoIP ou PBXs tradicionais ao provedor de serviços VoIP,
ou um à outra via Internet.
O Gateway FXO
Para conectar linhas telefónicas analógicas a um IP PBX, você precisa de um Gateway FXO.
Isso permite que você conecte a porta FXS à porta do Gateway, o que transforma uma
linha telefónica analógica em uma ligação VoIP.
O Gateway FXS
O Gateway FXS é usado para conectar uma ou mais linhas de um PBX convencional a um
sistema de telefonia VoIP ou a um provedor. É preciso um Gateway FXS para conectar as
portas FXO (que normalmente estão conectadas à companhia telefónica) à Internet ou a
um sistema VoIP.
[ 12 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Adaptador FXS ATA ou adaptador ATA
Conexão
Procedimentos FXS/ FXO – funcionamento técnico
Se quiser saber mais detalhes técnicos sobre o funcionamento das portas FXS/ FXO, esta é
a sequência exata:
Ligação interna
1. A porta FXS recebe a ligação, e então envia um impulso tônico (som) ao
dispositivo FXO anexado.
2. O telefone toca.
3. Assim que alguém atende, pode responder a chamada.
Finalizando uma ligação – normalmente a porta FXS conta com qualquer dispositivo FXO
conectado para finalizar a ligação.
Fonte: www.3cx.com
[ 13 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Frequencia da Voz
A maior parte da voz é transmitida entre 250 e 3000Hz e ainda conseguimos capturar
vibrações no ar na faixa de 20 a 20000Hz. Para que haja uma qualidade o mais perto
possível do real e sem causar uma sobrecarga no sistema a faixa escolhida para
transmissão é de 300 a 3500Hz, o que traz uma perda de qualidade quando é tocada uma
música, por exemplo, utilizando esse meio ou quando as nuances da voz atingem
frequências muito altas ou baixas.
DTMF
Atualmente a maioria dos sistemas de telefonia trabalha com a marcação por tom enviando
DTMF (Dual-Tone Multi Frequency), isso significa que são combinadas duas frequências
cada vez que um dos dígitos do teclado do telefone pressionado, após um determinado
tempo sem receber as frequências o PABX irá interpretar que a marcação chegou ao final e
irá tentar encontrar uma rota para o destino. Veja na figura 1.9 os dígitos e as frequências
que os formam.
A maioria dos telefones não explora a última coluna, no entanto o protocolo elétrico
definido entre as pontas define esses dígitos para funções internas de controlo das
chamadas.
[ 14 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Telefonia Digital
Como na comunicação em canais analógicos é possível estabelecer somente uma chamada
por vez para cada par de fios metálicos, a malha telefónica tendia ao colapso, pois não
haveria mais infraestrutura suficiente para manter todos conectados. Imagine quantos
pares deveriam ser ligados entre os pontos de presença de uma companhia telefónica, por
exemplo, para que não gerasse lentidão no sistema e viabilizasse a comunicação entre
duas cidades. Observe a figura 1.10.
Para resolver essa e outras limitações da telefonia analógica, surgiu um novo conceito de
telefonia que é amplamente utilizado hoje: a telefonia digital. Nesse novo modelo, a
comunicação é estabelecida através de pacotes contendo as informações do áudio que são
lidos e reproduzidos na outra ponta, ou seja, deixa-se de transmitir a onda sonora para
transportar apenas suas informações que são reconstruídas sem qualquer perda de sua
natureza no destino. Veremos mais adiante em CODECs como ocorre o processo de
amostragem e digitalização do áudio.
Os links sobre os quais trafegam os pacotes de telefonia digital mais utilizados atualmente
são:
E1: link de 2Mbps dividido em 32 canais de 64Kbps. Desses, 30 são destinados à voz, 1 a
fechamento de loop para controlo do link e 1 para sinalização. É o tipo de canal digital mais
utilizado no mundo, exceto nos EUA e Japão.
T1: link de 1.544Mbps dividido em 24 canais de 64Kbps onde todos são utilizados para voz,
os 0,008Mbps restantes são utilizados para enquadramento de bits. São encontrados
somente nos EUA e Japão (no Japão o padrão é chamado de J1 que é muito semelhante ao
T1).
[ 15 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
T2, T3, T4: são múltiplos T1s. Onde o T2 é um conjunto de 4 T1s, T3 de 7 T2s e T4 de 6
T3s.
Para cada chamada se estabelece um canal de 64Kbps para transportar voz, bastando um
protocolo para informar os dados essenciais da chamada como origem, destino, início e
fim. Os protocolos hoje encontrados são:
MFC/R2: esse protocolo utiliza a sinalização CAS (Channel Associated Signalling –
Sinalização de Canal Associado), isso quer dizer que a voz e a sinalização da chamada são
trafegadas pelo mesmo canal.
É um protocolo mais antigo que seu concorrente ISDN, usado hoje somente no Brasil,
devido seu parque de telefonia ser antigo.
[ 16 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Nota-se, até a comunicação se estabelecer efetivamente com o atendimento, são enviadas
uma série de dígitos e confirmações. Dependendo das características físicas do meio e da
capacidade de processamento dos sinais nas duas pontas, a demora para conseguir um
status da chamada (tom de chamando ou ocupado) pode variar, mas sempre será uma
conexão um tanto morosa.
ISDN: nesse protocolo é utilizado a sinalização CCS (Common Channel Signaling
– Sinalização de Canal Comum), ou seja, toda a sinalização é enviada por um único
canal – o canal 16 – restando os demais canais para trafegar apenas a voz.
[ 17 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O VoIP
Como já é de conhecimento geral, VoIP vem
da sigla em inglês Voice over Internet
Protocol, em português: Voz sobre o Protocolo
de Internet (IP), ou seja, estabelecer uma
chamada de voz entre dois pontos utilizando
como meio a rede de dados.
Um dos mais famosos recursos nas comunicações de voz “domésticas” foi o Skype.
Trazendo uma qualidade bastante interessante e sem ter gastos com contas nacionais e
internacionais altíssimas é possível com um headset e uma conexão de Internet
relativamente simples, falar com uma pessoa que esteja conectada à rede em qualquer
lugar do mundo sem pagar nada a mais por isso. Ou ainda, comprar créditos a um valor
mais acessível que o minuto de uma chamada delonga distancia praticado por uma
operadora convencional para falar praticamente com qualquer lugar do mundo. Surgiram,
inclusive, soluções para integração de PBXs IP com o Skype e que fizesse o uso desses
benefícios. Infelizmente com a aquisição da Skype pela Microsoft este projeto foi
descontinuado.
[ 18 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
SIP
O protocolo SIP (Session Initiation Protocol – Protocolo de Inicialização de Sessão) foi
desenvolvido pelo IETF (sigla em inglês de Internet Engineering Task Force) é uma
comunidade internacional ampla e aberta (técnicos, agências, fabricantes, fornecedores,
pesquisadores) preocupada com a evolução da arquitetura da Internet e seu perfeito
funcionamento. A IETF tem como missão identificar e propor soluções a
questões/problemas relacionados à utilização da Internet, além de propor padronização das
tecnologias e protocolos envolvidos. As recomendações da IETF são usualmente publicadas
em documentos denominados RFCs (Request for Comments), sendo que a própria IETF
é descrita pela RFC 3160. O protocolo SIP na data de publicação deste livro se encontrava
na sua segunda versão que está definida na RFC 3261 publicada no ano de 2002. Esse
protocolo encaixa-se na camada de aplicação do modelo de referência OSI e é responsável
por estabelecer, alterar e finalizar sessões multimídia, entre elas, as chamadas VoIP.
Como o próprio nome indica, o protocolo SIP não transporta qualquer tipo de média em
seus pacotes. Ele é responsável apenas pelo gerenciamento da sessão. Para chamadas de
voz é utilizado o SDP (Session Description Protocol) para informar os dados da média
entre as pontas e o RTP (Realtime Transport Protocol) para efetivamente trafegar o
áudio. Normalmente quando se fala em SIP em um ambiente VoIP subentende-se o
conjunto [VoIP={SIP+SDP+RTP}], porque um não faz sentido sem o outro nesse
contexto.
Em sua estrutura, o protocolo SIP se parece com o protocolo http, sendo também um
protocolo baseado em texto e funcional como cliente/servidor, ou seja, implementa
métodos de requisição e resposta na comunicação. Em SIP o cliente é chamado de UAC
(User Agent Client) e o servidor de UAS (User Agent Server).
[ 19 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
No modo Proxy toda a sinalização SIP é gerenciada pelo servidor e a média passa
diretamente entre as pontas sem qualquer intervenção do SIP Proxy. Servidores desse tipo
geralmente são utilizados em operadoras VoIP por conseguirem realizar a gestão de uma
gama de números maior de chamadas e utilizadores. No entanto não têm qualquer recurso
de um PABX que trabalhe com áudio como: música em espera, IVR ou Voice-mail; caso
seja necessário utilizar este tipo de recurso é necessário que este seja integrado a um PBX
IP, como o Asterisk, por exemplo.
Atualmente existe no mercado alguns aplicativos Open Source bastante utilizados como SIP
Server, entre eles os mais famosos são as duas vertentes do descontinuado aplicativo
OpenSER: Kamailio e OpenSIPS: dois softwares bastante robustos e flexíveis dentro do seu
nicho de mercado.
Outra forma de utilizar o protocolo é com um servidor SIP Redirect. Este servidor armazena
informações sobre a localização dos clientes e encaminha tais dados para a própria origem
entre em contato diretamente com o destino. Geralmente este recurso é utilizado quando o
destino que se deseja alcançar está em um domínio diferente do da origem, servindo como
um servidor de localização.
[ 20 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
B2BUA
O modo que é utilizado pelos PBXs IP (inclusive o Asterisk) e mais popular é o B2BUA
(Back-to-Back User Agent). Ou seja, o servidor irá concentrar o gerenciamento da
sinalização e da média criando assim, dois canais de comunicação para cada chamada
estabelecida: uma da origem até o servidor e outra do servidor ao destino. Veja o exemplo
na figura 1.13.
[ 21 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Uma das maiores dificuldades ao trabalharmos com SIP é em relação à travessia de NAT.
Como é utilizada uma porta para sinalização (5060 UDP) e uma faixa para o RTP
transportar a média (por padrão do Asterisk de 10000 a 20000 UDP), muitas portas têm de
ser abertas no firewall, o que pode ser uma falha na segurança, e algumas personalizações
devem ser feitas nas configurações exclusivamente para tentar evitar problemas como
ligações mudas e outros problemas que acontecem em cenários desse tipo.
[ 22 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
H.323
O H.323 é um dos protocolos mais maduros, robustos e utilizados nos equipamentos que
utilizam VoIP por ser um dos mais antigos e desenvolvido especificamente com a finalidade
de comunicações multimédias. Ele é o protocolo padrão utilizado em Gateways de Voz
sobre IP das marcas Cisco, Polycom e Siemens, por exemplo, além de estar presente na
maioria das centrais telefónicas que possibilitam o uso de VoIP, porém vem sendo
substituído pelo SIP devido à flexibilidade deste.
O H.323 trabalha na camada 2 do modelo OSI e por isso é totalmente independente dos
assuntos relacionados à rede. Esse ponto pode ser visto como um ponto positivo ou
negativo dependendo do ambiente que se tem.
Hoje em dia o uso mais comum do protocolo H.323 está relacionado com videoconferência,
onde o seu desempenho ainda é muito bom.
IAX
O IAX (Inter Asterisk eXchange Protocol) é um dos mais novos protocolos utilizados
em VoIP. Foi desenvolvido pela Digium, empresa desenvolvedora do Asterisk, com o
objetivo de estabelecer a comunicação entre dois servidores também Asterisk. Por esse
motivo esse protocolo tem seu uso restrito a plataformas que têm como base o Asterisk.
Em consequência, existem poucos aplicativos e equipamentos que têm esse protocolo
nativo, pois a maioria das empresas ainda não considera que seja comercialmente
interessante desenvolver produtos para uma utilização tão específica.
Pode-se dizer que o IAX foi desenvolvido pensando em superar algumas dificuldades que
existiam no entroncamento entre dois servidores utilizando o SIP, principalmente na
travessia de NAT e consumo de banda. Atualmente o IAX encontra-se na versão 2 e
recebeu sua definição na RFC 5456.
A facilidade do IAX em atravessar NAT está no facto de que este trabalha somente com
uma porta (4569 UDP) para transporte de toda sinalização e média das chamadas.
Portanto muito menos configurações e considerações nas resoluções de problemas são
necessárias.
Diferentemente do SIP o IAX não é um protocolo em modo texto, portanto seus pacotes
não podem ser capturados, abertos e lidos por analisadores de protocolos, como o
Wireshark por exemplo. Objetivo principal de ser desenvolvido dessa maneira é para
formar pacotes menores e ser menos custoso para a rede.
[ 23 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Além de economizar banda, os ativos de rede conseguem trabalhar com mais facilidade já
que chegam menos requisições redundantes para serem gerenciadas.
Por exemplo: analisando um sentindo de cada chamada utilizando o CODEC G.711u (ulaw)
e o protocolo IAX sem o modo trunk há um consumo de 82.1Kbps, sendo
aproximadamente 65.9Kbps de áudio e 16Kbps de overhead. Se forem submetidas duas
chamadas simultâneas, tem-se 82.1+82.1Kbps ou um consumo de aproximadamente
164Kbps para esse sentido. Operando no modo trunk o cenário seria diferente pois para
uma chamada o consumo de banda ficaria praticamente o mesmo: 82.1Kbps; porém a
cada chamada adicional é acrescentado somente os 65.9Kbps de média, resultando em
82.1+65.9Kbps para duas chamadas simultâneas, ou seja, cerca de 148Kbps.
Outra vantagem do IAX sobre o SIP é o jitter buffer. O jitter buffer tem objetivo de agrupar
uma sequência de pacotes para encaminhá-los com uma variação menor de atraso do que
foram recebidos. Com isso a comunicação vai soar mais natural do que se esse tratamento
não fosse feito. Nas versões mais novas do Asterisk já existe um jitter buffer para o SIP
também, porém ele ainda não é tão maduro e eficiente como o disponível no IAX.
O número de amostras que o CODEC irá retirar do áudio contínuo é chamado de taxa de
amostragem. Essa taxa influencia diretamente na qualidade do áudio e no tamanho do
pacote gerado. Segundo o Teorema de Nyquist:
“…a frequência de amostragem de um sinal analógico para que esse possa ser
reconstruído com o mínimo de perda de informação deve ser igual ou maior a duas
vezes a maior frequência do espectro desse sinal…”;
Como as linhas telefónicas não conseguem transmitir mais que 4000Hz, a taxa de
amostragem para esse meio será de 8000 amostras por segundo.
Os CODECs fazem uso de técnicas de compressão, diferem quanto ao número de bits para
representar as amostras e trabalham somente na região que o ouvido humano percebe as
nuances da voz com maior precisão, dessa forma, dados menos percetíveis para o
entendimento geral da conversa são menos amostrados e há maior economia da banda.
O CODEC padrão da telefonia analógica é o G.711, que é subdividido em duas leis: lei a (a-
law) e lei µ (µ-law). Elas diferem somente na forma como as amostragens são tiradas,
porém ambas usam 8bits por amostra a uma frequência de 8000 amostras por segundo o
[ 24 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
que dá um uso de banda de 64Kbps para cada chamada utilizando esse CODEC. Em
Portugal, especificamente, é adotada a lei a, porém em outros países, como os EUA, é
usada µ. Falaremos mais adiante sobre a importância dessa informação.
A figura 1.15 apresenta um quadro com o comparativo do consumo de banda (BW) entre
os CODECs.
Figura 1.15: Tabela de largura de banda (BW) real para alguns CODECs (usando Ethernet)
Como o G.711 não faz qualquer compressão de voz, o processamento que ele necessita é
muito pequeno e a qualidade do áudio é muito boa, no entanto o pacote gerado é grande.
Os CODECs que têm uma taxa de amostragem alta e fazem mais compressão desses dados
exigem mais processamento (como no GSM e G729). Os que fazem pouca compressão,
utilizam pouco processamento e geram pacotes pequenos têm uma taxa de amostragem
menor e a qualidade do áudio acaba ficando comprometida (como no iLBC e LPC10).
[ 25 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Atendendo o Asterisk
Outro desafio que se enfrenta ao se implementar uma solução VoIP é que estamos sempre
concorrendo com um sistema muito maduro e geralmente estável de telefonia
convencional. Portanto instalar um sistema novo deverá apresentar bons resultados para
evitar comparações e reclamações to tipo “o VoIP nunca funciona”, “quando utilizávamos o
outro sistema era melhor” ou reclamações de qualidade da voz que minam o projeto, a
imagem da tecnologia e do profissional que está à frente da solução.
Para tentar evitar esse tipo de problema, trazer qualidade e valor ao projeto é necessário
que alguns cuidados sejam tomados já no princípio.
Dimensionamento do Hardware
Fazer um levantamento do hardware ideal para o ambiente que será implantado é um dos
principais pilares para evitar complicações durante a utilização do serviço.
Recomenda-se que seja utilizada uma máquina com arquitetura projetada para servidores e
de uma marca ou com componentes que você confie para garantir um uptime alto de
hardware. Os principais pontos suscetíveis a falhas em computadores são a fonte de
energia e o disco rígido; portanto, devido a criticidade do serviço de telefonia é sempre
importante pensar em redundância pelo menos para esses dois componentes, utilizando
fontes de energia redundantes e RAID de discos.
[ 26 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
média, assim como qual será o período que os ficheiros de áudio ficarão armazenados em
disco antes de serem movidos para outro local ou eliminados.
Sempre que for utilizado Hardware conectado aos slots PCI é exigida uma observação da
velocidade do barramento e no controlo de compartilhamento dos IRQs. Perdas de
desempenho pelas placas podem acarretar picotes, eco e outros problemas envolvendo a
qualidade do áudio e sinalização das chamadas. Deve-se prestar atenção também quanto
ao consumo de processamento para cancelamento de eco exigido pela placa que será
utilizada, algumas utilizam o processador do servidor e outras têm seus próprios DSPs para
realizar os processos.
[ 27 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
retransmissão). Esse fato é diretamente percebido pelo utilizador como voz metalizada ou
picotes, diferentemente de quando esse problema ocorre com outros serviços como acesso
à Internet ou emails.
Para garantir que não ocorra concorrência entre os dispositivos IP como Gateways de
telefonia, telefones IP, ATAs e os demais serviços que estão trafegando no meio, é
recomendável que sejam separadas VLANs para esses equipamentos.
Desde o cabeamento até os ativos de rede e políticas de acesso devem sofrer revisões
quando estiver em etapa de dimensionamento da estrutura. Nessa etapa o tamanho dos
pacotes gerados por cada CODEC deve ser analisado para ver o que é compatível com o
que está disponível. Lembrando que cada chamada tem dois canais, ou seja, se utilizar o
CODEC G.711, por exemplo, que utiliza 64Kbps teremos para cada chamada pelo menos
128Kbps somente para a passagem de áudio sem considerar os cabeçalhos.
Para ter maior controlo e segurança quando os serviços estiverem sendo executados o é
importante que o sistema de ficheiros (File System) esteja particionado de acordo com o
sistema que você irá montar.
Com um bom particionamento, caso ocorra algum erro em uma das partições fica mais fácil
recuperar os dados que estão armazenados em outras delas, isolando a falha para causar o
menor dano possível em seu PBX IP.
[ 28 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Outro benefício é o controlo do volume dos dados que serão gravados em cada uma das
partições. Ou seja, você sabe exatamente quanto pode gravar em cada divisão sem
atrapalhar o que é escrito em outra. No entanto é necessário que seja feita uma boa
administração das partições para que não ocorram paradas por que o sistema não está
conseguindo gravar dados necessários por não haver mais espaço disponível.
Para o Asterisk, é recomendável separar uma fatia do disco para as configurações, ou seja,
para a pasta “/etc”. Essa fatia não precisa ser mito grande, pois apesar de existirem vários
ficheiros nela, em média, não são grandes ficheiros em se tratando do tamanho dos
kilobytes, uma vez que se tratam basicamente de textos. Outra fatia deve ser reservada
aos módulos “/usr”. Para evitar a disseminação de erros que surgirem no núcleo do seu
sistema, essa fatia deve ser ampla o suficiente para armazenar todos os módulos com certa
flexibilidade para serem instalados mais tarde caso seja necessário. Lembre-se de que
alguns aplicativos com instalações padrão via gerenciadores de pacotes podem gerar logs
também nessa partição.
Pelo menos mais uma partição para os ficheiros gerados pelo PBX IP deve ser criada, o
“/var”. Nela serão armazenadas as gravações, voice-mails e logs de todo o servidor, ou
seja, muitos ficheiros, – e às vezes com tamanhos consideráveis - portanto a maior porção
do disco deve ser reservada para ela. Tenha sempre à mão as pastas utilizadas pelo
Asterisk por padrão orientar as suas ações nessa etapa. Outras partições podem ser
geradas conforme necessário, por exemplo, uma partição reservada para o “/boot”, outra
para o “/home” e outra para o “/tmp” sempre são interessantes.
Este Livro é todo ele voltado para este sentido ou seja Hands On! Enquanto você estuda
você ira ser interrompido para realziar os laboratorios ou melhor os treinamentos na
metodologia Hands On!
[ 29 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Você pode utilizar o MagicISO Virtual para emular a imagem ISO do CD/DVD, ou se preferir
grave a imagem em uma média. Você pode também utilizar a ISSO diretamente no Virtual
Box. Neste Hands On Um iremos utilizar a ISSO diretamenteo no VirtualBox portanto não
se preocupe em queimar a média. Após realizar a descarga dos ficheiros, instale o Virtual
Box usando o método Next – Next - Finish. Agora vamos criar a nossa Virtual Machine ou
como também é chamada “VM”.
Inicie o Virtual box, irá ser mostrado no ecrã uma janela igual a imagem abaixo. Click em
Novo.
[ 30 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 31 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Preencha a quantidade de memória RAM que irá ser alocada para a VM. Por exemplo, 4096
MB (4 GB).
Nesta tela será criado o disco rígido virtual. Mantenha marcado as opções Disco Rígido de
arranque, em selecione Criar novo disco rígido.
[ 32 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
É apresentado o assistente de criação do disco virtual, click em Próximo.
[ 33 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Defina o tamanho do disco virtual. Por exemplo, 100,00 GB. Como foi marcado a opção
Armazenamento dinamicamente expansível na tela anterior, não se preocupe, não irar
ocupar 100,00 GB de imediato, será alocado conforme a necessidade. Está definição é
apenas para definir quanto o disco virtual pode crescer, logo é interessante definir um valor
bem alto.
Ultima tela antes da criação do disco virtual, é apresentado um sumário, click em Finalizar.
[ 34 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Com o disco virtual criado, é apresentando um sumário com informações da VM, click em
Finalizar e sua VM será criada.
[ 35 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Irei apresentar algumas configurações interessantes para melhorar o desempenho da VM:
Click com o botão direito do rato em cima da VM MyTraceLog, em seguida,
Configurações...
[ 36 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Em Monitor, no separador Vídeo é configurado a quantidade de memória de vídeo. 32 MB é
um valor suficiente.
[ 37 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Por padrão a placa de rede vem configurado como NAT. Porém, é mais interessante
configurar a placa como “Placa em modo Bridge”. Caso você esteja em uma rede local,
qualquer máquina pode se comunicar com a VM, não só a máquina hospedeira. No modo
NAT isso não é possível.
Como configuramos a rede em modo Bridge não é mais necessário a conexão Exclusiva de
Hospedeiro, então podemos remover a mesma. Click em “Ficheiro> Preferências...”
[ 38 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Click em Rede, e remova executando um com um click no ícone com sinal de menos.
Fonte: (mytracelog.blogspot.com.br)
[ 39 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Um dos problemas que vejo para os usuários Windows que por algum motivo desejam
mudar para o Linux e não saber por onde começar, não tenho a pretensão de fazer uma
referência completa e sim dar dicas para os iniciantes. Sem duvida o começo é o mais difícil
é entender o sistema, descobrir qual a distribuição mais indicada para a nossa necessidade
os comandos etc.
Ubuntu
[ 40 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Mandriva
[ 41 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
OpenSuSe
Apesar de oferecer um bom conjunto de recursos, o SuSE sempre foi uma distribuição
pouco usada no Brasil, devido ao fato de ser uma distribuição comercial, baseada na venda
de caixinhas com as mídias de instalação e manuais impressos. Não existia nenhuma
versão gratuita do sistema para download e não era permitido fazer cópias dos CDs. Isso
mudou a partir do final de 2003, quando a empresa foi adquirida pela Novell, dando origem
ao OpenSUSE, É outra distribuição com foco no usuário final com a intenção de ser fácil de
usar.
[ 42 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Fedora
O Fedora é o sucessor do antigo Red Hat Desktop, descontinuado em 2003. Ele combina os
esforços da Red Hat, com um grande número de voluntários e usuários fiéis. O Fedora é
uma das distribuições mais utilizada em servidores, mas também possui um público fiel no
Desktop,uma das principais características do Fedora é o ritmo das atualizações. O alem de
ser atualizado a cada seis meses inclui sempre um conjunto atualizado de pacotes.
[ 43 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Debian
Embora o Debian seja mais usado em servidores por sua alta estabilidade, ele também
pode perfeitamente ser usado em desktops. O maior problema em utilizar o Debian
diretamente, em vez de usar alguma das outras distribuições comentadas anteriormente é
que o sistema é bastante espartano, carecendo de muitas ferramentas de configuração
automática. Em compensação, ele é bem mais leve, pois muitos pacotes são compilados
com menos componentes e opções mais otimizadas, o que resulta em um desempenho
geral sensivelmente superior, sobretudo em maquinas com hardware modesto.
Existem varias outras distribuições vai ao gosto de cada um, mas Acredito que escolhendo
uma dessas dificilmente o usuário ficara frustrado.
Fonte: (http://ideiabacana.blogspot.com.br)
[ 44 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Quero falar dos motivos por que prefiro utilizar o CentOS GNU/Linux (Community
ENTerprise Operating System) como a distribuição preferencial de trabalho, mas antes
disso quero deixar claro que não sou radical e também utilizo outras distribuições. Por
muito tempo utilizei Conectiva, hoje em dia utilizo o Ubuntu no meu desktop de trabalho.
Já utilizei também outras distribuições, sempre de acordo com as necessidades de cada
situação.
Voltando ao CentOS GNU/Linux, uma das características que mais me chamou a atenção
foi o longo tempo que será mantido - na versão 5 por exemplo será até 2012 - isso
significa que depois de instalado e configurado um servidor, pode-se passar um longo
período de tempo apenas preocupado com atualizações menores, sem ter que realizar
atualizações de versões após curtos períodos de tempo como, por exemplo ocorre no
Fedora GNU/Linux, que muitas vezes exige a configuração de vários serviços novamente.
Para quem nunca ouviu falar do CentOS GNU/Linux ele é feito a partir das fontes do Red
Hat AS, e tem como objetivo ser “100% binário compatível” com a distribuição
original, isso é especialmente útil quando se necessita instalar alguns softwares que são
homologados apenas para certas distribuições.
Como toda distribuição que utiliza o gestor de pacotes RPM (RedHat Package Manager),
existem numerosos repositórios para complementar os pacotes que vem na distribuição
original, um dos mais completos é o de Dag Wieers, que também participa ativamente na
[ 45 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
lista de discussão do CentOS BR e está sempre aberto a adicionar algum pacote que seja
solicitado.
Eles contam com uma equipe responsável pela edição e inserção de notícias e informações
em geral. O site é atualizado sempre que possível com notícias do mundo CentOS e Open
Source.
A numeração das versões é baseada na numeração do Red Hat Enterprise GNU/Linux. Por
exemplo, o CentOS GNU/Linux 5 é baseado no Red Hat Enterprise GNU/Linux 5. A
diferença básica entre um e outro é o fornecimento de suporte pago na aquisição de um
Red Hat Enterprise GNU/Linux. Funcionalmente, podem-se considerar os sistemas clones.
CentOS GNU/Linux proporciona um grande acesso aos softwares padrão da indústria,
incluindo total compatibilidade com os pacotes de softwares preparados especificamente
para os sistemas da Red Hat Enterprise GNU/Linux. Isso lhe dá o mesmo nível de
segurança e suporte através de updates que outras soluções Linux Enterprise, porém sem
custo.
Suporta tanto ambiente de servidores para aplicações de missão crítica quanto ambiente de
estações de trabalho e ainda possui uma versão Live CD.
Site Oficial
CentOS GNU/Linux (Inglês) - “http://www.centos.org/”
CentOS GNU/Linux (Português) - “http://centosbr.org/”
[ 46 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
No Hands On Dois, você encontra os passos para instalar a distribuição Linux CentOS 5.7.
O objetivo é contribuir para que os utilizadores iniciantes tenham uma base para instalar o
sistema rapidamente. Pode ser uma referência para instalação de outras distribuições como
a Red Hat GNU/Linux ou a Fedora GNU/Linux, que são muito parecidas com o CentOS
GNU/Linux.
Recomendações:
Recomendo leitura com prática dos seguintes livros;
Programação Avançada em Linux – Gleicon da Silveira Moraes
Shell Script Profissional – Aurélio Marinho Jargas
Comandos do Linux “Guia de Consulta Rápida” - Roberto G. A. Veiga
Todos os livros acima são da editora Novatec “www.novatec.com.br”.
O CentOS 5.7 possui vários tipos de imagens disponíveis para baixar de seus repositórios
ISOs, procure por CentOS-5.7-x86_64-bin-DVD.torrent, ou CentOS-5.7-i386-bin-
DVD.torrent que são imagens de DVD. Baixe as imagens utilizando um cliente Torrent.
Quando terminar de baixar as imagem x86_64, teremos 2 ficheiros do tipo ISO:
[ 47 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O MagicISO Virtual é utilizado para emular as imagens, ou podes ainda gravar as imagens
em médias. Tudo pronto? Vamos começar:
Inicie o Virtual Box, click com o botão direito do rato em cima da VM MyTraceLog, em
seguida, Configurações...
[ 48 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Aqui você tem a opção de carregar a imagem do Sistema Operativo pelo item “Selecione
um ficheiro de CD/DVD Virtual...” procure a imagem do tipo ISO e pronto.
Vai aparecer o menu do MagicISO Virtual, vá para o item do menu Virtual CD/DVD-rom,
colocando o rato sobre este item vai aparecer a unidade virtual neste caso “G: No Media”,
[ 49 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Colocando o rato sobre o item “G: No Media”, ira aparecer o item “Mount”, observe que
logo abaixo existe o “Unmount”, igualmente no Unix é aqui que você vai montar e
desmontar a imagem ISO no seu CD/DVD Virtual.
Com um click no item “Mount”, ira aparecer a caixa padrão do Microsoft Windows de busca
de ficheiros, selecione o ficheiro do tipo imagem ISO que você quer e click em Abrir.
[ 50 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
E pronto nosso CD ou DVD está carregado na nossa unidade Virtual pronto para ser
utilizado.
[ 51 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Vamos instalar o nosso servidor CentOS somente no modo texto ou CLI (Command Line
Interface). Para isso acontecer na janela de boot do instalador, digite “linux text”.
Logo depois de iniciar a instalação, o gestor perguntará se você deseja verificar o disco.
Esse processo é demorado. Caso você tenha verificado com checksum a imagem e tenha
certeza da qualidade da sua média, você pode pular essa etapa.
[ 52 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
A próxima etapa em diante já é gerida pelo aplicativo “Anaconda”, que já lhe dá as boas
vindas ao CentOS GNU/Linux. E em seguida solicita o idioma que o ambiente utilizará,
tanto para o ambiente de trabalho como para o layout do teclado.
[ 53 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Na Seleção do Teclado, selecione pt-latin1. E muito importante conhecer o verdadeiro
layout de seu teclado, principalmente os dos portáteis. Neste momento o aplicativo
“Anaconda” ira procurar por instalações anteriores do CentOS GNU/Linux.
Você recebera um aviso na janela de que foi encontrado um hard disc sem formatação e o
mesmo vai ser formatado para o padrão do sistema de ficheiros do CentOS. Aceite no
“SIM”.
[ 54 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Em Tipo de Particionamento selecione Apagar todas partições nos discos selecionados e
criar layout padrão. Logo abaixo tem o item Que disco(s) você deseja utilizar para esta
instalação? Deixe a unidade que ele encontrou selecionado, vá com o “TAB” ate o botão
“OK” e prossiga.
Logo após, você receberá um Aviso no ecrã a informar que TODOS OS DADOS NA
UNIDADE SERÁ PERDIDA, novamente, com as setas de direções, vão para o botão “SIM” e
pressione “ENTER”.
[ 55 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora vem uma informação na janela com o título Rever o Layout do Particionamento. O
aplicativo “Anaconda” esta a perguntar se você quer rever e modificar o layout do
particionamento. Vá com as teclas de direções para o botão “NÃO”. E novamente pressione
“ENTER”.
O ecrã de Configurar interface de rede ira surgir perguntando se quer configurar a rede
agora vá ao botão “SIM”.
[ 56 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Com isto vem o ecrã Configuração de rede para eth0 neste momento iremos configurar a
placa de rede manual para a utilização durante a instalação e acesso remoto logo após a
instalação do CentOS GNU/Linux.
A próximo janela é a Configuração de Ipv4 para eth0 neste ecrã já vem default o item [*]
Configuração de IP dinâmico (DHCP), mude para Configuração de IP manual e utilize as
configurações da sua rede.
Exemplo;
IP: 192.168.1.254
MASK: 255.255.255.0
GW: 192.168.1.1
DNS1: 8.8.8.8
DNS2: 208.67.222.222
DNS3: 208.67.220.220
SEARCH: google.com
[ 57 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 58 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Na janela de Configuração do nome de host selecione [*] manualmente para o nome do
host e coloque o nome que você deseja, para dar seguimento neste material irei colocar
“serverfull” tudo minúsculo, e mais uma vez de ok no botão “OK”.
Nesta janela Seleção de Fuso Horário deixe tudo como esta [*] O relógio do sistema utiliza
o UTC e Europa/Lisbon ou America/São Paulo, de ok no botão “OK”.
[ 59 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Na janela da palavra passe do Root (Administrador) digite duas vezes a sua palavra passe,
eu recomendo que troque algumas letras por números. Eu vou utilizar a palavra passe
“12345678” para fins didáticos.
[ 60 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
No ecrã Package Group Selection vamos deixar selecionados somente os seguintes pacotes
(package);
[ 61 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 62 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 63 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 64 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Realizado este procedimento siga com a instalação acionando o botão “OK”. O sistema
(Anaconda) ira ver as dependências de pacotes e logo depois aparecerá o ecrã Instalação
prestes a começar faça o acionamento do botão “OK”.
[ 65 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Logo após isto ira dar sequência de todo o processo de instalação do nosso CentOS
GNU/Linux.
Pronto neste ecrã Concluído remova o seu médio de instalação e acione o botão
“REINICIALIZAR” como esta com default basta dar “ENTER”.
[ 66 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Na primeira vez que o seu sistema inicializar o sistema ira aparecer ao ecrã Agente de
Configuração pedindo para configurar o servidor, entre em “Serviços do Sistema” desabilite
o “IP6tables”.
[ 67 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Após habilite “vsftpd” depois vá em “OK” e depois em “SAIR”.
[ 68 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Para utilizar o seu servidor faça o login com “root” e a password que você colocou no meu
caso “12345678”. Obs.: tudo minúsculo.
Fontes:
http://www.fortenetwork.com.br
http://www.linuxinfo.com.br
http://www.linuxajuda.com.br
http://mytracelog.blogspot.com.br
Com adaptações do Professor Delphini.
[ 69 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Neste momento vamos instalar no ambiente Windows nosso “Laboratório de Estudos”. Com
ele vamos poder trabalhar com nosso servidor GNU/Linus a partir do Windows. Este
cenario é comum na vida de um profissonal que administra servidores GNU/Linux.
Putty
Ao executar o ficheiro “putty-0.61-installer.exe” terá está janela de boas vindas, padrão de
instalação Microsoft®, siga com o botão “Next”.
[ 70 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
A próxima janela e o destino da instalação vamos aceitar o padrão, clique no botão “Next”.
[ 71 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
A próxima janela e o destino da instalação vamos aceitar o padrão, clique no botão “Next”.
[ 72 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Está janela é apenas informativa sobre o progresso da instalação.
[ 73 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Notepad++
Instale o Notepad++ 5.9.3
http://download.tuxfamily.org/notepadplus/5.9.3/npp.5.9.3.Installer.exe
Ao executar o instalador está e a primeira janela de interação, escolha o idioma que quer
utilizar no ambiente de trabalho do NotePad++ e click no botão “OK”.
[ 74 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora a janela da licença, para dar sequência na instalação click no botão “Eu Concordo”.
Nesta janela está sendo apresentado o local de instalação, iremos deixar o padrão, click no
botão “Próximo”.
[ 75 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Está janela serve para escolhermos os componentes da instalação, vamos aceitar o padrão,
click em “Próximo”.
[ 76 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Tela de progresso da instalação, sem ação para o utilizador.
[ 77 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
WinSCP
Instale o WinSCP 4.3.5
http://winscp.net/download/winscp435setup.exe
Idioma português
http://winscp.net/translations/dll/pt.zip
[ 78 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Janela da licença de uso, click em “Next”.
[ 79 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Informações sobre os procedimentos realizado pelo instalador, click em “Install”.
[ 80 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Janela de conclusão do instalador, click no botão “Finish”.
Está é a janela de conexão com os servidores que serão administrados por você. Para criar
uma conexão click no botão “New”.
[ 81 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Está é a janela de informações necessárias para criação de uma conexão, em “Host name:”
informe o caminho do servidor (Ex: 192.168.1.1). Em “Port number:” informe a porta que
está sendo monitorada pelo “OpenSSH” no seu servidor, o padrão é “22” mas por motivo
de segurança é altamente recomendado que altere está porta. Em “User name:” informe o
utilizador ativo para conexões com o “OpenSSH”, por padrão é o “root” e com certeza é
altamente recomendado que altere este utilizador de acesso a seu servidor, assim como
também impedir que o utilizador “root” possa a cessar o mesmo via “OpenSSH”. Em
“Password:” vai a palavra passe do utilizador ativo para a conexão do “OpenSSH”, por
questão de segurança e recomendável utilizar palavras passes com nomenclatura “Hacker
= H4ck3r” (A=4, E=3, I=1, O=0 e U e o único que sempre será maiúsculo).
[ 82 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Após fornecer todas as informações, click no botão “Save...”, com isto a tela de “Save
session as:” aparecera, coloque o nome que quiser na sessão de conexão, e se tiver
certeza que será somente você que vai utilizar esta conexão então ative a caixa de seleção
(tag) “Save passwort ...”
Então será mostrada a janela de conexões novamente agora com a conexão que acabamos
de criar.
[ 83 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 84 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Vamos copiar o ficheiro “WinSCP.pt”. Este ficheiro foi baixado e descompactado por você
no inicio deste Hands On Três.
Uma vez com o ficheiro copiado, iremos colar ele no seguinte caminho: “C:\Arquivos de
programas\WinSCP”
[ 85 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O ficheiro após ser colado no caminho anterior deve ficar assim como está sendo mostrado
na figura abaixo.
Execute agora o WinSCP e clique no botão “Languages” perceba que agora temos também
o idioma “Portuguese – Português (Brasil)”. Iremos selecionar o idioma português.
[ 86 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Ai temos nossa janela de Conexões já em nosso idioma. Uma vez que sua máquina virtual
está em execução, vamos conectar a ela, para isto click no botão “Login”.
Assim que o aplicativo consegue conexão com nosso servidor vem a solicitação para aceitar
a chave de criptografia ssh-rsa, você deve aceitar esta chave com um click no botão “Sim”.
[ 87 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Está é a janela do ambiente de trabalho, ao lado esquerdo temos sua unidade local, no
lado direito está sua unidade remota, ou seja, a unidade local de seu servidor. Está
ferramenta e de extrema utilidade para enviar diversos tipos de ficheiros para nosso
servidor. Observe na barra de ícones a seleção é para chamar o “putty”.
[ 88 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Como perceberam o PuTTY tem sua integração automática, sendo apenas necessário
instalar o mesmo. Agora iremos realizar a integração do Notepad++ com o WinSCP. Para
isto clique em “Opções” e depois em “Preferências”.
[ 89 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Ainda em “Editor” click no botão “Adicionar...”.
Aqui iremos selecionar o item “Editor Externo” e proceder com um click no botão
“Procurar”.
[ 90 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Vá até a pasta onde está instalado o Notepad++ “C:\Arquivos de
programas\Notepad++\notepad++.exe”. É selecione o ficheiro de execução do aplicativo
“notepad++.exe”. Então click no botão “Abrir”.
Iremos voltar a está janela com a ação anterior estando igual a está click no botão “OK”.
[ 91 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Selecionando mais uma vez “Editor”, iremos selecionar Notepad++ e vamos colocar com
prioridade de uso pelo WinSCP. Faremos isto com um click no botão “Acima” com o
Notepad++ selecionado, uma vez que sua janela fique igual a esta click no botão “OK”.
Observe que todos os ficheiros do tipo texto agora já se encontram o ícone do Notepad++.
Vamos abrir com um duplo clique no ficheiro “host.conf”, iremos apenas ver se esta
abrindo com o editor de nossa preferência.
[ 92 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Aqui percebemos que abriu o ficheiro de texto de nome host.conf com o editor de nossa
preferência, que neste caso é o Notepad++.
Agora vamos testar se o PuTTY está funcionando, para isto click no ícone ou abra pelo
menu comandos. A conexão é imediata e já vem a solicitação de aceitação da chave de
criptografia ssh-rsa. Devemos aceitar com um click no botão “Sim”.
[ 93 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Ai está nosso servidor solicitando a palavra passe do servidor.
[ 94 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O desenvolver recomenda para que seja encerrado o aplicativo no botão “F10 Sair”. Isto
porque nos procedimentos da ação do botão esta os encerramentos das chaves publicas.
[ 95 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Entrar na pasta de trabalho “/tmp/trabalho”
root@pbxip~# cd /tmp/trabalho
Copiar um ficheiro de uma locação para outra usando um tunnel por wget
Habilitando o repositório RPMFORGE
(i386el5)
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
(x86_64 el5)
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-
2.el5.rf.x86_64.rpm
(x86_64 el5)
# wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-
4.noarch.rpm
[ 96 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Atualizando seu banco de informações do Sistema Operativo
# updatedb
Apresentação do Asterisk
História do Asterisk
O Asterisk é um aplicativo para criar centrais telefônicas PBX IP que pode ser executada
como um serviço em um servidor GNU/Linux, Mac OS X, ou BSD. Apesar de ser
desenvolvido para trabalhar com plataformas Unix, existem versões que não recebem tanta
atenção pelos desenvolvedores mas que trabalham sobre o Windows também. Aqui iremos
trabalhar com os comandos do GNU/Linux e mais especificamente com os comandos da
distribuição CentOS. Lembro que os conceitos são os mesmos independentes da plataforma
utilizada necessitando apenas de pequenas alterações dependendo do ambiente que será
utilizado.
O software foi desenvolvido inicialmente por Mark Spencer com o objetivo de montar um
PBX IP que satisfizesse as necessidades de uma empresa de suporte que utilizava
computadores com GNU/Linux na época, já que as soluções proprietárias custavam um
valor muito além do que ele queria e podia pagar. Utilizando seus vastos conhecimentos
em GNU/Linux e Linguagem C, Spencer começou o desenvolvimento da plataforma e
alguns meses depois abriu o código-fonte e lançou o Software para que a comunidade
Open Source pudesse ajudá-lo no desenvolver. O sucesso foi maior do que Spencer
esperava e ele acabou abandonando a antiga empresa para fundar a Digium, focando
exclusivamente no desenvolvimento do Asterisk, Hardwares especializados e suporte a nível
corporativo. Desde então o Asterisk vem crescendo rapidamente em utilização e robustez,
sendo atualmente um dos PBX IPs mais utilizado no mundo.
O Asterisk ganhou maior popularidade com a versão 1.2, que obteve mais estabilidade até
aquele momento. Após algum tempo de desenvolvimento foi lançada a versão 1.4 que nos
primeiros releases sofreu um pouco com questões de bugs que traziam instabilidade ao
sistema. Por conta disso eram lançados releases em intervalos bem curtos causando certa
desconfiança para os administradores que ficavam na dúvida se deviam ou não atualizar
seus sistemas. Mas a partir da versão 1.4.11, a maioria dos problemas foram resolvidos e
as migrações passaram a ser mais tranquilas. Com experiência nesse lançamento a
atualização para a versão 1.6 foi melhor planejada; foram liberadas versões alfa e beta
para a comunidade testar antes de ser confirmada a primeira versão estável do Asterisk
[ 97 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
1.6. No entanto, para fazer a migração de um PBX IP sendo executado sobre a versão 1.4
para a 1.6 deve-se atentar para o facto de que houveram mudanças em parâmetros de
alguns aplicativos que precisam ser atualizados.
O Asterisk tem todos os recursos de qualquer PABX do mercado, com a vantagem de ser
um produto de código aberto, e pode ser utilizado em diversos ambientes, alterado e
adequado às necessidades que o projeto a ser implantado demandar sem qualquer custo
ou necessidade de licença.
Ele é capaz de trazer grande interoperabilidade entre várias plataformas, pois faz a
conversão entre vários CODECs e protocolos padrão de mercado. Elimina a necessidade de
grande parte dos módulos adicionais que devem ser incorporados às centrais telefônicas
convencionais para que seja possível utilizar recursos um pouco mais avançados como:
música em espera, correio de voz e IVR, pois isto já está previsto em seu código básico.
O mercado adotou a solução tão fortemente que já existem várias soluções (proprietárias e
abertas) baseadas no aplicativo para as mais diversas atividades de negócios, agregando
maior valor e confiabilidade quando se deseja implantar um projeto VoIP tomando como
base o Asterisk. Gestores de filas de atendimento, tarifários e marcações automáticas, por
exemplo, já são encontrados com total integração com a plataforma Asterisk.
Como praticamente todos os projetos Open Source, o Asterisk possui uma comunidade
crescente, ativa e bastante disposta a ajudar aos demais integrantes com qualquer nível de
conhecimento e enfrentando os mais diversos problemas. A troca de experiencias e
conhecimentos nos fóruns, listas, sites, canais IRC e etc., é bastante dinâmica e muito
proveitosa na maior parte do tempo. Qualquer um pode ajudar também a aperfeiçoar o
software participando dos meios colaborativos fornecidos e moderados pela Digium, basta
respeitar as políticas que são impostas por eles.
Para comprovar conhecimentos no Asterisk, desde 2005 existe uma certificação aplicada
pela Digium ao final dos treinamentos Asterisk Bootcamp ou Asterisk Advanced e
[ 98 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
geralmente também na conferência anual Astricon, a dCAP (Digium Certified Asterisk
Professional). Essa certificação não necessita de renovação e, por enquanto, só possui um
nível. Abrange os conceitos da tecnologia VoIP com foco em Asterisk, protocolos SIP, IAX,
MGCP e H.323 além de aplicações e comandos do Asterisk. A prova é dividida entre partes
práticas e teórica, onde os conhecimentos do profissional são testados nos mais diversos
tópicos que envolvem a plataforma. Para ser aprovado o candidato deve acertar 75% das
respostas em cada uma das provas que utilizam as características da última versão estável
dos pacotes.
Arquitetura do Asterisk
As APIs
São definidas quatro APIs (Application Programming Interface ou Interface de
programação da aplicação) básicas para dividir o funcionamento e entendimento do
sistema. As APIs é um conjunto de módulos que podem ser carregados individualmente
para que haja um maior controle de desenvolvimento e do que será utilizado na
plataforma. Dessa forma, módulos com defeitos tendem a não refletir suas falhas para os
demais a não ser os diretamente relacionados a ele. A modularidade permite que
[ 99 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
combinando as partes de diferentes módulos seja possível obter maior personalização do
sistema.
As APIs são:
API de Canal: essa API é responsável por identificar o tipo de canal de comunicação (SIP,
IAX, ISDN etc.) da chamada que chega ao sistema. Então, os módulos são carregados
dinamicamente para abstrair as informações de mais baixo nível desse canal. No Asterisk,
cada chamada é formada por dois canais independentes em questão de módulos, um da
origem até o servidor e outra do servidor até o destino. Dessa forma, essa API permite
obter independência nos protocolos, e pode trabalhar com mais de um canal em cada
chamada.
API de Tradução de CODECs: nessa API são carregados os módulos que cuidam da
codificação e decodificação de diversos formatos de áudio, como alaw, ulaw, GSM etc. É ela
quem possibilita que tenhamos a facilidade de trabalhar com os mais diversos CODECs, com
a opção de escolha de qual se encaixa melhor em cada cenário.
[ 100 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
API de Formato de Ficheiros: trabalha com leitura e escrita de diversos formatos de ficheiros
para serem armazenados em disco. Por exemplo format_mp3 e format_wav.
O núcleo do Sistema
O núcleo do Asterisk é responsável por interconectar os protocolos, CODECs, formatos de
ficheiros e aplicativos entre si para que possam ser executados os recursos desejados da
forma mais customizável possível. As principais funções do núcleo do sistema estão
descritas a seguir:
Núcleo de Comutação: nessa parte do núcleo são feitas as comutações entre as pontas de
uma chamada. No Asterisk essa comutação é feita de forma transparente, ou seja, o
utilizador não sabe se está sendo feita a conversão de CODECs ou protocolos. Considere o
Núcleo de Comutações como o ponto central e básico de qualquer PABX. No Asterisk não é
diferente.
Tradutor de Aplicativos: essa parte do núcleo é onde são feitas as traduções de um CODEC
para outro. O objetivo de tal tradução é permitir que o administrador ajuste o sistema a
utilizar os recursos da melhor forma possível para o ambiente que ele possui. Esse processo,
assim como a tradução de protocolos, é transparente para os utilizadores.
Scheduler e gestor de I/O: faz a gestão do comportamento das tarefas em baixo nível e seu
escalonamento no sistema para que seja mantido um bom desempenho sob qualquer carga.
[ 101 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
# yum clean all
# yum update glibc\*
# yum update yum\* rpm\* python\*
# yum update ecryptfs-utils\*
# yum clean all
# yum update kernel\*
# updatedb
# yum check-update
# yum update
# reboot
[ 102 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O primeiro comando, ajusta o relógio da placa mãe (HW = Hardware).
Para alterar a password do utilizador “root” siga os seguintes passos: parar o serviço do
MySQL (service mysqld stop, /etc/init.d/mysqld stop matando o processo – conforme sua
distribuição) no CentOS, o comando é este: # service mysqld stop
{start|stop|status|condrestart|restart}
[ 103 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O parâmetro “–skip-grant-tables” desabilita no servidor o uso do sistema de privilégios.
Com isso todos os utilizadores terão o acesso a todos os bancos de dados. Ao executar o
comando “Flush privileges” o servidor retorna a utilizar o seu sistema de privilégios,
mantendo a segurança original do serviço.
Com estes comandos já deve estar tudo que precisamos para o servidor padrão Apache +
PHP. Agora vamos configurar. Primeiro vamos já deixar configurado, para que no boot da
máquina o Apache e o MySQL sejam iniciados, para tal utilizaremos o comando:
# ntsysv ou setup
Depois disso selecione as opções:
[*] httpd
[*] mysqld
Desta forma, sempre que a máquina for reiniciada os dois vão levantar-se.
Agora crie o ficheiro phpinfo.php para o testar o PHP com o seguinte conteúdo:
# vim /var/www/html/phpinfo.php
<?php
phpinfo(); // Mostra todas as informações, o padrão é INFO_ALL
?>
[ 104 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Instalar o PHP-SourceGuardian
# cd /usr/lib64/php/modules
# wget http://www.sourceguardian.com/ixeds/ixed4.lin.x86-64.tar.gz
# tar vxzf ixed4.lin.x86-64.tar.gz
# chmod +x ixed.*.*
# cd /usr/lib/php/modules/
# wget http://www.sourceguardian.com/ixeds/ixed4.lin.x86-32.tar.gz
# tar vxzf ixed4.lin.x86-32.tar.gz
# chmod +x ixed.*.*
# vim /etc/php.ini
short_open_tag = On ( linha 141 )
max_execution_time = 120 ( linha 312 )
memory_limit = 512M ( linha 314 )
error_reporting = E_COMPILE_ERROR ( linha 360 )
register_globals = On ( linha 457 )
upload_max_filesize = 12M ( linha 582 )
extension=ixed.5.3.lin ( incluir contexto linha 631 )
Instalar o PhpMyAdmin
ou
ou ainda
[ 105 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Edite o ficheiro phpmyadmin.conf
Deixe assim:
-----------------------------------------------------------------------------
#
#Inicio de configuração para acesso Web ao phpMyAdmin.
#
<Directory "/usr/share/phpmyadmin">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168
</Directory>
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
#
#Fim de configurações das permissões de acesso Web ao phpMyAdmin.
#
-----------------------------------------------------------------------------
[ 106 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Ao aceder o PhpMyAdmin você terá uma surpresa (blowfish_secret),
http://ip_do_servidor/phpmyadmin.
Deixe-a assim:
$cfg['blowfish_secret'] = '#$*nova_password*S4P4TU*$#';
[ 107 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Sempre coloco um comentário, no caso de querer trocar a password de segurança, então
ficaria assim;
/*
* Blowfish Secret
*/
$cfg['blowfish_secret'] = ' #$*nova_password*S4P4TU*$# ';
Lembre-se utilizamos
Utilizador: root
Password: 12345678
[ 108 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 109 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Em “Criar nova base de dados” digite “ippabx” e clique no botão “Criar”
[ 110 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora clique na base de dados “ippabx”
[ 111 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora clique no menu, no item “Import”.
[ 112 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora clique no botão “Procurar...”
[ 113 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora entre no diretório “Asterisk 1.6 ou 1.8 BD_IPPABX” e selecione o ficheiro “ippabx.sql”
fornecido pelo formador.
[ 114 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora clique no botão “Executar”
[ 115 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Aqui vemos que tudo foi executado com sucesso.
[ 116 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Clique no menu esquerdo sobre o nome da nossa base de dados que esta em azul. Veja
que todas as tabelas de nossa Base de Dados foram criadas com sucesso. Depois clique no
ícone da “Casa” (Home)
[ 117 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora pode sair do phpMyAdmin, clicando no ícone “Exit”.
[ 118 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
LIBPRI: é uma biblioteca para uso das placas da Digium com sinalização ISDN;
Asterisk: pacote que traz os códigos-fonte do Asterisk e todos os seus recursos padrão;
Asterisk-addons: neste pacote são encontrados módulos adicionais para recursos extras
do Asterisk, por exemplo, o módulo que reconhece ficheiro MP3.
OBS: devido a constante mudanças realizadas na estrutura dos repositórios Open Source,
é possível que alguns dos caminhos indicados nos tuneis wget não seja mais valido. Caso
isto ocorra procure pelo nome do pacote no sítio oficial do projeto.
Instalar o LAME;
# cd /usr/local/src
# wget http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-
3.98.4.tar.gz?ts=1292626574&use_mirror=cdnetworks-us-1
# tar zxvf lame-3.98.4.tar.gz
# cd lame-3.98.4
# ./configure
# make
# make install
[ 119 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Instalar o LIBPRI;
# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.tar.gz
# tar zxvf libpri-1.4.11.tar.gz
# cd libpri-1.4.11
# make
# make install
Instalar o DAHDI-LINUX;
# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-2.5.0.1.tar.gz
# tar zxvf dahdi-linux-current.tar.gz
# cd dahdi-linux-2.5.0.1
# make
# make install
Instalar o DAHDI-TOOLS;
# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-2.5.0.1.tar.gz
# tar zxvf dahdi-tools-current.tar.gz
# cd dahdi-tools-2.5.0.1
# ./configure
# make
# make install
# make config
[ 120 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Running dahdi_cfg: [ OK ]
[root@pabxcentos dahdi-tools-2.5.0.1]#
# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2.20.tar.gz
# tar zxvf asterisk-1.6.2.20.tar.gz
# cd asterisk-1.6.2.20
# ./configure
# make menuselect
OBS: Será aberta uma nova janela para selecionar quais os módulos devem ou não ser
instalados. Para instalar, a opção estará como [ * ], para não instalar [ ], caso o sistema
exija alguma dependência que não está instalada, será mostrado XXX na frente do módulo.
Na versão 1.6 vá até ”Save & Quit” após terminar as seleções. Nota que enquanto na
versão 1.6 você utiliza a tecla “espaço” para realizar as seleções de módulos, na versão 1.4
você deve teclar X para o mesmo procedimento.
# make
# make install
# make samples
# make progdocs
# make config
# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-
1.6.2.4.tar.gz
# tar zxvf asterisk-addons-1.6.2.4.tar.gz
# cd asterisk-addons-1.6.2.4
# ./configure
# make menuselect
Todos os itens acima necessitam da biblioteca cliente do MySQL, todos têm que estar com
a opção abaixo do lado esquerdo como descrito a seguir:
[ 121 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Depends on: mysqlclient(E)
Can use: N/A
Conflicts with: N/A
# make
# make install
# make samples
Vamos configurar agora o ficheiro named.conf para que os anexos do correio de voz
possam ser enviados para os destinatários, sem correr o risco de cair na lista de spam.
Vamos desabilitar o SELinux e o Firewal para não termos problemas com os mesmos em
nossas conexões locais (intranet). Lembre-se que para conexões, externas a sua rede
(Internet) faz necessário firewall e vpn.
[ 122 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Conhecendo o Asterisk
Estrutura de Pastas
O Asterisk trabalha com as pastas listadas a seguir quando feita a instalação padrão a
partir dos códigos-fontes. É importante conhecê-los para saber onde procurar os módulos
ou ficheiros utilizados e gerados pelo sistema, assim como para melhor dimensionar o
particionamento do seu sistema operativo. Caso for alterada essa estrutura de pastas deve-
se alterar no ficheiro “asterisk.conf” quais as pastas utilizadas que corresponde os originais.
[ 123 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
/var/lib/asterisk/keys: para garantir maior segurança é possível utilizar chaves
criptografadas para autenticar extensões ou outros sistemas que utilizam DUNDi por
exemplo. Nessa pasta são armazenadas essas chaves quando houver esse tipo de
requisito em seu PBX IP.
[ 124 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
/var/spool/asterisk/tmp: guarda dados temporários gerados pelo Asterisk
principalmente para fazer controlo de concorrência entre aplicativos de leitura e
escrita em dados que estão sendo usados.
Iniciando o Asterisk
# rasterisk –vvvvgci
O prompt do sistema operativo deverá mudar para *CLI>. As opções mais usadas com o
comando # asterisk no GNU/Linux são as seguintes: (para mais informações digite # man
asterisk no prompt):
v: indica o nível de verbose que o Asterisk irá exibir após iniciado, múltiplos v indicarão
maior verbose;
c: inicia o Asterisk na consola. Para sair desse modo, o serviço do Asterisk deve ser
paralisado;
d: ativa o modo debug:
g: gera coredumps em caso de segmentation fault;
G<grupo>: grupo que iniciará o Asterisk;
r: conecta ao Asterisk que estiver sendo executado no servidor e não inicia uma nova
instância;
U<utilizador>: utilizador que iniciará o Asterisk;
x<comando>: conecta ao Asterisk que estiver sendo executado, executa o comando
passado como parâmetro, imprime o resultado na consola do GNU/Linux e fecha a
conexão.
Exemplo:
# rasterisk –x “core show channels”
[ 125 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Para interromper o Asterisk que está em produção é possível escolher entre os seguintes
comandos na linha de comando:
O mesmo se aplica para os comandos core restart now, gracefully e when conveniente.
De preferência inicie e pare o serviço Asterisk sempre pelos comandos:
Estes são satisfatórios para usar em testes, mas eles interrompem o serviço, então não são
apropriados para um sistema em produção.
Os ficheiros são divididos em seções, que são declaradas entre parêntese reto ([<seção>])
e tudo o que estiver abaixo desta seção até o início de outra ou até o final do ficheiro
estará relacionado a ela. Por exemplo:
[sessao1]
par1=123
par2=456
[sessao2]
par3=789
[ 126 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Alguns ficheiros possuem no início das configurações uma seção chamada [gereral]. Nos
casos de ficheiros de configuração de canais, como os ficheiros sip.conf, iax.conf e
chan_dahdi.conf, serão definidos nesta sessão os parâmetros utilizados em todas as outras
seções se esse parâmetro não for sobrescrito nas sessões específicas de cada canal. Em
outros ficheiros, como o features.conf essa sessão existe para definir um conjunto de
parâmetros que são usados por aplicações específicas dentro do Asterisk.
[ 127 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Caso você deseje criar novos ficheiros para ter maior organização e controle do que está
sendo configurado, pode fazer uso de desenvolvimento segmentado, em todos os ficheiros
de configuração você pode utilizar esta técnica de desenvolvimento, com a inclusão de
ficheiros, ou seja, a partir do ficheiro padrão podem ser incluídos outros ficheiros criados
com qualquer nome.
Então iremos ver com são feitas as primeiras configurações em um PBX IP Asterisk. Na
instalação foram criados ficheiros de exemplo quando executamos o comando make
samples, esses ficheiros podem servir de referência para as configurações que você for
iniciar. Porém, para evitar que ocorram confusões e até mesmo acessos a extensões
indevidas, procure sempre criar um backup dos ficheiros que veremos a seguir e comece
criando novos ficheiros somente com as configurações que você fizer.
[ 128 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Asterisk Overview
Nosso Cenário
2. Redes Multisserviços.
Conexão com a Rede Multisserviços que interliga todas as instalações prediais da empresa
nas diversas localidades. No caso de uso de redundâncias, podem ser contratadas outros
prestadores de serviço para prover diversidade de circuitos.
3. PABX IP Principal.
Equipamento responsável pelo fornecimento do serviço de comunicação por Voz. Pode ser
um único equipamento que atende todas as localidades prediais a partir de um local
central. Eventualmente pode ter um equipamento de contingência em outra localidade.
[ 129 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
5. Telefone IP.
Terminal telefônico IP ou terminal telefônico analógico com adaptador para VoIP.
6. PC's ou Notebooks.
Computadores desktop ou laptop, que também podem ser utilizados para telefonia IP com
software do tipo softphone.
7. Rede Local.
Compreende toda a infraestrutura da rede local (LAN): cabos de interligação, cabeamento
estruturado, painel de distribuição e hub ou switch. Deve-se observar que as instalações
com hub podem introduzir perdas devido a sua característica de comunicação "um-para-
muitos". Recomenda-se, portanto, o uso de switches, que implementam a comunicação
"ponto-a-ponto" entre todos os elementos da rede.
8. CPE.
Equipamento de interface da rede corporativa com a rede multisserviços que implementa a
rede WAN da empresa. Quando o número de localidades é grande, na localidade principal
pode ser colocado adicionalmente um equipamento, switch de maior capacidade de
processamento, como nó central para melhorar o tráfego entre as diversas localidades.
Qualidade de Serviço: para que a Rede VoIP tenha uma qualidade de comunicação de Voz
que seja, no mínimo, igual aos sistemas de Voz comutada, deve-se ter como prerrogativa
de projeto um plano para garantir o QoS das informações de Voz, tanto na(s) rede(s)
local(is) como nos CPE's e circuitos contratados das redes multisserviços.
Nível de Serviço: a disponibilidade geral da rede e o MTBF (falhas) devem ser objeto de
estudo para garantir que tantos os equipamentos como os serviços contratados das redes
multisserviços permitam manter a rede VoIP funcionando sempre. Os equipamentos devem
ter suporte local e em regime ininterrupto, e os serviços de telecomunicações devem ser
contratados com base num Acordo de Nível de Serviço (SLA) que atenda as necessidades
da Rede VoIP.
Segurança: assim como nas redes de dados, a rede VoIP deve também ter os seus
procedimentos de segurança definidos e implementados nos equipamentos de segurança
existentes (firewall, proxy, etc.) ou em novos equipamentos destinados a esse fim.
[ 130 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
PBX IP Tradicional
O Asterisk permite conectividade em tempo real entre a rede pública de telefonia e redes
VoIP. A rede pública de telefonia é frequentemente referida pela sua sigla em inglês PSTN
(Public Switched Telephony Network).
[ 131 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Para ligar para os telefones normais, fixos ou moveis em qualquer lugar no mundo é
necessário o uso de um ITSP - Internet Telephony Service Provider, estes provedores
possuem aparelhos especiais (gateways) que são ligados nas redes telefônicas normais
(PSTN) em muitos países, este serviço é chamado de "Terminação".
Conectando seu Servidor IP PABX a um destes ITSP você poderá ligar pela internet até o
país desejado e lá realizar uma ligação local para o telefone de destino. Por isso as tarifas
internacionais da Telefonia IP são tão baixas.
Os ITSP também fornecem números de telefone locais em muitos países, desta forma você
pode ter um número de telefone e receber chamadas de telefones normais sem que a
pessoa que está chamando pague tarifas internacionais.
Suponhamos que a Internet é nossa Terminação I seja responsável por todas as chamadas
nacionais. Quando não temos tratamento de falhas, o que também chamado de
redundância, onde caso a Terminação I para de operar por motivos que não nos
interessam até então, os utilizadores não conseguirão completar chamadas nacionais.
O nosso PSTN é então nossa Terminação II, Neste cenário que estamos ilustrando temos
um ITSP (nosso servidor VoIP) e um PSTN (nossa operadora telecom local).
Terminações que por sua vez encaminharão para a rede pública de telefonia (PSTN), todas
as chamadas que por algum motivo deixou de ser atendida pela no telefonia IP (ITSP).
[ 132 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Gateway VoIP
Um Servidor VoIP (Gateway VoIP) é um dispositivo que converte os sinais de voz para o
protocolo IP, que por sua vez, os transmite através de redes de dados. São usados de duas
formas:
[ 133 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Servidor de Funcionalidades
Esta poderosa ferramenta permite montar com custos reduzidos um ótimo servidor de
funcionalidades de voz com altíssimos níveis de funcionalidade, suportando entre outras:
- Vários operadores Voip
- Utilização de Hardware dedicado ou softphones
- Integração com dispositivos móveis
- Voice-mail
- Gateway voice-mail para correio electrónico
- Suporte para Hardware de telefonia RDIS e analógico
- IVR (URA) e AA (Atendimento Automático)
- Música em espera
[ 134 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
maiores chances de sucesso em seu projeto. Garantir banda suficiente para incorporar
transmissão de voz sobre a rede de dados, utilizar priorização de pacotes e VLANs quando
possível são questões que devem ser analisadas para obter qualidade nas transmissões de
voz. Da mesma forma o servidor que irá fornecer o serviço de voz sobre IP deve ser
dimensionado de acordo com a operação que será exigida do mesmo. Devem ser
consideradas os aplicativos que irão executar, os CODECs e protocolos que serão
utilizados para poder adequar o Hardware de forma correta. O particionamento que será
feito é essencial para garantir maior segurança e tranquilidade ao administrador, facilitando
a manutenção do servidor. Com o ambiente todo preparado foram apresentados os pacotes
que compõem o sistema: DAHDI, Libpri, Asterisk e Asterisk-addons. Lembrando que
o DAHDI fornece os drivers para as placas, LIBPRI é a biblioteca para sinalização ISDN,
Asterisk é o pacote principal e Asterisk-addons são recursos adicionais que podem ser
acrescidas ao seu PBX IP. Atenção especial deve ser dispensada ao módulo
dahdi_dummy que fornece o timing para aplicativos como MeetMe() (conferencia)
quando não houver placas da Digium instaladas. Por fim, passamos por alguns ficheiros de
configuração (o que contém cada um deles) e como é a estrutura básica dos mesmos. De
agora em diante iremos focar nas configurações desses ficheiros. Vamos aprender como
configurar extensões SIP, IAX e FXS, o plano de marcação, entroncamento com a PSTN
através de links digitais, analógicos e VoIP e conhecer os principais comandos de terminal
que nos ajudarão a administrar o PBX IP.
Configurações Básicas
Neste momento, veremos como são feitas as primeiras configurações em um PBX IP
Asterisk. Na instalação foram criados ficheiros de exemplos quando executamos o comando
# make samples, esses ficheiros podem servir de referência para as configurações que
você for iniciar. Porém, para evitar que ocorram confusões e até mesmo acessos a
extensões indevidas, procure criar backups dos ficheiros que veremos a seguir e comece
criando novos ficheiros somente com as configurações que você implementar.
O Protocolo SIP
Devido a sua ampla adoção, o protocolo SIP possui diversos dispositivos que podem ser
utilizados como principal ferramenta de comunicação de voz. Esses equipamentos seriam
softphones – (softwares que emulam um telefone no computador – Figura 7.1), ATAs –
Analog Tlephony adapter - Figura 7.2), aparelho que converte uma extensão analógica
TDM para uma extensão VoIP. Normalmente possui uma ou duas portas, Gateways
(Figura 7.4), que são ATAs com mais portas, como se fossem um switch ou telefones VoIP
(Figura 7.5).
[ 135 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 136 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[ 137 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Existem diversas marcas que praticam preços bastante variados. Pesquise nas listas ou
converse com outros Administradores de Sistemas Asterisk para saber quais são suas
experiências com cada marca e em qual ambiente eles foram usados, já que normalmente
isso ajuda a achar equipamentos com melhor custo/benefício.
Segue um quadro comparativo entre esses dispositivos para servir como base de
comparação (sem levar em conta fabricantes ou modelos):
[ 138 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Gateways FXS Menos custo por porta Caso ele falhe, diversas extensões
quando forem necessárias ficaram sem comunicação.
extensões analógicas.
Menos equipamento para
proceder com a gestão.
Telefone IP Aparelhos com boa Custo de aquisição impede que sejam
qualidade e aparência. adquiridos muitos.
[ 139 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
canreinvite=yes/no/nonat/updat Definição referente ao fluxo de média yes(direto)
e entre dois clientes SIP (direto entre eles
ou pelo Asterisk.
[ 140 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Alguns desses parâmetros podem ser usados também nas configurações de cada peer,
assim como existem alguns específicos para configurações dos clientes que não se aplicam
na seção [gerenal] do sip.conf, os mais comuns são:
[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
bindport=5060
bindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
srvlookup=yes
maxexpiry=600
[ 141 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
defaultexpiry=300
disallow=all
allow=gsm
allow=ulaw
allow=alaw
language=pt
dtmfmode=rfc2833
[authentication]
[basic-options](!) ; a template
dtmfmode=rfc2833
context=from-office
type=friend
[ 142 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
allow=ilbc
allow=g729
allow=g723
[grupoexterno](!)
type=friend
qualify=yes
nat=yes
host=dynamic
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=externo
canreinvite=no
musicclass=moh
qualify=1000
dtmfmode=rfc2833
language=pt
call-limit=1
[grupointerno](!)
type=friend
qualify=yes
nat=yes
host=dynamic
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=interno
canreinvite=no
musicclass=moh
qualify=1000
dtmfmode=rfc2833
language=pt
call-limit=1
[pap2](!)
type=friend
qualify=yes
nat=yes
host=dynamic
[ 143 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=externo
canreinvite=no
musicclass=moh
qualify=1000
dtmfmode=rfc2833
language=pt
call-limit=1
;[contexto_sapo]
;username=user_sapo
;type=peer
;secret=senha_sapo
;reinvite=no
;canreinvite=no
;qualify=yes
;port=5060
;nat=yes
;insecure=very
;host=sapo.pt
;fromuser=user_sapo
;fromdomain=sapo.pt
;externrefresh=15
;dtmfmode=rfc2833
;context=externo
;disallow=all
;allow=gsm
;allow=ulaw
;allow=alaw
;insecure=port,invite
[2000](grupoexterno)
username=2000
callerid=2000 <Delphini>
secret=12345678
mailbox=2000
callgroup=1
pickupgroup=1,2,3
[2001](grupoexterno)
username=2001
callerid=2001 <Dell>
secret=12345678
[ 144 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
mailbox=2001
callgroup=2
pickupgroup=2
[2002](grupoexterno)
username=2002
callerid=2002 <Angelo>
secret=12345678
mailbox=2002
callgroup=3
pickupgroup=3
;
;--------------------------------------------------------------------
[ 145 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Configure a extensão 2000 (SIP) no aparelho IP que lhe foi presenteado pela formação
Asterisk.
Configure a extensão 2001 (SIP) no softphone 3CX para isto siga os passos abaixo:
[ 146 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Vamos aceitar a licença e clicar no botão “Next >”.
[ 147 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Finalmente a janela de instalação vamos fazer instalação no botão “Install”
Figura Hands On Dez 10.04: Iniciar a cópia dos ficheiros Pasta onde será instalado o
3CXPhone.
[ 148 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
É a janela de finalização da instalação do 3CXPhone, clique no botão “Finish”.
Quando executar o 3CXPhone pela primeira vez ele irá abrir automaticamente a tela de
configuração da extensão telefónica. Configure igual a “Figura 7.13”, logo abaixo, lembre-
se que colocamos a palavra-chave “12345678”, e clique no botão “OK”.
[ 149 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Nesta imagem vimos o nosso softphone conectado “On Hook”.
Observe que logo abaixo do menu de ícones do softphone 3CXPhone tem um botão, tal
qual o Apple iPhone, click nele para irmos as preferências do mesmo, então teremos a
imagem abaixo, a da “Figura 7.15”.
[ 150 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora iremos clicar no botão (ícone) “Preferences”.
[ 151 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Iremos selecionar o idioma “Portuguese (Portuguese translation)”, e clicar no botão
“Install”.
Janela com a informação que a instalação foi bem-sucedida, clique no botão “OK”.
[ 152 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Observe que no campo “Language:” já esta “Portuguese (3CXLi...”, agora clique no botão
“OK”.
[ 153 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Execute testes e funcionalidades.
[ 154 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Iremos aceitar a licença e clicar no botão “Next >”.
[ 155 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Iremos deixar esta janela com o padrão da instalação clique no botão “Next >”.
Progresso da instalação.
[ 156 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Este aplicativo ainda é para Windows 98 SE, por isto selecione “No, I will restart the
computer later” e clique no botão “Finish”.
Quando executado pela primeira vez o softphone ira abrir a configuração da extensão,
clique no botão “Add...”
[ 157 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Proceda a configuração como o da imagem abaixo, e clique no botão “Aplicar” e depois no
botão “OK”.
[ 158 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora o X-Lite está conectado.
Nota: O parâmetro contexto nas configurações de cada extensão indica a qual contexto no
plano de marcação pertence esta extensão e não qual contexto deverá ser usado para
chamá-lo.
[ 159 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Para configurá-lo existem alguns parâmetros que devem ser adicionados no ficheiro
iax.conf:
Outra grade vantagem do protocolo IAX é seu uso no modo trunk que traz grande
economia de banda quando estamos interligados servidores através dele. Para configurá-lo
podemos colocar os parâmetros na sessão [general].
[ 160 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Parâmetro Descrição Padrão
trunkfreq=<numero> Frequência em 20
milissegundos que serão
enviadas mensagens de
trunk.
Deve ser adicionado o parâmetro trunk=yes em cada um dos peers que serão trunks. Caso
esse parâmetro não for septado ou for septado com o valor no, o entroncamento
funcionará igual a um entroncamento SIP, ou seja, não fará proveito desse recurso. Em
extensões IAX esse parâmetro não faz sentido.
[general]
bindport=4569
bindaddr=0.0.0.0
disal ow=lpc10
disal ow=all
allow=gsm ; Always al ow GSM its cool
language=pt
jitterbuffer=no
forcejitterbuffer=no
maxjitterbuffer=500
maxexcessjitterbuffer=100
autokil =yes
[grupoexterno](!)
type=friend
context=externo
host=dynamic
allow=all
[grupointerno](!)
type=friend
context=interno
host=dynamic
allow=all
[ 161 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[2003](grupoexterno)
username=2003
secret=12345678
callerid=2003 <2003>
mailbox=2003
qualify=yes
[2004](grupoexterno)
username=2004
secret=12345678
callerid=2004 <2004>
mailbox=2004
qualify=yes
Configure a extensão 2003 (IAX) no softphone Zoiper. Para isto siga os passos abaixo:
Fazer o download do softphone, para instalar e utilizar no seu servidor IP PBX.
http://www.zoiper.com/download_list.php
Passos da instalação:
Execute o Zoiper Communicator Setup application
[ 162 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Siga o Setup Wizard
[ 163 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Vamos configurar o nosso utilizador IAX2003. Depois de instalado vamos no menu Zoiper
e escolhemos Preferences, Create New IAX account e criamos um nome para a conta.
Na guia IAX2003 que acabamos de criar inserimos os dados da conta que foi definida no
ficheiro iax.conf.
[ 164 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Se tudo está correto, na aba da conta aparecerá: IAX2003 (Registrado) (IAX). Agora
podemos fazer chamadas internas e externas. Ainda que não existam muitos provedores
VoIP que trabalham com IAX, esse é um protocolo mais voltado para interligação de
servidores Asterisk. Execute testes e funcionalidades.
Assim como para configurações no sip.conf, após qualquer alteração no ficheiro iax.conf
deve ser executado o comando *CLI> iax2 reload na linha de comando.
Provavelmente o softphone mais utilizado para extensões IAX seja o Zoiper. Ele é um dos
únicos disponíveis no mercado que trabalham com esse protocolo e é facilmente
configurado.
O Dial Plan
O Asterisk se diferencia dos demais PBXs IP existentes no mercado principalmente devido à
sua flexibilidade. É possível configurá-lo ao gosto do cliente, limitado somente à
criatividade de quem adota a solução.
Um dos principais fatores que permite tal poder de customização é a forma sob a qual o
plano de marcação do Asterisk é descrito e que como ele faz a gestão de seus aplicativos.
Estes, por sua vez, são desenvolvidos para permitirem que seu uso não seja muito restrito.
No entanto, nem sempre é possível e por vezes o recurso fica atrelado a um funcionamento
predeterminado, mas em muitas outras é possível fazer o que se deseja combinando um
conjunto de aplicativos e variáveis no próprio plano de marcação ou ainda utilizando AGIs
(scripts que podem ser desenvolvidos em várias linguagens de programação e estender
ainda mais a gama de recursos oferecidos).
A Sintaxe
A sintaxe
O plano de marcação é, por padrão, escrito em detalhes no ficheiro extensions.conf e sua
estrutura é dividida em sessões chamadas contextos. Os contextos são definidos entre
parentes retos e contêm os padrões de marcação aos quais cada extensão terá acesso
dentro do plano de marcação, ou seja, permite dar permissões a determinadas rotas ou
aplicativos através do reconhecimento dos dígitos que foram informados.
Onde <padrão> é o conjunto de dígitos que serão reconhecidos por aquela extensão,
<prioridade> é o número da sequência dos aplicativos que serão executados e
<aplicativo> é o aplicativo que será executado naquele momento. Por exemplo:
[ 165 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[teste]
exten => _600,1,Answer()
exten => _600,2,Playback(hello-world)
exten => _600,3,HangUp()
No exemplo anterior é definido o contexto teste que reconhece o padrão _600 somente.
Quando um utilizador que tiver acesso a esse contexto marcar _600 a chamada será
inicialmente atendido pelo aplicativo Answer(), depois será encaminhada para a prioridade
2 onde é executado o áudio hello-word pelo aplicativo Playback() e por último na prioridade
3 a chamada é desligada pelo aplicativo HangUp().
[teste]
exten => _600,1,Answer()
exten => _600,2,Playback(hello-world)
exten => _600,3,HangUp()
Aplicação Descrição
Dial(tech/numero,timeout,opções) Executa uma marcação. Onde “tech” é o
tipo do canal que será usado (SIP, IAX2,
DAHDI, etc); “timeout” é o tempo que a
aplicação ficará chamando o destino antes
de considerar como não atendida; e
“opções” são parâmetros adicionados à
aplicação.
[ 166 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
se a condição assim for ou vai para “falso”
se estiver definido, caso “falso” for vazio
pula para a próxima prioridade.
[ 167 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Existem diversas outras aplicações disponíveis, para ver quais são, qual a sua sintaxe e
utilização consulte na consola do Asterisk através do comando “core show applications”
para ter uma listagem completa e uma descrição abreviada de cada uma. Para maiores
detalhes digitem o comando “core show applcation <aplicativo>”.
;--------------------------------------------------
; “general.conf” do Dial Plan do PBX IP Asterisk
;
[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no
;
;---------------------------------------------------
[ 168 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Edite o ficheiro /etc/asterisk/pbxip/globals.conf e adicione as linhas a seguir:
;--------------------------------------------------
; “globals.conf” do Dial Plan do PBX IP Asterisk
;
[globals]
CONSOLE=Console/dsp ; Interface do console para demonstracao
IAXINFO=guest ; IAXtel nome de usuario e senha
TRUNKMSD=1 ; Digitos MSD para descascar(normalmente 1 ou 0)
FIXO=/DAHDI/G1
MOVEL=/DAHDI/g2
ACH1=SIP/2000
ACH2=SIP/2001&SIP/2002
ACH3=SIP/2003&SIP/2004
ACH4=SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004
;
;---------------------------------------------------
;--------------------------------------------------
; "extensions.conf" Dial Plan do PBX IP Asterisk;
;--------------------------------------------------
; Includes do Dial Plan do Asterisk
;
#include pabx/general.conf
#include pabx/globals.conf
#include pabx/recursos.conf
;---------------------------------------------------
; Configurações das extensões
;
[interno]
Include = local
[externo]
include = local
include = nacional
include = internacional
[local]
;Faz chamadas entre as extensoes.
exten => _20XX,1,Dial(SIP/${EXTEN},15,rTt)
exten => _20XX,n,GotoIf($["${LIMIT}"="1"]?busy)
[ 169 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => _20XX,n(busy),Congestion(3000)
exten => _20XX,n,HangUp()
[nacional]
[internacional]
;
;---------------------------------------------------
;--------------------------------------------------
; "recursos.conf" do Dial Plan do PBX IP Asterisk;
;--------------------------------------------------
; Recursos do PBX IP Asterisk
;
[recursos]
;Hello World
exten => _600,1,Answer()
exten => _600,2,Playback(hello-world)
exten => _600,3,Hangup()
[ 170 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Contextos
Os contextos são denotados pela colocação do nome de contexto dentro de parentes retos
[], por exemplo, [interno]. Todas as instruções colocadas depois da definição de um
contexto fazem parte do contexto até que seja definido outro contexto.
Um dos mais importantes usos de contextos é garantir a segurança. Pelo uso correto dos
contextos, é possível permitir a determinadas pessoas acesso a algumas funções que não
serão disponibilizadas a outras.
[ 171 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Extensões
Uma extensão é uma instrução que o Asterisk irá seguir e é incluída dentro de cada
contexto. A extensão é acionada por uma chamada de entrada ou por dígitos sendo
marcados em um canal. Então as extensões especificam o que acontece às chamadas
enquanto seguem seu caminho pelo plano de marcação.
A sintaxe para uma extensão é a palavra “exten” seguida por uma seta formada pelo sinal
de igual e de maior que (exten =>).
Um simples exemplo:
exten => 123,1,Answer()
O nome da extensão. Quando lidamos com sistemas telefônicos, temos a tendência de usar
números que devemos digitar para fazer outro telefone tocar, mas no Asterisk é possível
fazer muito mais, tal como colocar nomes.
Prioridades
Cada extensão pode ter vários passos, chamados de prioridades. Cada prioridade é
numerada sequencialmente e cada prioridade executa uma aplicação específica. Por
exemplo, a seguinte extensão pode responder a uma chamada (na prioridade 1) e então
desligar (na prioridade 2):
As versões mais recentes do Asterisk, a partir da 1.2, é possível usar um truque para
enumerar as prioridades, como por exemplo usar o “n” que indica a próxima, ou seja, cada
vez que o Asterisk achar um “n” ele pega o número da prioridade anterior e acrescenta
mais 1. Por exemplo:
[ 172 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => 123,n,faça outra coisa
exten => 123,n,Hangup()
Aplicações
Vamos criar um plano de marcação simples para entender como este funciona. Em nosso
exemplo iremos criar um plano de marcação para que quando a chamada chegar, o
Asterisk irá responder à chamada, tocar um ficheiro de áudio e então desligar a chamada.
Antes de iniciar o plano de marcação, nós devemos explicar sobre uma extensão especial
chamada de extensão “s”, quando as chamadas entram num contexto sem uma extensão
específica de destino (por exemplo, uma linha FXO chamado), elas são automaticamente
manipuladas pela extensão “s”. O “s” indica início (start).
Nosso plano de marcação irá iniciar com a extensão “s” e executaremos três ações:
responder, tocar um ficheiro de áudio e desligar:
[entrada]
exten => s,1,Answer()
exten => s,2,Playback(hello-world)
exten => s,3,Hangup()
A aplicação Answer() É utilizada para responder a um canal que está chamando, isso
faz a configuração inicial do canal que recebe a chamada que está entrando, Answer() não
tem argumentos.
A aplicação Hangup() desliga o canal ativo e quem está chamando recebe uma indicação
que a chamada foi desligada, deve-se utilizar essa aplicação ao final do contexto quando
[ 173 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
quiser terminar a atual ligação para assegurar que o plano de marcação não continuará
sendo utilizado. Essa aplicação não tem argumento.
O plano de marcação até agora não tem muita utilidade é mais para entender a teoria e
testes, caso os canais estejam configurados é possível testá-lo. Vamos tornar o plano de
marcação mais dinâmico.
exten =>123,1,Background(hello-world)
Outra aplicação útil é Goto(), que é usada para enviar a chamada para outro
contexto, extensão e prioridade. A aplicação Goto() torna fácil se mover
programaticamente uma chamada entre duas partes diferentes do plano de
marcação. A sintaxe para a aplicação Goto() nos pede que passemos os argumentos do
contexto, da extensão e da prioridade para a aplicação, da seguinte forma:
Neste próximo exemplo, iremos tocar o ficheiro de amostra de áudio chamado de vm-
enter-num-to-call.gsm. E depois adicionar duas extensões que serão acionadas pelo
chamador ao inserir 1 ou 2 no telefone.
[entrada]
exten => s,1,Answer()
exten => s,2,Background(vm-enter-num-to-call)
exten => 1,1,Playback(digits/1)
exten => 1,2,Goto(incoming,s,1)
exten => 2,1,Playback(digits/2)
exten => 2,2,Goto(incoming,s,1)
Então quando os utilizadores chamam nosso plano de marcação, eles vão ouvir uma
saudação, e devem inserir um dígito, se eles pressionarem 1, irão ouvir o número 1 e, se
pressionarem o número 2, irão ouvir o número 2. E o Goto() irá fazer tudo ser repetido.
[ 174 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Bem com os exemplos anteriores temos um menu de voz, mas é preciso controlar algumas
anomalias, a primeira é a entrada inválida de um utilizador, tal função é feita pela extensão
“i”.
Outra situação é quando o utilizador não digita uma entrada a tempo (o tempo provisório é
de 10 segundos), estas chamadas devem ser tratadas pela extensão “ t” se o chamador
demorar a
Pressionar um digito depois que Background() tiver terminado de tocar o arquivo de som.
[entrada]
exten => s,1,Answer()
exten => s,2,Background(vm-enter-num-to-call)
exten => 1,1,Playback(digits/1)
exten => 1,2,Goto(incoming,s,1)
exten => 2,1,Playback(digits/2)
exten => 2,2,Goto(incoming,s,1)
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(incoming,s,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()
Uma das mais importantes características do Asterisk é sua habilidade para conectar
diferentes chamadores, uns com os outros. Isso é especialmente útil se os chamadores
aplicarem diferentes métodos de comunicação (SIP, H.323, PSTN, etc).
A sintaxe da aplicação Dial() é um pouco mais complexa que as das outras aplicações, já
que utiliza 4 argumentos.
O primeiro argumento é o destino que está tentando chamar, que é feito de uma
tecnologia por meio do qual será feita a chamada, uma barra normal e o recurso remoto
(normalmente um nome ou número de canal). Exemplo:
Neste exemplo assumimos que queremos chamar um canal DAHDI chamando DAHDI/1,
que é um canal FXS com um fone analógico conectado. A tecnologia é “DAHDI” e o recurso
é “1”, e o 123 indica que o Asterisk deve chamar o canal DAHDI/1 quando forem
digitados 123.
[ 175 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => 123,1,Dial(DAHDI/1&DAHDI/2&DAHDI/3)
A aplicação Dial() irá ligar a chamada a aquele que atender primeiro. O segundo
argumento da aplicação Dial() é o tempo decorrido, especificado em segundos. Se não for
especificado um tempo, o telefone irá continuar tocando até alguém atender ou que a
pessoa chamando desista.
Se a chamada for atendida antes do tempo decorrido, os canais são ligados e o plano de
marcação será concluído. Se o destino simplesmente não responder, Dial() vai para a
próxima prioridade na extensão. Se, entretanto, o canal de destino estiver ocupado, Dial()
irá para a prioridade n+101 , se a prioridade existir (onde n é a prioridade onde a
aplicação Dial() foi chamada). Isso nos permite manipular chamadas não respondidas de
maneira diferente das chamadas cujos destinos estavam ocupados.
Vamos fazer agora um plano de marcação que permita que falemos com John e Jane.
[entrada]
exten => s,1,Answer()
exten => s,2,Background(enter-ext-of-person)
exten => 101,1,Dial(DAHDI/1,10)
exten => 101,2,Playback(vm-nobodyavail)
exten => 101.3,Hangup()
exten => 101,102,Playback(tt-allbusy)
exten => 102,1,Dial(SIP/Jane,10)
exten => 102,2,Playback(vm-nobodyavail)
exten => 102,3,Hangup()
exten => 102,102,Playback(tt-allbusy)
exten => 102,103,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(entrada,s,1)
[ 176 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()
Bem depois de entender como funciona basicamente o plano de marcação iremos entender
como criar mais de um contexto e fazer estes interagirem, lembre que é essa uma das
funções do plano de marcação. Então vamos criar um contexto chamado (extensões)
internas e configurar a capacidade dessas duas extensões para ligar uma para a outra, este
novo contexto vai se chamar [interno]. Nós iremos deduzir que já esteja configurado um
canal FXS DAHDI (DAHDI/1) e um canal FXO (DAHDI/4) que utilizam o canal [entrada] e
um ou mais canal SIP (SIP/jane), que está configurado no contexto [interno].
[entrada]
exten => s,1,Answer()
exten => s,2,Background(enter-ext-of-person)
exten => 101,1,Dial(DAHDI/1,10)
exten => 101,2,Playback(vm-nobodyavail)
exten => 101,3,Hangup()
exten => 101,102,Playback(tt-allbusy)
exten => 101,103,Hangup()
exten => 102,1,Dial(SIP/jane,10)
exten => 102,2,Playback(vm-nobodyavail)
exten => 102,3,Hangup()
exten => 102,102,Playback(tt-allbusy)
exten => 102,103,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(entrada,s,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()
[interno]
exten => 101,1,Dial(DAHDI/1,,r)
exten => 102,1,Dial(SIP/jane,,r)
Neste exemplo, foi adicionado duas novas extensões ao contexto [interno]. Dessa forma,
a pessoa que estiver utilizando o canal DAHDI/1 pode pegar o fone e chamar a pessoa que
[ 177 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
está no canal SIP/Jane digitando 102. Pela mesma razão, o telefone registrado como
SIP/Jane pode chamar DAHDI/1 digitando 101.
Até agora só foi usado três dígitos, mas é possível utilizar até 80 caracteres, ou seja,
também é possível usar letras, é claro que o terminal vai ter de suportar caracteres.
[interno]
exten => 101,1,Dial(DAHDI/1,,r)
exten => john,1,Dial(DAHDI/1,,r)
exten => 102,1,Dial(SIP/jane,,r)
exten => jane,1,Dial(SIP/jane,,r)
Uso de variáveis
JOHN=DAHDI/1
exten => 555,1,Dial(${JOHN},,r)
Que é igual á:
[globals]
JOHN=DAHDI/1
Ou
[interno]
exten => 123,1,SetGlobalVar(JOHN=DAHDI/1)
[ 178 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Variáveis de Ambiente: são uma forma de acesso as variáveis do ambiente UNIX de
dentro do Asterisk. E são referenciadas na forma de ${ENV(variável)}, onde variável é o
nome da variável UNIX.
Adaptação de modelos
Neste exemplo, o modelo deve adaptar quaisquer extensões de 3 dígitos de 200 a 999
(lembre-se o N adapta qualquer dígito entre 2 e 9, e cada X entre 0 e 9. Isto que dizer que
se um utilizador marcou qualquer extensão de 3 dígitos entre 200 a 999 nesse contexto,
ele deverá ouvir o ficheiro de áudio atuth-tahkyou.gsm.
[ 179 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Bem e se tivermos que saber quais números foram discados em uma adaptação de
contexto? Bem neste caso o Asterisk define a variável de canal ${EXTEN} para os dígitos
que foram marcados. Nós podemos usar uma aplicação chamada SayDigits() para testar
esta funcionalidade.
Agora que já foi apresentado a adaptação de modelos, podemos fazer ligações externas.
Então podemos acrescentar uma variável ao contexto [globals] para definir quais canais
serão utilizados para fazer ligações externas:
[globals]
JOHN=DAHDI/1
JANE=SIP/jane
OUTBOUNDTRUNK=DAHDI/4
Vamos criar um contexto para ligações externas, isto é necessário para colocar um pouco
de segurança, regular e controlar as ligações externas (quem pode fazer ligações
externas). Então vamos criar um contexto chamado [saídas-local]. Vamos usar o número 9
no início, de forma que os utilizadores deveram usar o 9 para chamar um número externo.
[saidas-local]
exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})
exten => _9NXXXXXX,2,Congestion()
exten => _9NXXXXXX,102,Congestion()
Então neste contexto anterior, nós acrescentamos uma variável global chamada
OUTBOUNDTRUNK, que irá controlar qual extensão será utilizada para fazer ligações
externas.
Nós também adicionamos um contexto para ligações externas locais. Na prioridade 1, nós
pegamos a extensão marcada, eliminando o 9 com a sintaxe ${EXTEN:1} e então
tentamos discar aquele número no canal significando pela variável OUTBOUNDTRUNK.
[ 180 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Ao discar o 9 não será fornecido realmente uma linha externa como em um sistema PABX
tradicional, mas sim aparecerá um silêncio, caso queira-se um tom de marcação adicione
ao contexto:
ignorepat => 9
Que diz ao Asterisk para continuar a tocar o tom de marcação mesmo depois de o
chamador discar o 9. É sempre interessante permitir que o plano de marcação possa
marcar para números de emergência:
[saidas-local]
exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})
exten => _9NXXXXXX,2,Congestion()
exten => _9NXXXXXX,102,Congestion()
exten => 190,1,Dial(${OUTBOUNDTRUNK}/190)
Inclusos
O Asterisk permite que utilizemos um contexto dentro de outro contexto por meio da
diretiva include. Assim o include é utilizado para fornecer acesso a diferentes seções do
plao de marcação. Nós utilizaremos a funcionalidade include para permitir que o utilizador
do contexto [interno] (da rede local) tenham a capacidade de fazer chamadas para
telefones externos (rede PSTN, no nosso caso).
Estrutura do include
[globals]
JOHN=DAHDI/1
JANE=SIP/jane
OUTBOUNDTRUNK=DAHDI/4
[ 181 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[entrada]
exten => s,1,Answer()
exten => s,2,Background(enter-ext-of-person)
exten => 101,1,Dial(DAHDI/1,10)
exten => 101,2,Playback(vm-nobodyavail)
exten => 101,3,Hangup()
exten => 101,102,Playback(tt-allbusy)
exten => 101,103,Hangup()
exten => 102,1,Dial(SIP/jane,10)
exten => 102,2,Playback(vm-nobodyavail)
exten => 102,3,Hangup()
exten => 102,102,Playback(tt-allbusy)
exten => 102,103,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(entrada,s,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()
[interno]
include => saidas-local
exten => 101,1,Dial(DAHDI/1,,r)
exten => 102,1,Dial(SIP/jane,,r)
[saidas-local]
exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})
exten => _9NXXXXXX,2,Congestion()
exten => _9NXXXXXX,102,Congestion()
exten => 190,1,Dial(${OUTBOUNDTRUNK}/190)
h (hangup): toda vez que uma chamada é desligada no plano de marcação pelo aplicativo
HangUp() é encaminhada para a extensão h, se houver, no mesmo contexto.
[ 182 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Configurações de IVRs
Qualquer tipo de atendimento automático pode ser configurado no plano de marcação do
Asterisk.
IVR é a abreviatura de Interactive Voice Response. Trate-se de um sistema utilizado por
empresas de call center (atendimento) para que possam ser marcado opções no
atendimento eletrônico.
[ 183 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Criando Facilidades
[ 184 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Segure o diretório pt do lado esquerdo e solte sobre o diretório sounds do lado direito. Vai
abrir a tela de cópia clique no botão “Copy”.
Janela de progresso.
[ 185 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora que o diretório de prompts em português está em nosso Servidor Asterisk, faça o
“reload” no servidor:
Agora ligue do seu telefone IP para a extensão 600, se tudo deu certo o prompts do nosso
Servidor Asterisk estará em português. Caso queira realize os mesmos procedimentos para
prompts “br”.
[ 186 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Hora Certa: vamos criar uma variável global para nossa extensão Hora Certa:
;--------------------------------------------------
; “globals.conf” do Dial Plan do PBX IP Formacao Asterisk
; [globals]
CONSOLE=Console/dsp ;Interface do console para demonstracao
IAXINFO=guest ;IAXtel nome de utilizador e palavra passe
TRUNKMSD=1 ;Digitos MSD para descascar (normalmente 1 ou 0)
FIXO=/DAHDI/G1
MOVEL=/DAHDI/G2
ACH1=SIP/2000
ACH2=SIP/2001&SIP/2002
ACH3=SIP/2003&SIP/2004
ACH3=SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004
HORA=602
;
;----------------------------------------------------
;--------------------------------------------------
; "recursos.conf" do Dial Plan do PBX IP do Asterisk;
;--------------------------------------------------
; Recursos do PBX IP Asterisk
;
[recursos]
;Hello Word
exten => _600,1,Answer()
[ 187 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => _600,2,Playback(hello-word)
exten => _600,3,Hangup()
;Hora certa
exten => ${HORA},1,Answer
exten => ${HORA},n,Wait(1)
exten => ${HORA},n,Set(NumLoops=0)
exten => ${HORA},n(start),Set(FutureTime=$[${EPOCH} + 11],.hours.)
exten => ${HORA},n,Playback(at-tone-time-exactly)
exten => ${HORA},n,GotoIf($["${TIMEFORMAT}" = "kM"]?hr24format)
exten => ${HORA},n,SayUnixTime(${FutureTime},,IM .and. S .seconds. p)
exten => ${HORA},n,Goto(waitloop)
exten => ${HORA},n(hr24format),SayUnixTime(${FutureTime},,k .hours. .and. M.
minutes.)
exten => ${HORA},n(waitloop),Set(TimeLeft=$[${FutureTime} - ${EPOCH}])
exten => ${HORA},n,GotoIf($[${TimeLeft} < 1]?playbeep)
exten => ${HORA},n,Wait(1)
exten => ${HORA},n,Goto(waitloop)
exten => ${HORA},n(playbeep),Playback(beep)
exten => ${HORA},n,Wait(5)
exten => ${HORA},n,Set(NumLoops=$[${NumLoops} + 1])
exten => ${HORA},n,GotoIf($[${NumLoops} < 5]?start)
exten => ${HORA},n,Playback(goodbye)
exten => ${HORA},n,Hangup
;
;---------------------------------------------------
[ 188 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Para montar nossa IVR iremos copiar os prompts fornecido pelo instrutor no seguinte
caminho “/var/lib/asterisk/sounds/pt/custom/”.
;-------------------------------------------------------------
; "atendimento.conf"->“extensions.conf” do Dial Plan do PBX IP Asterisk
;-------------------------------------------------------------
; Configuracao de AAC chamadas com controlo de horario
;[atendimento]
exten => s,1,Answer()
exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
exten => s,n,GotoIfTime(19:00-23:59,*,*,*?boanoite)
exten => s,n,GotoIfTime(00:00-05:59,*,*,*?boanoite)
exten => s,n,GotoIfTime(06:00-07:59,*,*,*?bomdia)
exten => s,n,GotoIfTime(08:00-11:59,*,*,*?bomdiaam)
exten => s,n,GotoIfTime(12:00-12:59,*,*,*?meiodia)
[ 189 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => s,n,GotoIfTime(13:00-17:59,*,*,*?boatarde)
exten => s,n,GotoIfTime(18:00-18:59,*,*,*?boatardepm)
; Bom dia
exten => s,n(bomdia),Wait(3)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/bomdia)
exten => s,n,BackGround(br/custom/atendimento)
exten => s,n,BackGround(br/custom/tenhabomdia)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Bom dia AM
exten => s,n(bomdiaam),Wait(3)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/bomdia)
exten => s,n,BackGround(br/custom/atendimento)
exten => s,n,BackGround(br/custom/tenhabomdia)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Meio dia
exten => s,n(meiodia),Wait(3)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/bomdia)
exten => s,n,BackGround(br/custom/atendimento)
exten => s,n,BackGround(br/custom/tenhabomdia)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Boa tarde
exten => s,n(boatarde),Wait(3)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/boatarde)
exten => s,n,BackGround(br/custom/atendimento)
exten => s,n,BackGround(br/custom/tenhaboatarde)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Boa tarde PM
exten => s,n(boatardepm),Wait(3)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/boatarde)
exten => s,n,BackGround(br/custom/atendimento)
exten => s,n,BackGround(br/custom/tenhaboatarde)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Boa Noite
[ 190 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => s,n(boanoite),Wait(3)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/boanoite)
exten => s,n,BackGround(br/custom/atendimento)
exten => s,n,BackGround(br/custom/tenhaboanoite)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; FIM (reload)
exten => s,n(reload),NoOp(!!! Recarregando o menu !!!)
;
;-----------------------------------------------------
[local]
;Teste do IVR (AAC)
include => dahdi-00-00
[nacional]
[internacional]
;
;---------------------------------------------------------------------
; Configuracao Recebimento de chamadas pela Placa Digium
[dahdi-00-00]
exten => _30XX,1,Answer()
exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)})
exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba)
exten => _30XX,n,Goto(atendimento,s,1)
exten => _30XX,n,HangUp()
;
;----------------------------------------------------------------------
Salve o ficheiro e saia: :wq
[root@pbxip /]# rasterisk -x "reload"
[root@pbxip /]#
[ 191 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Agora realize o reload no Servidor Asterisk e faça o teste marcando para o contexto 3000,
tudo ocorrendo bem deverá ouvir nossa IVR.
Vamos nos aventurar neste metodo, vamos fazer nossa rota de entrada consultar números
de atendimento diferenciados. Os numeros correspondente a um departamento. Caso o
número não seja os da condição o atendimento procede no IVR “atendimento.conf”.
Quando a condição for os númeors do outro departamento (que chamaremos de
corretores) o procedimento de atendimento será no IVR “corretores.conf”.
; Bom dia
exten => s,n(bomdia),Wait(2)
exten => s,n,NoOp(Bloco Bom Dia)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/bomdia)
exten => s,n,BackGround(br/custom/foradehora)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Bom dia AM
exten => s,n(bomdiaam),Wait(2)
exten => s,n,NoOp(Bloco Bom Dia AM)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/bomdia)
[ 192 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => s,n,BackGround(br/custom/dentrodahora)
exten => s,n,Goto(trydial)
; Meio dia
exten => s,n(meiodia),Wait(2)
exten => s,n,NoOp(Bloco Meio Dia)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/bomdia)
exten => s,n,BackGround(br/custom/dentrodahora)
exten => s,n,Goto(trydial)
; Boa tarde
exten => s,n(boatarde),Wait(2)
exten => s,n,NoOp(Bloco Boa Tarde)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/boatarde)
exten => s,n,BackGround(br/custom/dentrodahora)
exten => s,n,Goto(trydial)
; Boa tarde PM
exten => s,n(boatardepm),Wait(2)
exten => s,n,NoOp(Bloco Boa Tarde PM)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/boatarde)
exten => s,n,BackGround(br/custom/dentrodahora)
exten => s,n,Goto(trydial)
; Boa Noite
exten => s,n(boanoite),Wait(2)
exten => s,n,NoOp(Bloco Boa Noite)
exten => s,n,BackGround(br/custom/melodia)
exten => s,n,BackGround(br/custom/boanoite)
exten => s,n,BackGround(br/custom/foradehora)
exten => s,n,HangUp()
exten => s,n,Goto(reload)
; Trydial
exten => s,n(trydial),Dial(${ACH1},60,rTt)
exten => s,n,GotoIf($["${DIALSTATUS}"="ANSWER"]?reload)
exten => s,n,Dial(${ACH2},55,rTt)
exten => s,n,GotoIf($["${DIALSTATUS}"="ANSWER"]?reload)
exten => s,n,Dial(${ACH3},50,rTt)
exten => s,n,Goto(reload)
; FIM (reload)
exten => s,n(reload),NoOp(!!! Recarregando o menu !!!)
[ 193 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
;
;---------------------------------------------------------------
Agora iremos realizar alteração na rota de entradada dahdi-00-00, vamos deixar assim:
[root@pbxip pbxip]# cd ..
[root@pbxip asterisk]# vim extensions.conf
;
;---------------------------------------------------------------------
; Configuracao Recebimento de chamadas pela Placa E1 da Digium
;
[dahdi-00-00]
exten => _30XX,1,Answer()
exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)})
exten => _30XX,n,Set(NUMENTRADA=${EXTEN})
exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba)
exten =>
_30XX,n,GotoIf($[$["${NUMENTRADA}"="3031"]|$["${NUMENTRADA}"="3032"]]?nop)
exten => _30XX,n,Goto(atendimento,s,1)
exten => _30XX,n(nop),Goto(corretores,s,1)
exten => _30XX,n,HangUp()
;
;---------------------------------------------------------------------
Salve o ficheiro e saia: :wq
;---------------------------------------------------------------------
; Include PBX IP - Formação Asterisk
;
#include pabx/general.conf
#include pabx/globals.conf
#include pabx/facilidades.conf
#include pabx/atendimento.conf
#include pabx/corretores.conf
;---------------------------------------------------------------------
Salve o ficheiro e saia: :wq
[ 194 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
O correto para este contexto funcionar em uma placa Digium é como o descrito abaixo:
;--------------------------------------------------
; Configuracao Recebimento de chamadas pela Placa E1 da Digium
;[dahdi-00-00]
;exten => _X.,1,Answer()
;exten => _X.,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => _X.,n,Set(NUMENTRADA=${EXTEN})
;exten => _X.,n,AGI(blacklist_entrante.php,${CALLERID})
;exten => _X.,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten =>
_X.,n,GotoIf($[$["${NUMENTRADA}"="0531"]|$["${NUMENTRADA}"="8397"]]?nop)
;exten => _X.,n,Goto(telemarketing,s,1)
;exten => _X.,n(nop),Goto(corretores,s,1)
;exten => _X.,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM da Digium canal 00
;[dahdi-01-00]
;exten => s,1,Answer()
;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,n,Goto(atendimento,s,1)
;exten => s,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM da Digium Canal 01
;[dahdi-01-01]
;exten => s,1,Answer()
;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,n,Goto(atendimento,s,1)
;exten => s,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM Digium Canal 02
;[dahdi-01-02]
;exten => s,1,Answer()
;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,n,Goto(atendimento,s,1)
;exten => s,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM Digium Canal 03
;[dahdi-01-03]
;exten => s,1,Answer()
;exten => s,1,Set(ARQGRAVA=${CDR(uniqueid)})
[ 195 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
;exten => s,2,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,3,Goto(atendimento,s,1)
;exten => s,4,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM Digium Canal 00
;[dahdi-02-00]
;exten => s,1,Answer()
;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,n,Goto(atendimento,s,1)
;exten => s,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM Digium Canal 01
;[dahdi-02-01]
;exten => s,1,Answer()
;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,n,Goto(atendimento,s,1)
;exten => s,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM Digium Canal 02
;[dahdi-02-02]
;exten => s,1,Answer()
;exten => s,n,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,n,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,n,Goto(atendimento,s,1)
;exten => s,n,HangUp()
;
;-------------------------------------------------
; Configuracao De Entrada Placa GSM Digium Canal 03
;[dahdi-02-03]
;exten => s,1,Answer()
;exten => s,1,Set(ARQGRAVA=${CDR(uniqueid)})
;exten => s,2,MixMonitor(${ARQGRAVA}.wav,ba)
;exten => s,3,Goto(atendimento,s,1)
;exten => s,4,HangUp()
;
;---------------------------------------------------
[ 196 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
A IVR deve ter o menu principal “Você ligou para a empresa XPTO. Digite 1 para Suporte
ao GNU/Linux, 2 para Comercial ou 9 para falar com a telefonista”. Caso seja digitado mais
de 3 vezes uma opção incorreta ou não for digitado nada a chamada deverá ser
direcionada para a telefonista. Antes de direcionar para a extensão correspondente deve
ser tocada a mensagem “Por favor aguarde estamos transferindo sua chamada”.
Inicialmente vamos criar duas extensões no contexto [local] para efetuar a gravação das
mensagens e uma exten para acessar o IVR para os testes funcionais.
;--------------------------------------------------
; "extensions.conf" o Dial Plan do PBX IP Asterisk;
;--------------------------------------------------
; Includes PBX IP Asterisk
;
#include pabx/general.conf
#include pabx/globals.conf
#include pabx/recursos.conf
#include pabx/atendimento.conf
;---------------------------------------------------
; Configurações das extensões
;
[interno]
Include => local
[externo]
include => local
include => nacional
include => internacional
[local]
;Teste do IVR (AAC)
include => dahdi-00-00
[ 197 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => _20XX,n,HangUp()
[nacional]
[internacional]
;
;---------------------------------------------------------------------
; Configuracao Recebimento de chamadas pela Placa Digium
[dahdi-00-00]
exten => _30XX,1,Answer()
exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)})
exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba)
exten => _30XX,n,Goto(atendimento,s,1)
exten => _30XX,n,HangUp()
;
;---------------------------------------------------
Quando for digitidado *99 ou *98 você vai ouvir um bip; após o qual você deve falar a
mensagem. Quando terminar pressione # (sustenido), após 1 segundo será reproduzido a
mensagem de áudio que você gravou. Repita a operação, quantas vezes achar necessário.
;-------------------------------------------------------
; IVRIMPUT do Dial Plan do PBX IP Asterisk
[ivrimput]
exten => s,1,Answer()
exten => s,n,Set(CONTADOR=0)
[ 198 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
exten => s,n(inicio), Background(saudacao)
exten => s,n,WaitExten(3)
exten => s,n,Goto(i,1)
;--------------------------------------------------
; "extensions.conf" - O plano de marcação do Asterisk;
;--------------------------------------------------
; Includes PBX IP – Formacao Asterisk
;
#include pbxip/general.conf
#include pbxip/globals.conf
#include pbxip/recursos.conf
#include pbxip/atendimento.conf
#include pbxip/corretores.conf
#include pbxip/ivrimput.conf
;---------------------------------------------------
; Configurações das extensões
;
[interno]
Include => local
[externo]
include => local
include => nacional
include => internacional
[ 199 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
[local]
;Teste do IVR (AAC)
include => dahdi-00-00
;Teste do IVRIMPUT
include => ivrimput
[nacional]
[internacional]
;
;---------------------------------------------------------------------
; Configuracao Recebimento de chamadas pela Placa Digium
[dahdi-00-00]
exten => _30XX,1,Answer()
exten => _30XX,n,Set(ARQGRAVA=${CDR(uniqueid)})
exten => _30XX,n,MixMonitor(${ARQGRAVA}.wav,ba)
exten => _30XX,n,Goto(atendimento,s,1)
exten => _30XX,n,HangUp()
;
;---------------------------------------------------
[ 200 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Consideração sobre a configuração da IVR
Na IVR utilizamos a extensão especial “s” pois não havia dígitos que necessitassem serem
reconhecidos para iniciar seu fluxo. Foi criado o código *97 no contexto [local] para
encaminhar a chamada para o IVRIMPUT. Com o “Set” setamos a variável ${CONTADOR}
que servirá como controle das repetições. Em “s,n(inicio)” é tocada a mensagem de
saudação com o aplicativo Background() pois não queremos que o utilizador tenha de
esperar até o final da mensagem para digitar a opção desejada.
Com “s,n,WaitExten()” esperamos por 3 segundos o utilizador digitar algo se anda não o
tiver feito. Caso nada seja digitado até o limite de 3 segundos, o script irá para a linha
seguinte que direciona para o incremento da variável ${CONTADOR}.
Caso seja pelo utilizador marcado 1, a chamada irá então para a extensão 2000.
Caso seja pelo utilizador marcado 2, a chamada irá então para a extensão 2001.
Caso seja pelo utilizador marcado 3, a chamada irá então para a extensão 2002.
Teste o funcionamento da IVR marcando o código *97 do seu softphone. Seguindo esse
modelo você estará apto a criar IVRs com diversos níveis sem a necessidade de qualquer
módulo externo. Pesquise sobre os aplicativos disponíveis no Asterisk para configurar
estruturas cada vez mais elaboradas.
[ 201 ]
Asterisk InProprietário, A Telefonia Hoje! 2014
Configuração de Hardware
Texto do livro.
Importante: Para novos capítulos, copie e cole o título de acordo com a formatação acima.
Isso garantirá que o índice seja refeito de forma automática.
Ao terminar o livro, vá ao índice, clique com o botão direito do mouse e selecione a opção
de atualizar.
[ 202 ]