
Como construir e configurar um PABX com software livre
Abordando a versão 1.4
Flavio E. Gonçalves
Quarta Geração
1º. Edição/Dezembro/2008
rev. 9
Florianópolis-SC-Brasil/2006
Copyright 2005© por Flavio E. Gonçalves
Todos os direitos reservados
Capa: Karla Braga
Revisão: Guilherme Waltrick Goes

Atendimento: oops@asteriskguide.com
Todos os direitos reservados. É proibida a reprodução total ou parcial deste livro.
Esta é a quarta geração do eBook Asterisk Guia de Configuração, a primeira foi lançada em março de 2005. Fiz o teste do dCAP da Digium em Maio de 2006 e tive o privilégio de passar na primeira tentativa, o livro ajudou bastante, apenas dois dos vinte alunos do Asterisk Bootcamp passaram no dCAP. O material contido neste livro tem quase tudo referente ao teste. O principal objetivo desta revisão foi a atualização para a versão 1.4, contudo o leitor pode se deparar com exemplos referentes às versões anteriores.
A forma de comercialização do livro também mudou, privilegiando os eBooks. Estes possuem diversas vantagens, a primeira é ecológica, evitar o uso do papel. Outros pontos que posso citar são a facilidade de transporte e pesquisa associada ao documento eletrônico armazenado dentro de um “laptop” ou “pendrive”. A parte ruim fica por conta da pirataria, que tento minimizar com uma tarja cinza como fundo do livro. Sei que é difícil combater a pirataria e vai da consciência de cada um.
O Asterisk PBX é revolucionário nas áreas de telefonia IP e PABX baseado em software. Durante anos, o mercado de telefonia foi ligado a equipamentos proprietários, fabricados por grandes companhias. A convergência de dados e voz, em pouco tempo vai fazer com que a telefonia seja apenas mais uma aplicação das redes, tornando os atuais equipamentos PABX obsoletos. Com a entrada do Asterisk, mais e mais empresas poderão experimentar recursos como URA - Unidade de Resposta Audível, DAC – Distribuição Automática de Chamadas, mobilidade, correio de voz e conferência, antes restritas a poucos usuários.
Não tive a pretensão de ensinar tudo que existe sobre o Asterisk, pois isto seria muito difícil. Minha proposta neste material é proporcionar ao leitor acesso aos principais recursos e a partir deles descobrir e implantar recursos mais avançados. Eu espero que vocês se divirtam tanto, aprendendo o Asterisk quanto eu me diverti escrevendo sobre ele.
Flávio Eduardo de Andrade Gonçalves
Diretor Geral
V.Office Networks
flavio@asteriskguide.com
Além de agradecer minha família que tem sempre me apoiado, gostaria de agradecer a todos os colaboradores do livro ao longo destes três anos e abro aqui uma lista dos principais:
Ana Cristina Gonçalves – Logística
Karla Braga – Fotos e Capa
Guilherme W. Góes, dCAP – Texto e Revisão
Luis F. Gonçalves – Revisão da versão em Inglês
Oswaldo Fueyo – Versão em espanhol
Hector Kee – Revisão em espanhol
Felipe Pasa, dCAP – Revisão e testes no R2 digital e DAC
Paulo Benatto – Contribuição nos capítulos de interface gráfica
Várias designações são marcas registradas. Onde as encontramos e pudemos identificar elas começam com letras maiúsculas. As marcas Digium, Asterisk, IAX e DUNDi, são marcas registradas da Digium Inc. Este trabalho não é patrocinado nem endossado pela Digium Inc.
Todas as pessoas que eu conheço detestam ser criticadas. Eu não me excluo desse grupo, mas gostando ou não, as críticas, quando construtivas, são a melhor forma de evolução e melhoria constante. Este livro e o curso no qual se baseia tiveram uma boa retroalimentação de alunos e leitores durante os anos de 2005 e 2006. Os capítulos de bilhetagem e uma abordagem mais profunda de AMI e AGI contida no capítulo quatorze foram sugestões de usuários. Outra sugestão acatada foi o uso de placas Digium e configuração real nos cursos.
Por mais que nos esforcemos, sempre existem erros de grafia e conteúdo. Ficamos agradecidos a qualquer um que os aponte e nos permita corrigir. Quaisquer erros podem ser comunicados em:
oops@asteriskguide.com
Definições e conceitos básicos
Roda no Linux e é código aberto
Principais objeções ao Asterisk
A participação de mercado do Asterisk é muito pequena?
Se é gratuito como o fabricante sobrevive?.
Como encontro suporte técnico?
O Asterisk não suporta mais de 200 ramais?
Só “nerds” conseguem instalar o Asterisk!
Nossa empresa não usa software livre!
Usar a CPU do PC para processar o áudio é condenável!
Diferenças entre o velho e o novo mundo
Telefonia usando o velho modelo de PABX/Softswitch
Construindo um sistema de testes
Provedor de serviço VoIP, softfone ou ATA
Placa clone FXO, softfone ou ATA
Atualização de PABX existente para suportar VoIP.
Interligação de filiais através de VoIP
Servidor de aplicações (URA, Conf., Voicemail)
Plataforma para central de atendimento
Encontrando informações e documentação
Baixando e instalando o Asterisk
Questões de compartilhamento de IRQ
Escolhendo uma distribuição do Linux.
Instalando o Linux para atender ao Asterisk.
Preparando o Debian para o Asterisk.
Obtendo e compilando o Asterisk
Iniciando e parando o Asterisk
Parâmetros de linha de comando do Asterisk.
Abaixo os parâmetros disponíveis
Diretórios de instalação do Asterisk.
Arquivos de log do Asterisk e rotação de logs,
Iniciando o Asterisk usando um usuário diferente de root.
Considerações sobre a instalação do Asterisk
2.11.2 Considerações sobre a rede
Primeiros passos usando Asterisk
Gramática dos arquivos de configuração
Formato de objeto com herança de opções
Configurando uma interface com a rede pública
Instalando a placa X100P clone
Configuração direta nos Arquivos SIP
Introdução ao plano de discagem
Criando um plano de discagem simples
Interligando canais com a aplicação dial()
Ligando para a rede pública usando a placa zaptel
Recebendo ligações usando auto-atendimento.
Interfaces de acesso a rede pública
Usando Interfaces FXS, FXO e E+M
Interfaces FX (Foreign eXchange)
FXS (Foreign eXchange Station)
Configurando um canal de telefonia no Asterisk
Procedimentos gerais de configuração válidos nos dois casos
Exemplo 1 - Instalação de uma porta FXO e outra FXS
Opções de configuração do arquivo chan_dahdi.conf
Opções gerais, independentes do tipo de canal
Identificação do assinante em linhas analógicas
Enviando CallerID para portas FXS
Opções de acompanhamento da chamada
Opções para telefones ligados a linhas FXS
De linhas analógicas para digitais
Multiplexação por Divisão de Tempo
Escolhendo uma placa de telefonia para seu Asterisk.
Uso de cancelamento de eco por hardware
Configurando um canal de telefonia no Asterisk
Opções de configuração do arquivo chan_dahdi.conf
Opções gerais, independentes do tipo de canal
Opções para conexões com rede ISDN
Opções de identificador de chamadas (Caller ID).
Seqüência de uma chamada MFC/R2
Debugando a chamada com OpenR2
Projetando redes com voz sobre IP
Arquitetura do Asterisk e voz sobre IP
Como escolher um protocolo de sessão
SIP (Session Initiated Protocol)
MGCP (Media Gateway Control Protocol)
Tabela de comparação entre os protocolos
Overhead causado pelos cabeçalhos.
Matriz de interesse de tráfego
Estratégias de redução do uso de banda passante
Compressão de cabeçalho RTP (cRTP)
5.11.3 Aumentando a Carga de Voz
Formato de uma conexão de saída.
Formato de uma conexão de entrada
Conectando um softfone IAX ao Asterisk
Conectando-se a um provedor baseado em IAX2
Laboratório – Conectando-se ao FreeWorldDialup usando IAX
Interligando dois Asterisk com o IAX em modo trunk.
Restrições baseadas em endereço IP
Interligando dois servidores Asterisk (forma simplificada)
Configuração do arquivo iax.conf
SDP (Protocolo de descrição da sessão)
Cenários avançados na utilização do SIP
Conexão de um servidor Asterisk a um provedor SIP.
Conectando dois servidores Asterisk utilizando SIP
O suporte do Asterisk a domínios
Configuração do codec a ser utilizado
Opções de marcação de pacotes para QoS
Restricted Cone (Cone Restrito)
Port Restricted Cone (Cone restrito por porta)
Sinalização SIP e trafego RTP através do NAT
Textos de discagem utilizados com o SIP
Comandos de console relacionados a SIP
Estrutura do arquivo extensions.conf
Variáveis específicas de aplicações
Variáveis específicas para Macros
Laboratório – Expressões Regulares
Construindo um plano de discagem
Discando para um destino externo.
Discando 0 para pegar uma linha externa.
Forçar a utilização de uma única operadora
Encaminhado as chamadas para uma telefonista.
Tocando várias extensões simultaneamente
Roteamento pelo originador da chamada
Usando variáveis no plano de discagem
Criando um plano de discagem simples
Central de quatro portas FXO e 16 ramais SIP.
Central com um E1 de 15 canais e 50 ramais SIP
Lógica dentro do plano de discagem
Recursos avançados do plano de discagem
Recepção de chamadas com uma URA
Configurações de timeout importantes
Laboratório – Criando uma URA passo a passo
Processo “encontra enquanto você disca”.
Utilização da aplicação read()
Encaminhar chamadas para outro servidor Asterisk
Ordem de processamento do plano de discagem
Enviar uma mensagem de voz para o e-mail
Personalização da mensagem de email
Interface web para o correio de voz
Notificações do correio de voz
Laboratório - Notificações do correio de voz no telefone
Laboratório - Utilizando a aplicação directory()
Funções, aplicações e comandos da CLI que envolvem o AstDB
Configuração do siga-me e não perturbe (DND)
Limitação de ligações simultâneas
Laboratório – Configuração de um PABX
Passo 1 - Configurando os canais.
Passo 2 - Configurando o plano de discagem
Funcionalidades disponibilizadas no Asterisk
10.2.2 Funcionalidades configuradas no plano de discagem
Funcionalidades configuradas no telefone
Captura de chamadas (call pick-up)
Edite os arquivos para habilitar música em espera
Distribuição automática de chamadas.
Aplicações relacionadas ao DAC
A aplicação removeQueueMember()
Formato dos bilhetes do Asterisk
Códigos de conta e contabilização automática.
Métodos de armazenamento do CDR
Drivers de armazenamento disponíveis
Armazenando em uma base de dados MySQL.
Alterando o formato da bilhetagem
Aplicações e funções relacionadas à bilhetagem
A aplicação AppendCDRUserField()
Usando as senhas do Correio Eletrônico
Distribuições fáceis de instalar
Lab 14.1 Configuração básica usando o FreePBX
Relatórios, Painel e Gravações
Recursos para desenvolvimento e integração de aplicações
Principais formas de estender o Asterisk
Estendendo o Asterisk através do console
Estendendo o Asterisk usando o aplicativo System()
Configurando usuários, permissões e fazendo login
Modo de funcionamento do Asterisk Real Time
Laboratório 1: Instalando o Asterisk Real/Time
Configurar o Asterisk Real Time.
Criando um plano de discagem Realtime.
Laboratório 2 – Instalar o banco e criar as tabelas
Laboratório 3 – Configurar e testar o ARA
Protocolos auxiliares ao H.323
H.225 RAS (Registro, admissão e status)
Instalação do H.323 no Asterisk
Onde encontrar mais informações
1
O Asterisk PBX é um poderoso software que permite transformar um ordinário PC em uma poderosa central telefônica multi-protocolo. Neste capítulo, você aprenderá sobre as possibilidades que o Asterisk pode lhe proporcionar e um pouco sobre a sua arquitetura básica. Recentemente tem crescido a popularidade de distribuições prontas como o TrixBox e o AsteriskNOW. Neste livro vamos abordar o Asterisk normal, pois ele é a base para entendermos as distribuições prontas. As distribuições prontas estão ajudando muita gente a instalar e usar o Asterisk, pois eliminam a necessidade de conhecer o Linux. Você pode usá-las mais tarde para acelerar o seu trabalho. Teremos um capítulo específico para as interfaces gráficas AsteriskGUI e FreePBX que compõe as principais distribuições prontas.
Ao final deste capítulo você estará apto à:
O Asterisk é um software de PABX que usa o conceito de software livre. Ele é licenciado através de uma licença do tipo GPL – Gnu Public License. A Digium, empresa que promove o Asterisk, investe em ambos, o desenvolvimento do código fonte e em hardware de telefonia de baixo custo que funciona com o Asterisk. O Asterisk opera sobre uma plataforma Linux ou outras plataformas Unix com ou sem hardware conectado à rede pública de telefonia.
O Asterisk permite conectividade em tempo real entre a rede pública de telefonia e redes VoIP. A rede pública de telefonia é freqüentemente referida pela sua sigla em inglês PSTN (Public Switched Telephony Network).
O Asterisk é muito mais que um PABX padrão. Com ele você não apenas tem um excepcional upgrade do seu PABX “convencional”, como também adiciona novas funcionalidades a ele, tais como:
O Asterisk inclui muitos recursos que só eram encontrados em sistemas de mensagem unificada “topo de linha” como:
· Música em espera para clientes esperando nas filas, com suporte a streaming de media, bem como música em formato MP3.
· Filas de chamada onde agentes de forma conjunta atendem as chamadas e monitoram a fila.
· Integração com softwares para a sintetização da fala (text to speech).
· Registro detalhado de chamadas (call detail records) para integração com sistemas de tarifação e bancos de dados SQL.
· Integração com reconhecimento de voz (automatic speech recognition).
· A habilidade de interfaceamento com linhas telefônicas normais, ISDN em acesso básico (2B+D) e primário (30B+D).
O Asterisk na sua forma pura, também conhecido como Asterisk Classic (denominação do pacote Debian) hoje esta sendo considerado muito mais como um toolkit (ferramenta de desenvolvimento) do que propriamente um produto acabado. O AsteriskNOW é uma iniciativa em transformar o Asterisk em um “software appliance”. A distribuição inclui um Linux customizado, uma interface gráfica e todo o software necessário para rodar o Asterisk. A distribuição é GPL de forma que você pode baixar e usar gratuitamente. Nos últimos anos tem crescido muito o uso de distribuições como o TrixBox e o AsteriskNow é certamente uma resposta a este movimento. Podemos dizer que este livro também.
A Digium é baseada em Huntsville, Alabama e é a criadora e desenvolvedora primária do Asterisk, o primeiro PABX de código aberto da indústria. Metade do desenvolvimento é feito pela empresa e metade pela comunidade. Quando usado em conjunto com as placas de telefonia PCI, ele oferece excelente relação custo/benefício para o transporte de voz e dados sobre arquiteturas TDM, comutadas e redes baseadas no protocolo IP.
Ela é hoje é a principal patrocinadora do Asterisk e uma dos líderes na indústria de PABX em código aberto. Mark Spencer, seu CTO foi o criador do Asterisk e é hoje um dos nomes mais respeitados na indústria de telefonia IP.
A Digium oferece o Asterisk em três tipos de licenciamento:
· Asterisk GPL (GNU Public License). A licença GPL é a mais encontrada, ela permite que você use e altere o código. A restrição existente é que quaisquer alterações no código fonte têm de ser redistribuídas. Em outras palavras, se você altera o código fonte do Asterisk tem de fornecer as modificações.
· Asterisk Business Edition. É uma licença comercial do Asterisk. Ela não possui recursos adicionais em comparação com a versão GPL, com exceção da proteção contra cópia. A grande vantagem da licença comercial é para desenvolvedores que não desejam abrir o código fonte de seus produtos e não podem ou não querem usar a versão GPL.
· Asterisk OEM. Foi criado para fabricantes de centrais telefônicas que não desejam mostrar aos seus clientes que a central é baseada em Asterisk.
O projeto ZAPATA foi conduzido por Jim Dixon. Ele é o responsável pelo desenvolvimento do hardware da DIGIUM. É interessante ressaltar que o hardware também é aberto e pode ser produzido por qualquer empresa. Hoje a placa com quatro E1/T1s é produzida pela Digium, Sangoma, OpenVox, entre outras. A história do projeto zapata pode ser vista em:
http://www.asteriskdocs.org/modules/tinycontent/index.php?id=10)
De qualquer forma, nos últimos anos tem havido um movimento forte na adoção de SIP Trunking o que deve levar a uma redução do mercado de placas de telefonia a médio e longo prazo.
O Asterisk traz uma mudança profunda nos paradigmas de comercialização e implantação de sistemas de telefonia. Vamos mostrar algumas razões que estão catalisando este movimento em direção a plataforma de telefonia IP com software livre. O AsteriskNOW torna a instalação e a operação fáceis através de um CD de auto-instalação e uma interface gráfica.
Sistemas abertos mudam a relação de poder. Eles dão poder ao usuário enquanto sistemas proprietários dão poder ao fornecedor. Se você possui um sistema aberto, pode escolher o fornecedor de interfaces, telefones e serviços. Se, no entanto seu sistema usar tecnologia proprietária, o fabricante tem o poder de indicar os equipamentos e serviços dando para você muito menos poder de barganha.
É um dos principais fatores que estão catalisando a adoção do Asterisk. Além do custo dos equipamentos, o Asterisk está sendo adotado, muitas vezes, em conjunto com operadoras VoIP com forte redução nas contas de telefonia. Esta redução ocorre por causa das baixas tarifas das operadoras VoIP e também pela comunicação com filiais, funcionários e representantes por linhas de dados existentes e pela Internet.
Se o custo do Asterisk for comparado com centrais digitais com os mesmos recursos, o Asterisk é sem dúvida, muito mais econômico. Recursos como correio de voz e distribuição automática de chamadas sempre foram muito dispendiosos em plataformas tradicionais de telefonia.
Este é um dos benefícios mais citados, ao invés de esperar alguém configurar o seu PABX proprietário (alguns nem mesmo dão a senha para o cliente final), configure você mesmo! Total liberdade de configuração e personalização.
A melhoria da produtividade vem dos recursos avançados que o sistema proporciona, como por exemplo, diretório dos usuários, o que reduz o tempo em que os usuários ficam procurando telefones dentro da empresa. Um auto-atendedor com unidade de resposta automática que direciona automaticamente as ligações sem precisar de uma telefonista. Discagem a partir do Outlook. Chamada da tela do contato no Outlook quando uma chamada é recebida entre outros. Existem ganhos de produtividade também associados a administração do PBX que agora não mais depende do fabricante da central. Através de uma interface gráfica e amigável, é possível criar ramais, salas de conferência e gerir a central.
A melhoria no atendimento pode ser sentida com recursos como correio de voz e registro de chamadas perdidas. Estes recursos permitem a empresa retornar sempre as ligações e manter uma comunicação mais rápida com o cliente. O uso de unidade de resposta automática, filas de atendimento e música em espera permitem tornar o Asterisk uma excepcional central de atendimento.
Uma das coisas mais fantásticas do Linux é a comunidade de software livre. Quando eu acesso o Wiki (www.voip-info.org), ou os fóruns de software em código aberto eu percebo que a adoção de usuários é muito rápida, milhares de questões e relatos de problemas são enviados todos os dias. O Asterisk é provavelmente um dos softwares que mais pessoas têm disponíveis para testes e avanços. Entre a versão 1.0 e a 1.2, mais de 3000 modificações ou correções foram efetuadas. Isto torna o código estável e permite a rápida resolução de problemas.
É comum ouvirmos também objeções ao Asterisk. Vamos rebater algumas destas objeções abaixo:
A participação no mercado é medida na maioria das vezes através do volume de vendas. Como o Asterisk é um software gratuito, ele não aparece nas estatísticas de vendas de PABX IP. No entanto são 1 milhão de downloads por ano e mais de 300.000 sistemas instalados. Este volume de sistemas é estimado pelo número de placas vendidas anualmente. De acordo com a VoIP-Supply (blog.voipsupply.com), distribuidor voltado ao mercado de VoIP, estima-se que a Digium tenha vendido mais de quatro milhões de portas de gateway (FXS, FXO e E1).
A Digium é uma companhia com 120 funcionários muito bem capitalizada. Ela sobrevive da venda de placas de telefonia (analógicas e digitais), da venda do PBX baseado em Asterisk chamado Switchvox, licenciamento de software comercial, treinamento e serviços. A empresa demonstrou lucro nos últimos 24 trimestres (Jun/2008).
A Digium fornece suporte técnico para aqueles que compram a versão “Business Edition”. Nos últimos anos centenas de profissionais certificados conhecidos como dCAP (Digium Certified Asterisk Professional) foram formados. Eles constituem a primeira linha para suporte e implantação de Asterisk. Este esquema é muito semelhante ao usado por todos os outros fabricantes de equipamentos para telefonia IP.
Isto não é verdade. Um único servidor é capaz de suportar centenas de ligações simultâneas e milhares de ramais. O Asterisk é altamente escalonável com o uso de balanceadores de carga e um projeto adequado.
Com o AsteriskNOW qualquer profissional de redes com algum conhecimento de telefonia é capaz de instalar e configurar. Usando uma interface gráfica é possível em menos de uma tarde ter um sistema básico operacional.
Uma das vantagens do Asterisk é poder ser usado em sistemas com tolerância a falhas. É relativamente simples e barato possuir dois servidores em paralelo. Tente fazer isso com uma central digital convencional!
Sua empresa provavelmente já usa software livre, apenas ainda não se deu conta. Boa parte dos dispositivos embarcados e “appliances” usam Linux (software livre) como sistema operacional, então existe uma grande chance de você já estar usando software livre. O software dos principais fornecedores de telefonia IP também roda sobre Linux que é livre. Se sua empresa tem uma política contra o uso de software livre você pode licenciar a versão “Business Edition”
O Asterisk usa a CPU do servidor para processar os canais de voz, ao invés de ter um DSP (processador de sinais digitais) dedicado a cada canal. Enquanto isto permitiu que o custo fosse reduzido para as placas E1/T1em até quatro vezes, tornou o sistema, sim, dependente do desempenho da CPU. Com um dimensionamento correto, o Asterisk é capaz de lidar com grandes volumes de chamadas. Recentemente a Digium lançou uma placa chamada TC400B com DSPs para aqueles que desejam processar a voz (transcodificação, cancelamento de eco e dtmf) em processadores de sinais digitais (DSPs) dedicados sem usar a CPU principal do computador. Esta placa possui um custo bastante razoável se comparado com o custo de licenciamento individual do code G.729 já embutido.

Um canal é o equivalente a uma linha telefônica na forma de um circuito de voz digital. Ele geralmente consiste de ou um sinal analógico em um sistema POTS[1] ou alguma combinação de CODEC e protocolo de sinalização (GSM com SIP, Ulaw com IAX). No início as conexões de telefonia eram sempre analógicas e por isso, mais suscetíveis a ruídos e eco. Mais recentemente, boa parte da telefonia passou para o sistema digital, onde o sinal analógico é codificado na forma digital usando normalmente PCM (Pulse Code Modulation). Isto permite que um canal de voz seja codificado a uma taxa de 64 kilobits/segundo.
Canais para acesso a rede pública de telefonia:
Canais para uso com voz sobre IP
· chan_sccp: Protocolo Skinny – Padrão de telefonia IP da Cisco
Nota: Uma lista completa dos canais pode ser encontrada em http://www.voip-info.org/wiki-Asterisk+channels
Canais com uso específico no Asterisk
O papel dos CODECs (COder/DECoder) é codificar a voz em um formato específico para transporte em uma rede digital. Cada tipo de CODEC possui um uso específico. Alguns como o g.729, por exemplo, permitem que se codifique o sinal de áudio à velocidade de 8 kilobits/segundo, uma compressão de 8 para 1 em comparação com a codificação PCM (Pulse Code Modulation) usada na rede pública. Além disso, a codificação de voz permite a utilização de diversas outras funcionalidades, como por exemplo:
Existem diversos CODECs que se pode utilizar, sendo que o Asterisk pode fazer a tradução de um CODEC para outro de forma transparente. Entretanto, alguns codecs no Asterisk são suportados apenas no modo “passa-direto (pass-through)”, em outras palavras, eles não podem ser traduzidos, dado que o Asterisk não entende o fluxo de bits utilizado por eles.
O Asterisk suporta os seguintes CODECs:
Enviar dados de um telefone a outro seria fácil se os dados encontrassem seu próprio caminho para o outro telefone. Infelizmente isto não acontece, é preciso um protocolo de sinalização para estabelecer as conexões, determinar o ponto de destino, e também questões relacionadas à sinalização de telefonia. O Asterisk suporta os seguintes protocolos de sessão para voz sobre IP.
Para conectar as chamadas de entrada com as chamadas de saída ou outros usuários do Asterisk são usadas diversas aplicações como o Dial(), por exemplo. A maior parte das funcionalidades do Asterisk é criada na forma de aplicações como, por exemplo, correio de voz (voicemail()), conferência (meetme()), ente muitas outras. Você pode ver as aplicações disponíveis no Asterisk usando o comando:
CLI>core show applications
Além das aplicações na versão padrão existem aplicações que podem ser adicionadas a partir do arquivo asterisk-addons e de terceiros. Você mesmo pode desenvolver as suas próprias aplicações se este for o caso.

O Asterisk é um PABX multi-protocolo que integra tecnologias como TDM[2] e telefonia IP com funcionalidades avançadas como URA, DAC e correio de voz. Neste momento, é provável que você não esteja entendendo todos estes termos, mas ao longo dos capítulos, você estará cada vez mais familiarizado. Na figura acima podemos ver que o Asterisk pode se conectar a uma operadora de telecomunicações ou um PABX usando interfaces analógicas ou digitais. Os telefones podem ser IP. Ele pode atuar como um softswitch, media gateway, correio de voz, servidor de conferência e possui um mecanismo de música em espera interno.

Antes do Asterisk, os diversos componentes de telefonia eram fornecidos como unidades separadas. Os custos e riscos eram altos e a maior parte dos equipamentos proprietária.

Com o Asterisk é possível ter todas estas funções de forma integrada. O licenciamento é gratuito (GPL General Public License) e pode ser feito em um único ou em vários servidores de acordo com um dimensionamento apropriado. Algumas vezes, é mais fácil implantar o Asterisk do que até mesmo especificar e licenciar um sistema de telefonia convencional.

É comum iniciar construindo uma máquina de teste. A máquina de teste mais simples é um PABX 1x1 com pelo menos uma linha e um telefone. Existem várias formas de fazê-lo, vamos examinar algumas.
A forma mais simples de criar um sistema de teste é usar uma placa com uma porta FXO e uma FXS como uma Digium TDM400. Conecte a porta FXO a uma linha telefônica comum e um telefone normal (analógico) à porta FXS, com isso você tem o PABX 1x1.
Uma forma bastante econômica é criar um Asterisk de teste puramente baseado em IP. Você pode contratar um número de telefone junto a um provedor de serviços de voz sobre IP. Existem vários operando e algumas operadoras tradicionais já oferecem este serviço. Na parte do telefone você pode usar um softfone gratuito, existem vários como o Idefisk, X-Lite e SJPhone. Você pode também adquirir um adaptador de telefonia analógica (ATA) para ligar telefones analógicos a ele.
Esta é a forma que eu usei para testar o Asterisk. Existem algumas placas de fax/modem padrão V.90 que operam com o Asterisk. As placas X100P e X101P da Digium eram baseadas nestes chips. É possível conectar uma linha telefônica em uma placa destas. Depois que a Digium descontinuou a produção, alguns fabricantes passaram a produzir estas placas com o nome X100P clone. Elas possuem um baixo custo por porta se comparadas as placas fabricadas pela Digium.
Existem diferentes cenários onde o Asterisk pode ser usado. Vamos listar alguns, explicando as vantagens e possíveis limitações.
O cenário mais comum é a instalação de um novo PABX ou a substituição de um PABX existente. Se você comparar o Asterisk com outras alternativas, irá descobrir que ele possui uma excelente relação custo/benefício, contra centrais digitais e principalmente IP.

Você pode ver na imagem abaixo um dos cenários mais comuns. As grandes companhias normalmente não desejam assumir grandes riscos e querem preservar investimentos já feitos. Habilitar uma central antiga para o mundo IP usando o Asterisk pode ser uma alternativa excelente. Com isso é possível usar telefones IP, ATAs e softfones em escritórios remotos e mesmo se conectar a provedores de serviço com melhores taxas.

Uma aplicação muito útil para VoIP é a conexão de filiais usando uma rede WAN existente ou mesmo a Internet. Isto permite a você evitar as tarifas das operadoras para as ligações entre a matriz e as filiais. É possível inclusive, utilizar como saída os troncos existentes nas filiais a partir de outros escritórios, de forma que não seja necessário pagar as taxas de telefonia interurbana.

Você pode usar também o Asterisk como um servidor de aplicações para um PABX existente ou conectado diretamente à rede pública. O Asterisk pode fazer os papeis de correio de voz, recepção de fax, gravação de chamadas, URA conectada a um banco de dados ou mesmo um servidor de áudio conferência. Se você integrar o Asterisk ao e-mail você terá um sistema de mensagens unificado que é uma solução muito dispendiosa em outras plataformas. Para estas aplicações o Asterisk é uma excelente opção com um custo relativamente pequeno.

A maioria dos provedores de voz sobre IP usam um SIP proxy para fazer o registro, localização e autenticação dos usuários. De qualquer forma a ligação tem de ser encaminhada na maioria das vezes para a rede pública de telefonia. Isto pode ser feito diretamente através de um gateway PSTN usando interfaces E1 ou analógicas. Em muitos casos, no entanto é preciso entroncar com um provedor de terminações usando conexões SIP ou H.323. O Asterisk pode atuar nesta arquitetura como um media gateway traduzindo protocolos de sinalização e codecs, sendo que, o seu custo chega a ser uma ordem de grandeza menor que as soluções proprietárias de outras empresas.

Uma central de atendimento é uma solução muito complexa. Ela combina diversas tecnologias como DAC (distribuição automática de chamadas), URA (unidade de resposta audível), supervisão de chamadas e agentes, relatórios entre outras coisas. Basicamente existem três tipos de Contact Centers, os ativos, receptivos e os mistos. Nos receptivos o Asterisk pode atuar como PABX, DAC, URA, CTI, gravador digital e as soluções de telefonia podem ser criadas totalmente dentro dele. No caso do ativo é possível integrar vários discadores existentes no mercado (alguns open source) como o VICIDIAL, ou mesmo desenvolver o seu próprio.Operações mistas, também conhecidas como “blended” também são possíveis.

Nesta seção vamos mostrar as principais fontes de informação relativas ao Asterisk.
O Asterisk é um software com licenciamento GPL, que transforma um PC comum em uma poderosa central telefônica. Foi criado por Mark Spencer da Digium que comercializa o hardware de telefonia. O Hardware de telefonia também é aberto e foi desenvolvido por Jim Dixon do projeto Zapata Telephony. A arquitetura do Asterisk se compõe basicamente de:
O Asterisk pode ser usado em inúmeras aplicações, desde um PABX para uma pequena empresa até sistemas de resposta automática de alta densidade.
1. Marque as opções corretas. O Asterisk tem quatro componentes básicos de arquitetura
£ CANAIS
£ PROTOCOLOS
£ AGENTES
£ TELEFONES
£ CODECS
£ APLICAÇÕES
2. Marque as opções corretas, O Asterisk permite os seguintes recursos:
£ Unidade de Resposta Automática
£ Distribuição automática de chamadas
£ Telefones IP
£ Telefones Analógicos
£ Telefones digitais de qualquer fabricante.
3. Para tocar música em espera o Asterisk necessita de um CD Player ligado em um ramal FXO. A afirmação está:
£ CORRETA
£ INCORRETA
4. É responsável pelo atendimento automático de clientes, normalmente toca um “prompt” e espera que usuário selecione uma opção. Em alguns casos pode ser usado em conjunto com um banco de dados e também com conversão de texto para fala. Estamos falando de uma:
£ URA
£ IVR
£ DAC
£ Sistema de mensagens unificado
5 – Nas plataformas de telefonia convencional, normalmente URA, DAC e Correio de voz estão incluídos no PABX. Esta afirmação está:
£ CORRETA
£ INCORRETA
6 – Marque as opções corretas. É possível interligar usando o Asterisk várias filiais através de voz sobre IP reduzindo a despesa com ligações de longa distância. Em uma filial:
£ O Asterisk pode ser a central telefônica para todos os usuários.
£ O Asterisk pode se integrar uma central telefônica existente
£ Podem ser usados apenas IP fones ligados a um Asterisk centralizado
7 – O Asterisk pode ser utilizado como uma plataforma para central de atendimento. Quais são os principais tipos de centrais de atendimento?
£ Receptivo
£ Ativo
£ Misto
£ Externo
£ Interno
8. O Asterisk é capaz de suporte no máximo 200 ramais em um único servidor
£ Falso
£ Verdadeiro
9. No Asterisk é possível processar a transcodificação e o cancelamento de eco
£ Por software usando a CPU do servidor
£ Por hardware usando uma placa TC400B
£ Por hardware usando um módulo de cancelamento de eco na placa E1
£ Não é possível transcodificar no Asterisk
£ O Asterisk só faz cancelamento de eco por software
10. O FXS é usado para ____________ enquanto o FXO é usado para __________
£ Troncos, Ramais
£ Telefones analógicos, Telefones Digitais
£ ISDN, MFC/R2
£ Ramais, Troncos
£ Receptivo
£ Ativo
£ Misto
£ Externo
£ Interno
8. O Asterisk é capaz de suporte no máximo 200 ramais em um único servidor
£ Falso
£ Verdadeiro
Baixando e instalando o Asterisk
Este capítulo vai ajudá-lo a preparar seu sistema para a instalação do Asterisk. O Asterisk funciona em muitas plataformas e sistemas operacionais, mas nós escolhemos manter as coisas simples e ficar em uma única plataforma e distribuição do Linux. Vamos usar o Debian Etch 4.0 neste livro. As instruções abaixo podem funcionar com outras distribuições do Linux, substituindo a parte de instalação das dependências. O Asterisk funciona na maioria das distribuições populares como SuSe, Fedora, Red Hat, Ubuntu e Slackware.
Ao final deste capítulo você deverá estar apto à:
O Asterisk usa de forma intensiva o processador, principalmente para fazer o processamento dos canais de voz. Se você estiver construindo um sistema complexo com carga elevada é importante entender este conceito. Para construir seu primeiro PABX um processador compatível com i386 que seja melhor que um Pentium 300Mhz com 256 MB RAM é o suficiente. O Asterisk não requer muito espaço em disco, cerca de 100 MB com o Asterisk compilado, mais o código fonte, o correio de voz e possivelmente algumas gravações de voz personalizadas.
Se você usar apenas VOIP, nenhum outro hardware é necessário. Pode se usar softfones como os da Counterpath (X-Lite) ou da SJLABS e entroncar com operadoras de voz sobre IP. Uma lista das operadoras de voz sobre IP no Brasil pode ser encontrada em: http://www.voipcharges.com/providers.php?_filter=1&country_sid=31
Nota: Algumas aplicações do Asterisk como o “Meetme” requerem uma fonte de clock para fornecer a temporização. Normalmente a fonte de clock do Asterisk é uma placa TDM. Se o seu sistema não tem uma placa TDM, você pode usar o driver ztdummy. O ztdummy usa a USB como fonte de temporização no kernel 2.4 e o RTC no kernel versão 2.6
O hardware necessário para o Asterisk não é muito complicado. Você não precisa de uma placa de vídeo sofisticada. Portas seriais, paralelas e USB podem ser completamente desabilitadas para evitar consumo de CPU tratando interrupções de hardware não utilizadas. Uma boa placa de rede é essencial. Se você estiver usando uma das placas da Digium, é bom verificar as instruções da sua placa-mãe para determinar se os Slots PCI suportam estas placas, pois existem placas de 5 e 3.3 Volts. Muitas placas-mãe compartilham interrupções em slots PCI. Conflito de interrupção é uma fonte potencial de problemas de qualidade de áudio no Asterisk. Uma maneira de liberar IRQs é desabilitar na BIOS todo o hardware que não for utilizado, como placas de som on-board, por exemplo.
Muitas placas de telefonia como a X100P podem gerar grandes quantidades de interrupções, atendê-las toma tempo. Os drivers podem não conseguir fazê-lo em tempo se outro dispositivo estiver processando a mesma IRQ compartilhada e a linha de IRQ não puder receber outra interrupção. Se possível você deve evitar o compartilhamento de interrupções de hardware. Como a entrega precisa de IRQs é uma necessidade primária em telefonia, você não deve compartilhar IRQs com nada. Nem sempre isto ocorre, mas você deve prestar atenção ao problema. Se você está usando um computador dedicado para o Asterisk, desabilite na BIOS o maior número de dispositivos que você não vá usar.
A maioria das BIOS para servidores permite que você manualmente aloque as IRQs. Vá até a BIOS e olhe na seção de IRQs. É bem possível que você consiga configuras as interrupções manualmente por slot.
Uma vez iniciado o computador, veja em /proc/interrupts as IRQs designadas.
#
cat /proc/interrupts
CPU0
0: 41353058 XT-PIC timer
1: 1988 XT-PIC keyboard
2: 0 XT-PIC cascade
3: 413437739 XT-PIC wctdm <-- TDM400
4: 5721494 XT-PIC eth0
7: 413453581 XT-PIC wcfxo <-- X100P
8: 1 XT-PIC rtc
9: 413445182 XT-PIC wcfxo <-- X100P
12: 0 XT-PIC PS/2 Mouse
14: 179578 XT-PIC ide0
15: 3 XT-PIC ide1
NMI: 0
ERR: 0
Acima você pode ver as três placas da Digium cada uma na sua IRQ. Se este for o caso, você pode ir em frente e instalar os drivers de hardware. Se não for o caso, volte na BIOS até que as placas não estejam compartilhando IRQs.
O Asterisk foi originalmente desenvolvido para rodar em Linux, embora possa ser usado no BSD e OS X. No entanto, as placas TDM da Digium foram desenhadas para trabalhar com Linux i386. Se você for novo com Asterisk procure usar o Linux.
Várias distribuições como RedHat, Mandrake, Fedora, Debian, Slackware e Gentoo foram usadas com sucesso com o Asterisk. Eu escolhi o Debian Sarge 3.1 (a versão estável desse projeto durante o desenvolvimento deste material). O mesmo pode ser baixado de www.debian.org.
Exigidos pelo zaptel:
Nota: O pacote zaptel é exigido para a compilação de algumas aplicações do ASTERISK, por exemplo, o meetme(). Se você compilou o ASTERISK antes do Zaptel, você deverá compilá-lo novamente para que as essas aplicações estejam disponíveis.
Usamos o Debian Etch 4.0 para a instalação do Asterisk com o Linux. Escolha a versão mais recente do Debian. As imagens podem ser encontradas em:
http://cdimage.debian.org/debian-cd/4.0_r4a/i386/iso-cd/
Escolhemos esta distribuição pelo seu grau de aceitação e por ser uma das distribuições suportadas pela Digium. Abaixo seguem as instruções da instalação do Asterisk a partir do zero.
Passo 1: Coloque o CD do Debian no cdrom e inicialize o seu PC. A maioria das questões perguntadas são basicas. Responda conforme o seu hardware e necessidades. Destacaremos alguns pontos importantes abaixo.

** Cuidado ! ** Todas as informações do seu disco rígido serão apagadas. Instale em um PC novo ou que você possa formatar !!!
No momento do particionamento, confirme que você vai apagar todo o disco.

Sugerimos que você confirme que todos os arquivos ficarão em uma partição.
Passo 2: Siga todos os passos até o fim da instalação. Se você selecionar corretamente a língua e o país receberá instruções bem claras de como instalar.
A instalação do Debian está completa, vamos agora instalar os pacotes necessários para a instalação/compilação dos drivers das placas zaptel e do próprio Asterisk.
Passo 1: Faça o login como root
Passo 2: Instalar os Headers do Kernel em execução:
#apt-get install linux-headers-`uname –r`
Passo 3: Instalação dos pacotes necessários para o Asterisk:
#apt-get install bison openssl libssl-dev libasound2-dev libc6-dev libnewt-dev libncurses5-dev zlib1g-dev gcc g++ make libusb-dev fxload
Agora que você já instalou o Linux e as bibliotecas necessárias, vamos partir para a instalação do Asterisk.
Para obter os fontes do Asterisk e drivers da Zaptel para uso com hardware digium, você deve baixar os pacotes da Digium. Baixe os arquivos usando o comando wget. Crie o diretório /usr/src se ele não existir. No momento do fechamento deste livro estas eram as versões correntes, substitua os comandos abaixo com os arquivos das versões mais atuais.
cd /usr/src
wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz
wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz
wget http://downloads.digium.com/pub/telephony/libpri/libpri-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz
Descompacte os arquivos usando:
tar xzvf asterisk-1.4-current.tar.gz
tar xzvf libpri-1.4-current.tar.gz
tar xzvf asterisk-addons-1.4-current.tar.gz
tar xzvf dahdi-linux-current.tar.gz
tar xzvf dahdi-tools-current.tar.gz
Você precisará compilar os módulos DAHDI. Rode os seguintes comandos para compilar e instalar o DAHDI. O módulo DAHDI foi separado em dois arquivos: dahdi-linux que é onde efetivamente os drivers são compilados e dahdi-tools com os utilitários correlatos
cd /usr/src/dahdi-linux-2.0.0
./configure
make
make install
cd /usr/src/dahdi-tools-2.0.0
./configure
make menuselect
make
make install
make config
Após executar o make config serão instalados os scripts de inicialização e a seguinte tela de aviso será mostrada:
install -D dahdi.init /etc/init.d/dahdi
/usr/bin/install -c -D -m 644 init.conf.sample /etc/dahdi/init.conf
/usr/bin/install -c -D -m 644 modules.sample /etc/dahdi/modules
/usr/bin/install -c -D -m 644 blacklist.sample /etc/modprobe.d/dahdi.blacklist
/usr/sbin/update-rc.d dahdi defaults 15 30
Adding system startup for /etc/init.d/dahdi ...
/etc/rc0.d/K30dahdi -> ../init.d/dahdi
/etc/rc1.d/K30dahdi -> ../init.d/dahdi
/etc/rc6.d/K30dahdi -> ../init.d/dahdi
/etc/rc2.d/S15dahdi -> ../init.d/dahdi
/etc/rc3.d/S15dahdi -> ../init.d/dahdi
/etc/rc4.d/S15dahdi -> ../init.d/dahdi
/etc/rc5.d/S15dahdi -> ../init.d/dahdi
DAHDI has been configured.
If you have any DAHDI hardware it is now recommended you
edit /etc/dahdi/modules in order to load support for only
the DAHDI hardware installed in this system. By default
support for all DAHDI hardware is loaded at DAHDI start.
I think that the DAHDI hardware you have on your system is:
usb:004/002 xpp_usb- e4e4:1150 Astribank-multi no-firmware
A tela acima pede que você edite o arquivo /etc/dahdi/modules e carregue apenas os drivers necessários abaixo como cortesia mostra a você o hardware que foi detectado.
Edite o arquivo /etc/dahdi/modules para carregar apenas o hardware necessário. No caso da minha máquina de testes estou usando um Astribank 6FXS,2FXO. O arquivo ficou como abaixo:
# Contains the list of modules to be loaded / unloaded by /etc/init.d/dahdi.
#
# NOTE: Please add/edit /etc/modprobe.d/dahdi or /etc/modprobe.conf if you
# would like to add any module parameters.
#
# Format of this file: list of modules, each in its own line.
# Anything after a '#' is ignore, likewise trailing and leading
# whitespaces and empty lines.
# Digium TE205P/TE207P/TE210P/TE212P: PCI dual-port T1/E1/J1
# Digium TE405P/TE407P/TE410P/TE412P: PCI quad-port T1/E1/J1
# Digium TE220: PCI-Express dual-port T1/E1/J1
# Digium TE420: PCI-Express quad-port T1/E1/J1
#wct4xxp
# Digium TE120P: PCI single-port T1/E1/J1
# Digium TE121: PCI-Express single-port T1/E1/J1
# Digium TE122: PCI single-port T1/E1/J1
#wcte12xp
# Digium T100P: PCI single-port T1
# Digium E100P: PCI single-port E1
#wct1xxp
# Digium TE110P: PCI single-port T1/E1/J1
#wcte11xp
# Digium TDM2400P/AEX2400: up to 24 analog ports
# Digium TDM800P/AEX800: up to 8 analog ports
# Digium TDM410P/AEX410: up to 4 analog ports
#wctdm24xxp
# X100P - Single port FXO interface
# X101P - Single port FXO interface
#wcfxo
# Digium TDM400P: up to 4 analog ports
#wctdm
# Xorcom Astribank Devices
xpp_usb
Reinicialize o seu computador e verifique que os drivers foram carregados corretamente.
Se você já compilou o software antes, compilar o Asterisk vai ser bem simples. Rode os seguintes comandos para compilar e instalar o Asterisk. Mais uma vez, você poderá selecionar quais aplicações e módulos serão compilados através do make menuselect.
make
make install
cd /usr/src/asterisk-1.4.X
./configure
make menuselect ;Selecione os módulos e use x para salvar e sair
make
make install
make samples ;use para crier os arquivos de configuração
make config ;use para inicializar o asterisk na hora do boot
Com esta configuração mínima, já é possível iniciar o Asterisk:
/usr/sbin/asterisk –vvvgc
Use o comando stop now para interromper o Asterisk. Veja os comandos disponíveis na interface de linha de comando do Asterisk.
CLI>stop now
O processo de executar o Asterisk é bem simples. Se o Asterisk for rodado sem argumentos, ele é lançado como um “daemon” (Processo que roda em background e espera conexões em uma porta TCP ou UDP).
/sbin/asterisk
Você pode acessar a console de um processo do Asterisk que já esteja em execução usando o comando abaixo. Mais de uma console pode ser conectada ao Asterisk simultaneamente.
/sbin/asterisk –r
Você pode verificar as opções de inicialização do ASTERISK disponíveis utilizando asterisk –h
debian:/usr/src/asterisk-1.4.0# asterisk -h
Asterisk 1.4.0, Copyright (C) 1999 - 2006, Digium, Inc. and others.
Usage: asterisk [OPTIONS]
Valid Options:
-V Display version number and exit
-C <configfile> Use an alternate configuration file
-G <group> Run as a group other than the caller
-U <user> Run as a user other than the caller
-c Provide console CLI
-d Enable extra debugging
-f Do not fork
-F Always fork
-g Dump core in case of a crash
-h This help screen
-i Initialize crypto keys at startup
-I Enable internal timing if Zaptel timer is available
-L <load> Limit the maximum load average before rejecting new calls
-M <value> Limit the maximum number of calls to the specified value
-m Mute the console from debugging and verbose output
-n Disable console colorization
-p Run as pseudo-realtime thread
-q Quiet mode (suppress output)
-r Connect to Asterisk on this machine
-R Connect to Asterisk, and attempt to reconnect if disconnected
-t Record soundfiles in /var/tmp and move them where they belong after they are done.
-T Display the time in [Mmm dd hh:mm:ss] format for each line of output to the CLI.
-v Increase verbosity (multiple v's = more verbose)
-x <cmd> Execute command <cmd> (only valid with -r)
O Asterisk é instalado em diversos diretórios. Estes diretórios podem ser alterados modificando-se o arquivo asterisk.conf.
[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdatadir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run
astlogdir => /var/log/asterisk
; Changing the following lines may compromise your security.
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = asterisk.ctl
;[options]
;internal_timing = yes
O Asterisk faz o log das suas mensagens em /var/log/asterisk. O arquivo que controla os logs do Asterisk é o logger.conf.
;
; Logging Configuration
;
; In this file, you configure logging to files or to
; the syslog system.
;
; "logger reload" at the CLI will reload configuration
; of the logging system.
[general]
; Customize the display of debug message time stamps
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
; see strftime(3) Linux manual for format specifiers
;dateformat=%F %T
;
; This appends the hostname to the name of the log files.
;appendhostname = yes
;
; This determines whether or not we log queue events to a file
; (defaults to yes).
;queue_log = no
;
; This determines whether or not we log generic events to a file
; (defaults to yes).
;event_log = no
;
;
; For each file, specify what to log.
;
; For console logging, you set options at start of
; Asterisk with -v for verbose and -d for debug
; See 'asterisk -h' for more information.
;
; Directory for log files is configures in asterisk.conf
; option astlogdir
;
[logfiles]
;
; Format is "filename" and then "levels" of debugging to be included:
; debug
; notice
; warning
; error
; verbose
; dtmf
;
; Special filename "console" represents the system console
;
; We highly recommend that you DO NOT turn on debug mode if you are simply
; running a production system. Debug mode turns on a LOT of extra messages,
; most of which you are unlikely to understand without an understanding of
; the underlying code. Do NOT report debug messages as code issues, unless
; you have a specific issue that you are attempting to debug. They are
; messages for just that -- debugging -- and do not rise to the level of
; something that merit your attention as an Asterisk administrator. Debug
; messages are also very verbose and can and do fill up logfiles quickly;
; this is another reason not to have debug mode on a production system unless
; you are in the process of debugging a specific issue.
;
;debug => debug
console => notice,warning,error
;console => notice,warning,error,debug
messages => notice,warning,error
;full => notice,warning,error,debug,verbose
;syslog keyword : This special keyword logs to syslog facility
;
;syslog.local0 => notice,warning,error
;
Existem alguns comandos de console que podem ser usados para tratar os arquivos de log.
CLI> logger list channels
Channel Type Status Configuration
------- ---- ------ -------------
/var/log/asterisk/messages File Enabled - Warning Notice Error
Console Enabled - Warning Notice Error
CLI> logger rotate
== Parsing '/etc/asterisk/logger.conf': Found
Asterisk Event Logger restarted
Asterisk Queue Logger restarted
Você pode programar a rotação de logs do Asterisk usando o daemon logrotate. Edite o arquivo asterisk dentro da pasta/etc/logrotate.d/asterisk.
/var/log/asterisk/messages /var/log/asterisk/*log {
missingok
rotate 5
weekly
create 0640 asterisk asterisk
postrotate
/usr/sbin/asterisk -rx 'logger reload'
endscript
}
Você pode obter mais dados sobre o logrotate acessando:
#man logrotate
É mais seguro executar o Asterisk com um usuário diferente do usuário root. No caso de uma falha de segurança como, por exemplo, um ataque do tipo “buffer overflow” é mais seguro que o Asterisk tenha sido iniciado com um usuário menos privilegiado.
Para alterar o usuário de execução do Asterisk você deve seguir os seguintes passos.
Passo 1: Edite o arquivo. vi /etc/init.d/asterisk
Passo 2: Retire o comentário das seguintes linhas do arquivo removendo o # do início de cada linha:
/etc/init.d/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"
Passo 3: Para alterar os direitos do usuário asterisk nas pastas utilizadas para a execução do Asterisk, digite:
cd /
chown --recursive asterisk:asterisk /etc/asterisk
chmod --recursive u=rwX,g=rX,o= /etc/asterisk
chown --recursive asterisk:asterisk /var/lib/asterisk
chown --recursive asterisk:asterisk /var/log/asterisk
chown --recursive asterisk:asterisk /var/run/asterisk
chown --recursive asterisk:asterisk /var/spool/asterisk
chown --recursive asterisk:asterisk /dev/zap
chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk
chmod --recursive u=rwX,g=rX,o= /var/log/asterisk
chmod --recursive u=rwX,g=rX,o= /var/run/asterisk
chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk
chmod --recursive u=rwX,g=rX,o= /dev/zap
Passo 4: Teste as alterações realizadas digitando:
Se o Asterisk for instalado em um ambiente de produção, deve-se prestar atenção no projeto do sistema. O servidor deve ser otimizado de forma que as funções de telefonia tenham prioridade sobre os outros processos do sistema. Na maioria dos casos o Asterisk não deve rodar outros processos, principalmente se forem intensivos em CPU. Se forem necessários processos que utilizam muita CPU como um banco de dados, por exemplo, estes devem ser instalados eventualmente em um servidor separado.
De uma forma geral o Asterisk é um sistema sensível a variações na performance da máquina. Portanto evite utilizar o Asterisk em uma máquina que tenha uma utilização de CPU média superior a 40%.
Se você vai usar telefones IP é importante que você preste atenção a algumas questões sobre a rede. Os protocolos de voz sobre IP são muito bons e resistentes a perdas de pacotes, atrasos e variações de atrasos. Entretanto se você abusar, a qualidade de voz não será boa. Só é possível garantir a qualidade da voz utilizando mecanismos de qualidade de serviço (QoS) fim-a-fim, o que é inviável principalmente em telefonia sobre a Internet. Desta forma seguem algumas recomendações:
Neste capítulo você aprendeu sobre os requisitos mínimos de hardware do Asterisk, como baixar, compilar e instalar o Asterisk. Também vimos que o Asterisk deve ser executado com um usuário que não seja o root, por motivo de segurança. Não se esqueça de verificar seu ambiente de rede antes de iniciar um servidor Asterisk em produção.
1. Qual a configuração mínima para o Asterisk.
2. As placas de telefonia para o Asterisk têm um processador próprio (DSP), não precisando assim de muita CPU do servidor.
£ Correto
£ Incorreto
3. Para que a telefonia IP funcione com perfeição é necessário que a rede possua QoS fim-a-fim.
£ Correto
£ Incorreto
4. É possível obter uma boa qualidade de voz em uma rede que não esteja congestionada com switches de 100 Mbps.
£ Correto
£ Incorreto
5. Liste abaixo as bibliotecas necessárias para compilar o Asterisk.
6. Se você não tem uma placa zaptel você precisa de uma fonte de tempo. O driver ztdummy faz este papel na versão de kernel 2.4 do Linux aproveitando uma biblioteca USB. Isto é necessário, pois algumas aplicações como o _______ e o ______ precisam de uma referência de tempo.
7. Quando você faz uma instalação do Asterisk, o melhor é não instalar os pacotes gráficos como o KDE e GNOME, pois o Asterisk é sensível na questão de CPU e interfaces gráfica roubam muitos ciclos de CPU do servidor.
£ Correto
£ Incorreto
8. Os arquivos de configuração do Asterisk ficam em ____________________.
9. Para instalar os arquivos de configuração de exemplo você precisa executar o seguinte comando.
10. Porque é importante inicializar o Asterisk com um usuário diferente de root.
Primeiros passos usando Asterisk
Neste capítulo você aprenderá a configurar o Asterisk dentro de uma configuração de PABX simples. O objetivo aqui é que você possa ter uma primeira experiência com o Asterisk, configurando um ou dois telefones IP, discando entre eles ou para uma extensão com uma mensagem inicial. Mais à frente, vamos mostrar, com detalhes, os canais SIP, IAX e ZAPATA. É importante que você entenda os conceitos apresentados neste capítulo para prosseguir para os capítulos seguintes.
Ao final deste capítulo você estará apto à:
· Entender e editar os arquivos de configuração
· Instalar softfones baseados em SIP
· Configurar um plano de discagem simples
· Discar entre ramais
· Discar para uma mensagem criada no sistema
O Asterisk é controlado através de arquivos de configuração localizados no diretório /etc/asterisk. É importante entender o formato destes arquivos de que é semelhante aos arquivos (.ini) do Windows. O ponto e vírgula é o caractere de comentário.
Arquivo de exemplo:
;
; A primeira linha sem ser comentário deve ser o título de uma sessão.
;
[sessao]
chave = valor ; Designação de variável
[sessao2]
objeto => valor ; Declaração de objeto
O interpretador do Asterisk interpreta (=) e (=>) de forma idêntica. A sintaxe é apenas para tornar o código mais legível. Embora os arquivos compartilhem a mesma sintaxe, existem pelo menos três tipos distintos de gramática.
|
Gramática |
Criação dos Objetos |
Conf. File |
Exemplo |
|
Grupo Simples |
Todos na mesma linha |
extensions.conf |
exten=>4000,1,Dial(SIP/4000) |
|
Herança de Opções |
As opções são definidas antes e os objetos herdam essas opções |
zapata.conf |
[channels] context=default signalling=fxs_ks group=1 channel => 1 |
|
Entidade Complexa |
Cada entidade recebe um contexto |
sip.conf, iax.conf |
[cisco] type=friend secret=mysecret host=10.1.30.50 context=trusted [xlite] type=friend secret=xlite host=dynamic |
O formato de grupo simples é o mais básico e usado por arquivos de configuração onde os objetos são declarados com todas as opções na mesma linha. Os arquivos extensions.conf, meetme.conf e voicemail.conf seguem este formato.
[sessao]
objeto1 => op1,op2,op3
objeto2 => op1b,op2b,op3b
Neste exemplo, o objeto1 é criado com opções op1, op2 e op3 enquanto o objeto 2 é criado com op1b, op2b e op3b.
Este formato é usado pelo zapata.conf e outras interfaces onde há muitas opções. Entretanto, a maioria das interfaces e objetos compartilha o mesmo valor para opções. Nesta classe de arquivo de configuração, tipicamente existem uma ou mais seções que contém declarações de um ou mais canais ou objetos. As opções para o objeto são especificadas acima da declaração do objeto e podem ser mudadas para a declaração de outro objeto. É um conceito difícil de entender, mas muito fácil de usar. Considere o exemplo abaixo:
[sessao]
op1 = bas
op2 = adv
objeto=>1
op1 = int
objeto => 2
As primeiras duas linhas configuram o valor da opção op1 e op2 para bas e adv respectivamente. Quando o objeto 1 é instanciado, ele é criado com sua opção 1 sendo bas e sua opção 2 sendo adv. Após declarar o objeto 1, mudamos o valor da opção 1 para int. E então criamos o objeto 2, agora o objeto 2 é criado com sua opção 1 sendo int e sua opção 2 permanece adv.
O formato objeto entidade complexa é usado pelo iax.conf e sip.conf e outras interfaces nas quais existem numerosas entidades com muitas opções e que tipicamente não compartilham um grande volume de configurações comuns. Cada entidade recebe seu próprio contexto (Às vezes existe um contexto reservado tal como [general] para as configurações globais). As opções então são especificadas na declaração de contexto. Considere:
[entidade1]
op1=valor1
op2=valor2
[entidade2]
op1=valor3
op2=valor4
A entidade [entidade1] tem valores valor1 e valor2 para opções op1 e op2 respectivamente. A entidade [entidade2] tem valores valor3 e valor4 para as opções op1 e op2.
Para se interligar com a rede pública de telefonia é necessária uma interface do tipo FXO (Foreign Exchange Office) e uma linha telefônica comum. Um ramal de uma central telefônica analógica existente também pode ser utilizado. Você pode obter uma placa FXO comprando uma placa Digium TDM400P ou uma X100P (clone, a Digium já não fabrica mais este hardware) com uma FXO.
Em termos gerais, uma placa FXO é usada para ligar na rede pública ou a um PABX, esta placa recebe tom. Uma placa FXS em contrapartida pode ser usada para ligar um aparelho telefônico comum, uma linha FXS gera tom.

Nota: Ainda existem algumas placas X100P, de baixo custo, disponíveis com uma interface FXO. Devido ao fim da fabricação do chipset principal com que elas eram fabricadas, estas placas são cada vez mais raras.
Antes de instalar uma placa X100P no seu microcomputador, é recomendável que você desabilite todas as interrupções e hardware que não está sendo usadas no momento, como portas seriais, paralelas, interrupção para vídeo entre outras.
Para instalar a sua placa X100P você deve encaixá-la em um slot PCI e configurar dois arquivos de configuração:
· “zaptel.conf” no diretório /etc que é o arquivo de configuração da placa zaptel.
· “zapata.conf” no diretório /etc/asterisk que é o arquivo de configuração dos canais zapata do Asterisk.
Não se preocupe neste momento em entender todos os detalhes dos arquivos de configuração, teremos um capítulo inteiro sobre canais analógicos e digitais. Neste momento queremos apenas integrar o Asterisk na rede pública usando uma placa FXO. Vamos mostrar abaixo o arquivo completo e as instruções modificadas de forma destacada. Apesar de ocupar várias páginas é a maneira mais simples de entender a edição do arquivo.
zaptel.conf
fxsks=1
loadzone=br
defaultzone=br
channels=1
zapata.conf
[channels]
context=default
signalling=fxs_ks
group=1
channel => 1
Após configurar os arquivos carregue os drivers da placa Zaptel como mostrado abaixo.
modprobe zaptel
modprobe wcfxo
ztcfg –vvvvvv
asterisk -vvvvvgc
Existem basicamente duas formas de configurar telefones IP a partir da versão 1.4. Você pode individualmente editar os arquivos de canais ou simplesmente criar os usuários no arquivo users.conf. Este arquivo é um atalho para evitar a necessidade de se configurar arquivo por arquivo individualmente (sip.conf, iax.conf).
Na figura baixo foi criado o ramal 6000 com senha 1234 já com SIP, IAX e correio de voz pré-configurado. Não é necessário incluir os ramais no arquivo extensions.conf. Qualquer chamada a um ramal será processada pela macro macro-stdexten por default.
Quando você cria um usuário usando o users.conf. Os arquivos individuais, sip.conf, iax.conf e voicemail.conf não são alterados por esta configuração.
[6000]
callwaiting = yes
cid_number = 6000
context = numberplan-custom-1
email = flavio@asteriskguide.com
fullname = Flavio E Goncalves
hasagent = no
hasdirectory = no
hasiax = yes
hasmanager = no
hassip = yes
hasvoicemail = yes
deletevoicemail = no
host = dynamic
mailbox = 6000
secret = 1234
threewaycalling = yes
vmsecret = 1234
registeriax = yes
registersip = yes
autoprov = no
canreinvite = no
nat = no
dtmfmode = rfc2833
disallow = all
allow = ulaw,gsm,ilbc
signalling = fxo_ks
Se você quiser fazer a moda antiga, o protocolo SIP é configurado no arquivo /etc/asterisk/sip.conf e contém parâmetros relacionados à configuração dos telefones e operadoras SIP. Os clientes SIP devem estar configurados antes que possam fazer e receber chamadas.
O arquivo SIP é lido de cima para baixo. A primeira seção contém as opções globais [general]. Estas opções são:
· allow: Permite que um determinado codec seja usado.
· bindaddr: Endereço IP onde o Asterisk irá esperar pelas conexões SIP. O comportamento padrão é esperar em todas as interfaces e endereços secundários.
· context: Configura o contexto padrão onde todos os clientes serão colocados, a menos que seja sobrescrito na definição da entidade.
· disallow: Proíbe um determinado codec.
· bindport: Porta que o Asterisk deve esperar por conexões de entrada SIP. O padrão é 5060.
· maxexpirey: Tempo máximo para registro em segundos.
· defaultexpirey: Tempo padrão para registro em segundos.
· register: Registra o Asterisk com outro host. O formato é um endereço SIP opcionalmente seguido por uma barra normal (/) e a extensão.
[general]
bindport = 5060
bindaddr = 10.1.30.45
context = default
disallow = all
allow = ulaw
maxexpirey = 120
defaultexpirey = 80
Após a seção geral, seguem as definições das entidades padrão SIP. É bom lembrar que nesta seção vamos apenas dar uma introdução ao arquivo sip.conf. Teremos uma seção específica para detalhar os outros parâmetros.
· [name]: Quando um dispositivo SIP conecta-se ao Asterisk, ele utiliza a parte username do SIP URI para encontrar o peer/user.
· type: Configura a classe de conexão, as opções são peer, user e friend.
· peer: Entidade para a qual o Asterisk envia chamadas.
· user: Entidade que faz chamadas através do Asterisk.
· friend: Os dois ao mesmo tempo.
· host: Configura o endereço IP ou o nome do host. Pode-se usar também a opção ‘dynamic’ onde se espera que o host faça o registro, é a opção mais comum.
· secret: Senha usada para autenticar o peer ou user fazendo uma chamada.
Exemplo:
[cisco]
type=friend
secret=mysecret
host=10.1.30.50
context=trusted
[xlite]
type=friend
secret=xlite
host=dynamic
O plano de discagem é o coração do Asterisk, na medida, que ele define como o Asterisk irá gerenciar as chamadas. Ele consiste de uma lista de instruções ou passos que o Asterisk deveria seguir. Essas instruções são disparadas a partir dos dígitos recebidos de um canal ou aplicação. É fundamental para configurar o Asterisk, que se entenda o plano de discagem.
A maior parte do plano de discagem está contida no arquivo extensions.conf no diretório /etc/asterisk. O arquivo pode ser separado em quatro partes:
· Contextos;
· Extensões;
· Prioridades;
· Aplicações.
Vamos agora criar um plano de discagem básico, mas que atende as nossas necessidades atuais. Nas seções subseqüentes do livro dedicaremos dois capítulos inteiros ao plano de discagem, onde teremos a oportunidade de conhecê-lo mais a fundo.
Se você instalou os arquivos de exemplo (make samples), já existe o extensions.conf. Salve-o com outro nome e inicie com um arquivo em branco. Isto vai ajudar o aprendizado e poderemos abordar passo a passo cada parte do arquivo do plano de discagem.
O plano de discagem é um conjunto de extensões. Uma extensão é uma string que vai disparar um evento quando uma chamada é realizada. Extensões podem ser literais ou seguir uma máscara padrão.

Exemplo:
exten=>8580,1,Dial(SIP/8580,20)
exten=>8580,2,hangup()
A instrução exten=> descreve qual o próximo passo para a ligação. O 8580 é o conjunto de dígitos que foi recebido (número discado). O 1, 2 e 101 são as prioridades que determinam a ordem de execução dos comandos. Neste exemplo, discando 8580 irá tocar o telefone IP registrado como 8580 e. caso a ligação não seja atendida em 20 segundos será desligada. A sintaxe de um comando extension é a seguinte:
exten=> number (name), {priority|label{+|-}offset}[(alias)],application
O comando exten=> é seguido por um número da extensão ou nome, a vírgula, a prioridade, outra vírgula e finalmente a aplicação. Extensão é o endereço correspondente da chamada (o número do telefone). Prioridades determinam a ordem de execução das aplicações. Aplicação é a ação a ser tomada (dial, playback, hangup). Cada ação corresponde a uma aplicação diferente.
Prioridades são passos numerados na execução de cada extensão. Cada prioridade chama uma aplicação especifica. Normalmente estes números de prioridade começam com 1 e aumentam de um a um em cada extensão. Se os números das prioridades não forem seqüenciais o Asterisk aborta a execução. A partir da versão 1.2 do Asterisk, tornou-se comum o uso da prioridade “n”, no lugar da associação manual de números, assim como a possibilidade da utilização de labels e aliases. Entraremos em maiores detalhes no capítulo oito.
As aplicações são partes fundamentais do Asterisk, elas tratam o canal de voz, tocando sons, aceitando dígitos ou encerrando uma chamada. As aplicações são chamadas com opções que afetam a sua forma de funcionamento. Você pode usar core show applications na interface de linha de comando do Asterisk para verificar as aplicações disponíveis. Na medida em que você construir seu primeiro plano de discagem você vai aprender a usar as aplicações de forma apropriada. Você pode ver as opções de aplicação instaladas no Asterisk usando o comando:
CLI>core show applications

Os contextos têm um papel importante no Asterisk na organização e segurança do plano de discagem. Os contextos também definem o escopo e permitem separar diferentes partes do plano de discagem. Um ponto que chama atenção é que os contextos estão ligados diretamente aos canais. Cada canal existe dentro de um contexto. Quando uma ligação entra no Asterisk por um canal ela é processada dentro do contexto deste canal.
Vamos supor, por exemplo, que você tenha duas classes de usuários. A primeira é a classe dos “gerentes” e a outra é a classe dos “visitantes”. Você deseja reproduzir diferentes mensagens de voz para cada uma das classes quando for discado 9000. Você pode alcançar isto definindo o contexto de entrada no arquivos de canal (sip.conf, iax.conf, zap.conf).
Exemplo:
No exemplo abaixo, quando Maria discar 9000, ela receberá a mensagem visitante. Quando John discar para o mesmo número, ele receberá uma mensagem diferente: gerente.
sip.conf
[john]
context=gerentes
host=dynamic
[maria]
context=visitantes
host=dynamic
…
extensions.conf
[gerentes]
exten=>9000,1,Playback(gerente)
[visitantes]
exten=>9000,1,Playback(visitante)
Com este conceito você pode criar diversas funcionalidades no Asterisk. Contextos distintos podem ser usados para servir diferentes companhias para diferentes classes de usuários no mesmo servidor Asterisk. Contextos podem, por exemplo, determinar quem pode e quem não pode realizar chamadas de longa distância.
Os contextos recebem o seu nome dentro de chaves ([]s). Por exemplo, se nós fossemos criar um contexto para a entrada de chamadas, poderíamos definir como:
[entrada]
Todas as instruções colocadas após a definição são partes do contexto. Para iniciar um novo contexto, simplesmente declare o novo contexto [novocontexto]. Um contexto acaba quando existe a declaração de um novo contexto. No início do arquivo extensions.conf existe um contexto chamado [globals]. O contexto globals é onde as variáveis globais são definidas e podem ser usadas por todo o plano de discagem. Já o contexto [general] é utilizado para definir alguns parâmetros gerais.

A maneira mais econômica de testar o Asterisk é conectar-se a um provedor (em www.voipcharges.com você encontrará uma lista de provedores que atuam em qualquer país do mundo), vamos ver como se conectar a um provedor no capítulo relativo aos canais SIP. Outra forma é usar uma placa FXO. Para fazer o laboratório descrito abaixo você vai precisar de dois PCs, Pentium 300 Mhz ou melhor com pelo menos 256 MB RAM. Se você tiver um único PC pode usar o VMWare (não é freeware) e para tanto você precisará de pelo menos 512 MB RAM. Vamos usar o softfone gratuito da Counterpath o Xlite. Você pode baixá-lo de www.counterpath.com. Existem outros softfones gratuitos como o Zoiper da Attractel www.zoiper.com. Certamente você encontrará outros pesquisando a Internet. Pode ser também que os dois citados acima não existam mais quando você estiver lendo este material. Você pode também criar este laboratório usando um equipamento para o Asterisk e um adaptador de telefonia analógico de dois canais ou ainda fazendo uso de um IP fone SIP.
Passo 1: Edite o arquivo sip.conf e adicione a configuração de um ramal com número 6000.
[general]
bindport=5060
bindaddr=10.1.30.45 ; Coloque aqui o endereço IP do seu servidor
context=default
allow=all
[6000]
type=friend
secret=6000
host=dynamic
canreinvite=no
Passo 2: Repita o passo 1 agora para o ramal 6001
Passo 3: Configure os softfone xlite do ramal 6000 no Asterisk.
1. Execute o programa de instalação;
2. Pressione “next” na primeira tela;
3. Aceite o contrato de licença;
4. Aceite as próximas telas na situação padrão até terminar a instalação. Em outras palavras NEXT->NEXT->FINISH;
5. Entre no menu no X-LITE pressionando o ícone mostrado abaixo:
6. 
7. Na tela seguinte escolha “system settings”;
8. Na próxima escolha “SIP PROXY”;
9. Escolha “Default”;
Preencha os seguintes campos:
Display Name: 6000
Username: 6000
Authorization User: 6000
Password: 6000
Domain/Realm: Endereço IP do servidor
SIP Proxy: Endereço IP do servidor
10. Feche o XLITE e abra de novo;
11. Confirme que o telefone foi registrado no Asterisk com o comando sip show peers
Passo 4: Repita a configuração do XLITE para o softfone 6001.
Agora, nós estamos prontos para nosso primeiro exemplo de plano de discagem. Por favor, prestem atenção à maneira que cada prioridade chama uma aplicação. Note que neste exemplo temos apenas uma extensão criada com SIP. Estes exemplos assumem que você tem uma placa FXO. Vamos usar o AsteriskNOW como um facilitador para editar nosso plano de discagem, mas sem deixar de entender os comandos básicos do Asterisk e como eles se encaixam dentro do arquivo extensions.conf.
Agora estamos prontos para criar o extensions.conf da forma mais simples possível. Neste exemplo tudo que o Asterisk irá fazer é responder a uma chamada, tocar um som que diz “adeus” e desligar.
[incoming]
exten=>s,1,answer()
exten=>s,2,playback(goodbye)
exten=>s,3,hangup()
Prioridade 1 - chama a aplicação answer(), o Asterisk toma conta da linha e configura a chamada. Após responder a linha, o Asterisk vai para a próxima prioridade.
Prioridade 2 - o Asterisk chama a aplicação playback() para tocar o arquivo de som goodbye.gsm (por enquanto vamos usar as mensagens em inglês), esta mensagem dará uma mensagem de adeus ao usuário.
Prioridade 3 - irá desconectar o usuário.
Explicação do exemplo:
Uma chamada que entre pela FXO é enviada dentro do contexto [entrada] (Este contexto [entrada] deve estar configurado no arquivo zapata.conf para o canal FXO) e é enviada para a extensão “s”. Nós temos três prioridades no contexto: 1, 2 e 3. Cada prioridade chama um aplicativo. Vamos olhar de perto as prioridades:
A extensão especial s, que significa início (start), é utilizada quando o número que discou para o Asterisk não é conhecido (como por exemplo, em uma linha analógica). De uma forma geral a chamada inicia no contexto ao qual o canal pertence. A extensão s é imediatamente executada ao entrar em um canal.
Se vamos responder a uma chamada, é melhor conhecermos as aplicações que vão fazer isto. A aplicação answer() é usada para responder a um canal que está tocando. Ela faz a configuração inicial da chamada e pode fazer outras funções. Poucas aplicações não requerem que necessariamente se responda (answer) o canal antes de fazer qualquer outra coisa.
A aplicação playback() é usada para tocar um arquivo de som previamente gravado sobre um canal. Quando a aplicação playback() está sendo executada, qualquer dígito pressionado pelo usuário é simplesmente ignorado. O formato é playback(nomedoarquivo), ele toca o arquivo com a extensão .gsm ou .wav no diretório de sons padrão (/var/lib/asterisk/sounds).
A aplicação hangup() faz exatamente o que seu nome diz. Ela desliga um canal ativo. Você deve utilizá-la no fim do contexto uma vez que você queira desligar quem não precisa estar conectado no sistema.
Agora que já começamos simples, vamos incrementar aprendendo um pouco dos aplicativos background() e goto(). A chave para sistemas interativos baseados no Asterisk está na aplicação background(). Ela permite que você execute um arquivo de som, mas quando o originador pressiona uma tecla isso interrompe a execução e manda para a extensão correspondente aos dígitos discados.
Sintaxe da aplicação background():
exten=>extension, priority, background(filename)
Outra aplicação muito útil é o goto(). Como seu nome implica, ele pula de um contexto atual, extensão e prioridade para um contexto específico e prioridade. A aplicação goto() torna fácil a movimentação entre diferentes partes do plano de discagem. O formato do comando goto() precisa do contexto de destino e prioridade como argumentos.
Sintaxe da aplicação goto():
exten=>extensão, prioridade,goto(contexto,extensão, prioridade)
Formatos válidos do comando goto() são :
goto(contexto,extensão,prioridade)
goto(extensão,prioridade)
goto(prioridade)
Neste exemplo, vamos assumir que somos uma empresa de suporte, treinamento e vendas. Vamos criar um sistema interativo que permita ao usuário selecionar para que área da empresa ele queira ser redirecionado. Em primeiro lugar vamos usar o comando background() para tocar a mensagem “disque 1 para suporte, 2 para treinamento e 3 para vendas”, neste momento ainda não vamos explorar o tratamento de dígitos inválidos. Em cada contexto vamos tocar uma gravação como “você foi redirecionado para o departamento de suporte”.
[entrada]
exten=>s,1,answer()
exten=>s,2,background(saudação)
exten=>s,3,hangup()
exten=>1,1,playback(suporte)
exten=>1,2,goto(suporte,s,1)
exten=>2,1,playback(treinamento)
exten=>2,2,goto(treinamento,s,1)
exten=>3,1,playback(vendas,)
exten=>3,2,goto(vendas,s,1)
Vamos seguir este exemplo passo a passo:
Quando alguém liga na interface FXO (Configurada para o contexto [entrada]), a ligação é passada para a extensão “s” dentro do contexto [entrada]. A extensão “s” atende a ligação e usando o comando background() toca uma saudação e aguarda pela discagem de um dígito. Após discar o dígito “1” por exemplo, o sistema vai para a extensão “1” na prioridade “1” e toca uma mensagem no arquivo suporte.gsm (Algo como, “você ligou para o suporte técnico”). Em seguida temos o comando goto() que manda a ligação para o contexto (suporte) onde ela será tratada por uma fila de atendimento.
Nós vamos adicionar ao nosso exemplo a aplicação dial(). Ao invés de mandar a ligação para outro contexto, vamos direcioná-la a um ramal específico.
[entrada]
exten=>s,1,answer()
exten=>s,2,background(saudação)
exten=>s,3,hangup()
exten=>1,1,playback(suporte)
exten=>1,2,dial(SIP/8000)
exten=>2,1,playback(treinamento)
exten=>2,2,dial(ZAP/1)
exten=>3,1,playback(vendas)
exten=>3,2,dial(IAX/8002)
Ao comparar com o exemplo anterior, apenas criamos um atalho. Ao invés de enviar para outro contexto para o tratamento da chamada, enviamos diretamente para o ramal destino. Para “suporte” a ligação é encaminhada para a extensão SIP identificada pelo número 8000. Para “treinamento” a ligação é direcionada para o canal TDM identificado como “1” e por último “vendas” será atendida pelo telefone IAX2 identificado pelo número “8002”.
Neste ponto você já deve estar entendendo o uso de várias aplicações como o answer(), background(), goto(), hangup() e playback() e o básico do comando dial(). Isto é fundamental para o aprendizado daqui para frente. Se ainda não está claro volte e releia, é fundamental que fique entendido o processo antes que se passe a frente.
Com um entendimento básico das extensões, prioridades e aplicações é simples criar um plano de numeração básico. Nos próximos capítulos vamos fazer um plano de discagem ainda mais poderoso.
Neste laboratório vamos criar uma pequena central telefônica capaz de discar entre ramais, para a rede pública pela placa PSTN ou por um provedor VoIP e receber chamadas usando atendimento automático.
Instruções para o laboratório:
· Os ramais vão de 6000 a 6100;
· Para sair para a rede pública se disca o número 0 (zero);
· Para sair para a rede pública através de um provedor se disca 1 (um);
· 8000 será o ramal para gravação do menu de auto‑atendimento.
Passo 1: Edite o arquivo extensions.conf e na seção default entre com os seguintes comandos
[default]
exten=>6000,1,dial(SIP/6000)
exten=>6001,1,dial(SIP/6001)
Passo 2: Recarregue o arquivo extensions
CLI>extensions reload
Passo 3: Teste discando entre os ramais 6000 e 6001.
Passo 1: Edite o arquivo extensions.conf e na seção default entre com os seguintes comandos
[default]
exten=>0,1,dial(ZAP/1,20,r)
Passo 2: Recarregue o arquivo extensions
CLI>extensions reload
Passo 3: Para testar ligue 0 (zero) seguido de um número externo.
Passo 1: Edite o arquivo extensions.conf e digite os comandos abaixo, eles vão criar uma interface para você poder gravar a mensagem do menu de auto-atendimento.
[default]
exten=>8000,1,wait(2)
exten=>8000,2,record(menu:gsm)
exten=>8000,3,wait(2)
exten=>8000,4,playback(menu)
exten=>8000,5,hangup()
Passo 2: Recarregue o arquivo extensions.conf e disque 8000. Grave uma mensagem semelhante a “Você ligou para xyz, disque o ramal desejado ou aguarde”. Quando terminar de falar a mensagem disque “#” para que ela seja gravada. Você vai ouvi-la em seguida quando o comando playback() for executado.
Passo 3: Edite o arquivo extensions.conf para incluir o menu de recebimento das chamadas
[default]
exten=>s,1,background(menu)
exten=>s,2,dial(SIP/6000)
exten=>6000,1,dial(SIP/6000)
exten=>6001,1,dial(SIP/6001)
Passo 4: Disque a partir do seu celular (ou outra linha externa) para o número conectado ao Asterisk. O comando background() vai tocar a mensagem que você gravou e esperar que você digite algo. Digite 6001 e você vai ver que a ligação será desviada para o ramal 6001. Se nada for discado a ligação será automaticamente transferida para o ramal 6000.
Neste capítulo você aprendeu que os arquivos de configuração ficam em /etc/asterisk. Para usar o Asterisk é preciso em primeiro lugar configurar os canais (Ex. sip.conf e zapata.conf). Existem basicamente três formatos o grupo simples, herança de opções entidade complexa.
O plano de discagem é criado no arquivo extensions.conf, nele são criados contextos, aplicações, extensões e prioridades. As aplicações que aprendemos até agora são: playback(), background(), dial(), goto(), hangup() e answer().
O comando background() é importante na criação de uma unidade de resposta automática (URA). Já o dial() é o principal comando do plano de discagem.
1. São exemplos de arquivos de configuração de canais Asterisk.
£ zaptel.conf
£ zapata.conf
£ sip.conf
£ iax.conf
2. É importante definir o contexto no arquivo de canais, pois quando uma ligação deste canal (sip, iax, zap) chegar ao Asterisk ele será tratado no arquivo extensions.conf neste contexto.
£ Correto
£ Incorreto
3. SIP Session Initiated Protocol é o protocolo da ITU usado para conexões de voz sobre IP. Ele é bastante antigo e vem sendo substituído recentemente pelo H.323.
£ Correto
£ Incorreto
4. Dada a configuração abaixo do arquivo sip.conf, na seção [general] está definido o endereço IP 10.1.30.45, onde o SIP estará esperando por conexões. Se fosse necessário que todas as placas de rede da máquina esperassem por uma conexão SIP, bindaddr deveria estar configurado para: ___.___.___.___
[general]
bindport = 5060
bindaddr = 10.1.30.45
context = default
disallow = speex
disallow = ilbc
allow = ulaw
maxexpirey = 120
defaultexpirey = 80
6. A principal diferença entre o comando playback() e o comando background() é que o primeiro simplesmente toca uma mensagem e passa ao comando seguinte, enquanto o último aguarda que você digite algo e desvia para algum lugar no plano de discagem baseado nos dígitos discados.
£ Correto
£ Incorreto
7. Quando uma ligação entra no Asterisk por uma interface de telefonia (FXO) sem identificação de chamada, esta ligação é desviada para a extensão especial:
£ ‘0’
£ ‘9’
£ ‘s’
£ ‘i’
8. Os formatos válidos para o comando goto() são:
£ goto(contexto,extensão,prioridade)
£ goto(prioridade, contexto, extensão)
£ goto(extensão,prioridade)
£ goto(prioridade)
[1] POTS – Plain Old Telephony System, sistema de telefonia convencional, baseado normalmente em linhas analógicas.