Escolar Documentos
Profissional Documentos
Cultura Documentos
Flavio E. Gonalves
Quarta Gerao
1. Edio/Dezembro/2008
rev. 9
Florianpolis-SC-Brasil/2006
Reviso: Guilherme Waltrick Goes Atendimento: oops@asteriskguide.com Todos os direitos reservados. proibida a reproduo total ou parcial deste livro.
Prefcio
Esta a quarta gerao do eBook Asterisk Guia de Configurao, a primeira foi lanada em maro de 2005. Fiz o teste do dCAP da Digium em Maio de 2006 e tive o privilgio 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 reviso foi a atualizao para a verso 1.4, contudo o leitor pode se deparar com exemplos referentes s verses anteriores. A forma de comercializao do livro tambm mudou, privilegiando os eBooks. Estes possuem diversas vantagens, a primeira ecolgica, evitar o uso do papel. Outros pontos que posso citar so a facilidade de transporte e pesquisa associada ao documento eletrnico 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 difcil combater a pirataria e vai da conscincia de cada um. O Asterisk PBX revolucionrio nas reas de telefonia IP e PABX baseado em software. Durante anos, o mercado de telefonia foi ligado a equipamentos proprietrios, fabricados por grandes companhias. A convergncia de dados e voz, em pouco tempo vai fazer com que a telefonia seja apenas mais uma aplicao das redes, tornando os atuais equipamentos PABX obsoletos. Com a entrada do Asterisk, mais e mais empresas podero experimentar recursos como URA - Unidade de Resposta Audvel, DAC Distribuio Automtica de Chamadas, mobilidade, correio de voz e conferncia, antes restritas a poucos usurios. No tive a pretenso de ensinar tudo que existe sobre o Asterisk, pois isto seria muito difcil. Minha proposta neste material proporcionar ao leitor acesso aos principais recursos e a partir deles descobrir e implantar recursos mais avanados. Eu espero que vocs se divirtam tanto, aprendendo o Asterisk quanto eu me diverti escrevendo sobre ele. Flvio Eduardo de Andrade Gonalves Diretor Geral V.Office Networks flavio@asteriskguide.com
Agradecimentos
Alm de agradecer minha famlia que tem sempre me apoiado, gostaria de agradecer a todos os colaboradores do livro ao longo destes trs anos e abro aqui uma lista dos principais: Ana Cristina Gonalves Logstica Karla Braga Fotos e Capa Guilherme W. Ges, dCAP Texto e Reviso Luis F. Gonalves Reviso da verso em Ingls Oswaldo Fueyo Verso em espanhol Hector Kee Reviso em espanhol Felipe Pasa, dCAP Reviso e testes no R2 digital e DAC Paulo Benatto Contribuio nos captulos de interface grfica
Marcas registradas
Vrias designaes so marcas registradas. Onde as encontramos e pudemos identificar elas comeam com letras maisculas. As marcas Digium, Asterisk, IAX e DUNDi, so marcas registradas da Digium Inc. Este trabalho no patrocinado nem endossado pela Digium Inc.
Sumrio Introduo ao Asterisk Objetivos do captulo Definies e conceitos bsicos O que o AsteriskNOW Qual o papel da Digium? O projeto Zapata Porque o AsteriskNOW? Sistema aberto Reduo de custos Controle Total Melhoria da Produtividade Melhoria no Atendimento Roda no Linux e cdigo aberto Principais objees ao Asterisk A participao de mercado do Asterisk muito pequena? Se gratuito como o fabricante sobrevive? Como encontro suporte tcnico? O Asterisk no suporta mais de 200 ramais? S nerds conseguem instalar o Asterisk! E se o servidor falhar? Nossa empresa no usa software livre! Usar a CPU do PC para processar o udio condenvel! Arquitetura do Asterisk Canais Codecs e Converses de CODEC Protocolos Aplicaes Viso geral do Asterisk Diferenas entre o velho e o novo mundo Telefonia usando o velho modelo de PABX/Softswitch Telefonia do jeito Asterisk Construindo um sistema de testes Um FXO, Um FXS Provedor de servio VoIP, softfone ou ATA Placa clone FXO, softfone ou ATA Cenrios de uso do Asterisk
IP PBX Atualizao de PABX existente para suportar VoIP. Interligao de filiais atravs de VoIP Servidor de aplicaes (URA, Conf., Voicemail) Media Gateway Plataforma para central de atendimento Encontrando informaes e documentao Resumo Questionrio Baixando e instalando o Asterisk Objetivos do captulo Hardware Mnimo Montando o seu sistema Questes de compartilhamento de IRQ Escolhendo uma distribuio do Linux. Requisitos do Linux Pacotes necessrios. Instalando o Linux para atender ao Asterisk. Preparando o Debian para o Asterisk. Obtendo e compilando o Asterisk Obtendo os fontes do Asterisk Compilando o driver DAHDI Compilando o Asterisk Iniciando e parando o Asterisk Parmetros de linha de comando do Asterisk. Abaixo os parmetros disponveis Diretrios de instalao do Asterisk. Arquivos de log do Asterisk e rotao de logs, Iniciando o Asterisk usando um usurio diferente de root. Consideraes sobre a instalao do Asterisk Sistemas em produo 2.11.2 Consideraes sobre a rede Resumo Questionrio Primeiros passos usando Asterisk Objetivos do captulo Gramtica dos arquivos de configurao
Grupo simples Formato de objeto com herana de opes Objeto entidade complexa Configurando uma interface com a rede pblica Instalando a placa X100P clone Configurao dos telefones IP Configurao direta nos Arquivos SIP Seo [general] Opes para cada telefone Introduo ao plano de discagem Extenses Prioridades Aplicaes Contextos Criando um ambiente de testes Criando um plano de discagem simples Exemplo bsico Um exemplo mais til Interligando canais com a aplicao dial() Laboratrio Ligando entre telefones. Ligando para a rede pblica usando a placa zaptel Recebendo ligaes usando auto-atendimento. Resumo Questionrio Canais Analgicos Objetivos Conceitos bsicos Sinalizao de superviso Sinalizao de endereamento Sinalizao de informao Interfaces de acesso a rede pblica Usando Interfaces FXS, FXO e E+M Interfaces FX (Foreign eXchange) FXO (Foreign eXchange Office) FXS (Foreign eXchange Station) Interfaces E & M
Sinalizao nos troncos Configurando um canal de telefonia no Asterisk Procedimentos gerais de configurao vlidos nos dois casos Exemplo 1 - Instalao de uma porta FXO e outra FXS Opes de configurao do arquivo chan_dahdi.conf Opes gerais, independentes do tipo de canal Identificao do assinante em linhas analgicas Enviando CallerID para portas FXS Chamada em Espera Opes de qualidade de udio Utilitrio FXOTUNE Utilitrio DAHDI_MONITOR Cancelamento de Eco Opes de bilhetagem Opes de acompanhamento da chamada Opes para telefones ligados a linhas FXS Resumo Questionrio Canais digitais T1/E1 Objetivos Conceitos bsicos De linhas analgicas para digitais Multiplexao por Diviso de Tempo Codificao de linha T1/E1 Sinalizao CAS e CCS Sinalizao Robbed bit Sinalizao CAS-R2 ISDN-PRI ou RDSI Escolhendo uma placa de telefonia para seu Asterisk. Barramento a ser usado Uso de cancelamento de eco por hardware Tipo de sinalizao Zaptel e Dahdi Configurando um canal de telefonia no Asterisk Opes de configurao do arquivo chan_dahdi.conf Opes gerais, independentes do tipo de canal Opes para conexes com rede ISDN
Opes de identificador de chamadas (Caller ID). Opes de qualidade de udio Configurando MFC/R2 Entendendo o problema Explorando protocolo MFC/R2 Seqncia de uma chamada MFC/R2 Como usar o driver libopenR2 Debugando a chamada com OpenR2 Cdigo dos pases ANI e DNIS Nomenclatura dos canais ZAP Resumo Questionrio Projetando redes com voz sobre IP Objetivos Arquitetura do Asterisk e voz sobre IP VoIP e o Modelo OSI Como escolher um protocolo de sesso SIP (Session Initiated Protocol) IAX (Inter Asterisk eXchange) MGCP (Media Gateway Control Protocol) H.323 Tabela de comparao entre os protocolos Peers, Users e Friends Codecs e converso de Codecs Como escolher um CODEC. Overhead causado pelos cabealhos. Engenharia de trfego Matriz de interesse de trfego Simplificaes Mtodo Erlang B Estratgias de reduo do uso de banda passante Compresso de cabealho RTP (cRTP) 5.11.2 Modo IAX Trunked 5.11.3 Aumentando a Carga de Voz Resumo Questionrio
O Protocolo IAX Objetivos do Captulo Teoria de operao Uso de banda passante Nomenclatura dos canais Formato de uma conexo de sada. Exemplo de canais de sada Formato de uma conexo de entrada Exemplo de canais de entrada Cenrios de uso Conectando um softfone IAX ao Asterisk Conectando-se a um provedor baseado em IAX2 Laboratrio Conectando-se ao FreeWorldDialup usando IAX Interligando dois Asterisk com o IAX em modo trunk Autenticao no IAX Conexes de entrada Restries baseadas em endereo IP Conexes de sada Interligando dois servidores Asterisk (forma simplificada) Configurao do arquivo iax.conf Configurao do endereamento Seleo dos codecs: Buffer de Jitter Marcao de pacotes Comandos de depurao do IAX2 Resumo Questionrio O protocolo SIP Objetivos Viso geral Teoria da Operao do SIP Processo de Registro do SIP Operao do SIP em modo Proxy Operao em modo de redirect. Como o Asterisk trata o SIP Reinvites (re-convidando) Mensagens SIP
SDP (Protocolo de descrio da sesso) Cenrios avanados na utilizao do SIP Conexo de um servidor Asterisk a um provedor SIP Conectando dois servidores Asterisk utilizando SIP O suporte do Asterisk a domnios Configuraes Avanadas Configurao do codec a ser utilizado Opes de DTMF Opes de marcao de pacotes para QoS Autenticao das chamadas SIP Opes do RTP SIP NAT Traversal Full Cone (Cone Completo) Restricted Cone (Cone Restrito) Port Restricted Cone (Cone restrito por porta) Simtrico Resumo dos tipos de NAT Sinalizao SIP e trafego RTP atravs do NAT Asterisk atrs do NAT Limitaes do SIP Textos de discagem utilizados com o SIP Comandos de console relacionados a SIP Resumo 7.10 Questionrio Bsico do Plano de discagem Objetivos do captulo Estrutura do arquivo extensions.conf Seo [general] Seo [globals] Contextos Extenses Literais Padres Extenses especiais Variveis Variveis globais Variveis de canal
Variveis de ambiente Variveis especficas de aplicaes Variveis especficas para Macros Expresses Operadores Laboratrio Expresses Regulares Funes Comprimento da String Substrings Concatenao de Strings Aplicaes A aplicao answer() A aplicao dial() A aplicao hangup() A aplicao goto() Construindo um plano de discagem Discando para um destino externo. Discando 0 para pegar uma linha externa. Forar a utilizao de uma nica operadora Encaminhado as chamadas para uma telefonista. Recebendo uma ligao com DDR Tocando vrias extenses simultaneamente Evitando o telemarketing Roteamento pelo originador da chamada Usando variveis 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 Lgica dentro do plano de discagem Resumo Questionrio Recursos avanados do plano de discagem Objetivos Recepo de chamadas com uma URA A aplicao background() A aplicao record() A aplicao playback()
A aplicao read() A aplicao gotoif() Configuraes de timeout importantes Laboratrio Criando uma URA passo a passo Processo encontra enquanto voc disca. Utilizao da aplicao read() Incluso de contextos Encaminhar chamadas para outro servidor Asterisk Ordem de processamento do plano de discagem O comando #INCLUDE Macros Definio de uma macro Chamar uma macro A aplicao VoiceMail() Configurao Enviar uma mensagem de voz para o e-mail Personalizao da mensagem de email Interface web para o correio de voz Notificaes do correio de voz Laboratrio - Notificaes do correio de voz no telefone A aplicao directory() Laboratrio - Utilizando a aplicao directory() A base de dados do Asterisk Funes, aplicaes e comandos da CLI que envolvem o AstDB Configurao do siga-me e no perturbe (DND) Implantao de listas negras Contextos baseados em horrio Utilizao do DISA. Limitao de ligaes simultneas Laboratrio Configurao de um PABX Passo 1 - Configurando os canais. Passo 2 - Configurando o plano de discagem Recepo das chamadas Resumo Questionrio Funes tpicas de um PABX Objetivos
Suporte aos recursos de PABX Funcionalidades disponibilizadas no Asterisk 10.2.2 Funcionalidades configuradas no plano de discagem Funcionalidades configuradas no telefone O arquivo features.conf Transferncia de chamadas Configurao Estacionamento de chamadas Configurao Captura de chamadas (call pick-up) Configuraes Conferncia (call conference) A aplicao meetMe() Configurao 10.7 Gravando uma ligao Msica em espera (MoH) Configurao Edite os arquivos para habilitar msica em espera Mapas de aplicaes Resumo Questionrio Distribuio automtica de chamadas. Objetivos Viso geral Arquitetura de um DAC Filas Agentes Membros Estratgias de distribuio Aplicaes relacionadas ao DAC A aplicao queue() A aplicao Agentlogin() A aplicao addQueueMember() A aplicao removeQueueMember() Comandos no console Configurao Operao da fila
Recursos avanados Menu para o usurio Penalidades Prioridades Resumo Questionrio Bilhetagem no Asterisk Objetivos: Formato dos bilhetes do Asterisk Cdigos de conta e contabilizao automtica. Mtodos de armazenamento do CDR Drivers de armazenamento disponveis Armazenando em CSV Armazenando em uma base de dados MySQL. Alterando o formato da bilhetagem Aplicaes e funes relacionadas bilhetagem A funo CDR(account) A funo (CDR(amflags) A aplicao NoCDR() A aplicao ResetCDR() A funo CDR(userfield) A aplicao AppendCDRUserField() Autenticao de Usurios Usando as senhas do Correio Eletrnico Resumo Questionrio Distribuies fceis de instalar Objetivos Distribuies fceis de usar. AsteriskNOW Druid Elastix MidiVTS Instalando o MidiVTS Procedimentos ps-instalao Lab 14.1 Configurao bsica usando o FreePBX Questionrio
Sumrio Interface Grfica MidiVTS Objetivos deste captulo Administrao Configurao Administrao Informaes do sistema Gerenciador de mdulos Bsico Administradores Configuraes Gerais Cdigos de Funo Ramais Rotas de Sada Troncos Entrada de chamadas Canal Zap DDR Rotas de Entrada Anncios Lista Negra Controle Dia/Noite Siga-me Filas URA Opes Internas Gravaes do sistema Msica de espera Conferncia DISA Ferramentas Administrao do sistema Destino Personalizado Ramal Personalizado Asterisk CLI Informaes do Asterisk Agenda do Asterisk Relatrios, Painel e Gravaes
Relatrios Painel Gravaes Questionrio Sumrio Recursos para desenvolvimento e integrao de aplicaes Objetivos deste captulo Principais formas de estender o Asterisk Estendendo o Asterisk atravs do console Estendendo o Asterisk usando o aplicativo System() O que o AMI Que linguagem utilizar? Funcionamento do protocolo Tipos de pacotes Configurando usurios, permisses e fazendo login Login no AMI Pacotes do tipo Action Comandos do tipo Action Pacotes do tipo Event Asterisk Gateway Interface Usando o AGI DeadAGI FASTAGI Alterando o cdigo fonte Resumo Questionrio Asterisk Real-Time Introduo Objetivos deste captulo Modo de funcionamento do Asterisk Real Time Laboratrio 1: Instalando o Asterisk Real/Time Configurar o Asterisk Real Time. Configurao esttica Configurao dinmica Configurao da base de dados Criando um plano de discagem Realtime. Laboratrio 2 Instalar o banco e criar as tabelas
Criar as tabelas no MySQL Laboratrio 3 Configurar e testar o ARA Resumo Questionrio Usando o Asterisk com o H323 Objetivos Introduo Componentes de uma rede H.323 Gateways Terminais Gatekeepers Multipoint Control Units Zona H.323 Protocolos auxiliares ao H.323 H.225 RAS (Registro, admisso e status) Sinalizao de chamadas H.225 Sinalizao de controle H.245 Procedimentos de conexo Endereamento H323 Endereos H.323 ID Endereos E.164 Instalao do H.323 no Asterisk Verses disponveis: Instalao do H.323 Confirmando a instalao Configurando o H323 Laboratrio Conectando um cliente H.323 Conectando um gateway H.323 Sumrio Onde encontrar mais informaes Sites: Listas de discusso: Livros: Resposta dos Exerccios Respostas do Captulo 1 Respostas do Captulo 2
Respostas do Captulo 3 Respostas do captulo 4 Respostas do Captulo 5 Respostas do Captulo 6 Respostas do Captulo 7 Respostas do Captulo 8 Respostas do Captulo 9 Respostas do Captulo 10 Respostas do Captulo 11 Respostas do Captulo 12 Respostas do captulo 13 Respostas do captulo 14 Respostas do captulo 15 Respostas do captulo 16 Respostas do captulo 17
1 Introduo ao Asterisk O Asterisk PBX um poderoso software que permite transformar um ordinrio PC em uma poderosa central telefnica multi-protocolo. Neste captulo, voc aprender sobre as possibilidades que o Asterisk pode lhe proporcionar e um pouco sobre a sua arquitetura bsica. Recentemente tem crescido a popularidade de distribuies prontas como o TrixBox e o AsteriskNOW. Neste livro vamos abordar o Asterisk normal, pois ele a base para entendermos as distribuies prontas. As distribuies prontas esto 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 captulo especfico para as interfaces grficas AsteriskGUI e FreePBX que compe as principais distribuies prontas.
Objetivos do captulo
Ao final deste captulo voc estar apto : Explicar o que o Asterisk e qual a sua relao com outros projetos Descrever qual o papel da Digium neste processo Reconhecer a arquitetura bsica do Asterisk Reconhecer componentes da arquitetura tais como Codecs, Canais e Aplicaes Apontar diversos cenrios de uso do Asterisk Apontar as principais fontes de consulta de informao
aeroporto ou hotel. E muito mais... O Asterisk inclui muitos recursos que s eram encontrados em sistemas de mensagem unificada topo de linha como:
Msica em espera para clientes esperando nas filas, com suporte a streaming de media, bem como msica em formato MP3. Filas de chamada onde agentes de forma conjunta atendem as chamadas e monitoram a fila. Integrao com softwares para a sintetizao da fala (text to speech).
Registro detalhado de chamadas (call detail records) para integrao com sistemas de tarifao e bancos de dados SQL. Integrao com reconhecimento de voz (automatic speech recognition).
A habilidade de interfaceamento com linhas telefnicas normais, ISDN em acesso bsico (2B+D) e primrio (30B+D).
O que o AsteriskNOW
O Asterisk na sua forma pura, tambm conhecido como Asterisk Classic (denominao 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 distribuio inclui um Linux customizado, uma interface grfica e todo o software necessrio para rodar o Asterisk. A distribuio GPL de forma que voc pode baixar e usar gratuitamente. Nos ltimos anos tem crescido muito o uso de distribuies como o TrixBox e o AsteriskNow certamente uma resposta a este movimento. Podemos dizer que este livro tambm.
Asterisk GPL (GNU Public License). A licena GPL a mais encontrada, ela permite que voc use e altere o cdigo. A restrio existente que quaisquer alteraes no cdigo fonte tm de ser redistribudas. Em outras palavras, se voc altera o cdigo fonte do Asterisk tem de fornecer as modificaes.
Asterisk Business Edition. uma licena comercial do Asterisk. Ela no possui recursos adicionais em comparao com a verso GPL, com exceo da proteo contra cpia. A grande vantagem da licena comercial para desenvolvedores que no desejam abrir o cdigo fonte de seus produtos e no podem ou no querem usar a verso GPL.
Asterisk OEM. Foi criado para fabricantes de centrais telefnicas que no desejam mostrar aos seus clientes que a central baseada em Asterisk.
O projeto Zapata
O projeto ZAPATA foi conduzido por Jim Dixon. Ele o responsvel pelo desenvolvimento do hardware da DIGIUM. interessante ressaltar que o hardware tambm aberto e pode ser produzido por qualquer empresa. Hoje a placa com quatro E1/T1s produzida pela Digium, Sangoma, OpenVox, entre outras. A histria 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 adoo de SIP Trunking o que deve levar a uma reduo do mercado de placas de telefonia a mdio e longo prazo.
Porque o AsteriskNOW?
O Asterisk traz uma mudana profunda nos paradigmas de comercializao e implantao de sistemas de telefonia. Vamos mostrar algumas razes que esto catalisando este movimento em direo a plataforma de telefonia IP com software livre. O AsteriskNOW torna a instalao e a operao fceis atravs de um CD de auto-instalao e uma interface grfica.
Sistema aberto
Sistemas abertos mudam a relao de poder. Eles do poder ao usurio enquanto sistemas proprietrios do poder ao fornecedor. Se voc possui um sistema aberto, pode escolher o fornecedor de interfaces, telefones e servios. Se, no entanto seu sistema usar tecnologia proprietria, o fabricante tem o poder de indicar os equipamentos e servios dando para voc muito menos poder de barganha.
Reduo de custos
um dos principais fatores que esto catalisando a adoo do Asterisk. Alm do custo dos equipamentos, o Asterisk est sendo adotado, muitas vezes, em conjunto com operadoras VoIP com forte reduo nas contas de telefonia. Esta reduo ocorre por causa das baixas tarifas das operadoras VoIP e tambm pela comunicao com filiais, funcionrios 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 dvida, muito mais econmico. Recursos como correio de voz e distribuio automtica de chamadas sempre foram muito dispendiosos em plataformas tradicionais de telefonia.
Controle Total
Este um dos benefcios mais citados, ao invs de esperar algum configurar o seu PABX proprietrio (alguns nem mesmo do a senha para o cliente final), configure voc mesmo! Total liberdade de configurao e personalizao.
Melhoria da Produtividade
A melhoria da produtividade vem dos recursos avanados que o sistema proporciona, como por exemplo, diretrio dos usurios, o que reduz o tempo em que os usurios ficam procurando telefones dentro da empresa. Um auto-atendedor com unidade de resposta automtica que direciona automaticamente as ligaes 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 tambm associados a administrao do PBX que agora no mais depende do fabricante da central. Atravs de uma interface grfica e amigvel, possvel criar ramais, salas de conferncia e gerir a central.
Melhoria no Atendimento
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 ligaes e manter uma comunicao mais rpida com o cliente. O uso de unidade de resposta automtica, filas de atendimento e msica em espera permitem tornar o Asterisk uma excepcional central de atendimento.
E se o servidor falhar?
Uma das vantagens do Asterisk poder ser usado em sistemas com tolerncia a falhas. relativamente simples e barato possuir dois servidores em paralelo. Tente fazer isso com uma central digital convencional!
Arquitetura do Asterisk
A figura acima mostra a arquitetura bsica do Asterisk. Vamos explicar abaixo os conceitos relacionados figura acima como canais, codecs e aplicaes.
Canais
Um canal o equivalente a uma linha telefnica na forma de um circuito de voz digital. Ele geralmente consiste de ou um sinal analgico em um sistema POTS[1] ou alguma combinao de CODEC e protocolo de sinalizao (GSM com SIP, Ulaw com IAX). No incio as conexes de telefonia eram sempre analgicas e por isso, mais suscetveis a rudos e eco. Mais recentemente, boa parte da telefonia passou para o sistema digital, onde o sinal analgico 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 pblica de telefonia: chan_zap Placas compatveis com Zaptel tais como Digium, Xorcom, Intelbras chan_khomp Placas compatveis com ISDN e MFC/R2 da Khomp chan_dgv Placas compatveis com MFC/R2 da Digivoice chan_mISDN Placas BRI, muito comuns no mercado europeu Canais para uso com voz sobre IP chan_sip Protocolo SIP - Session Initiation Protocol chan_iax Protocolo IAX2 -Inter-Asterisk Exchange Protocol 2 chan_h323 Protocolo ITU H323 chan_mgcp Protocolo MGCP- Media Gateway Control Protocol chan_sccp: Protocolo Skinny Padro de telefonia IP da Cisco Nota: Uma lista completa dos canais pode ser encontrada em http://www.voip-info.org/wikiAsterisk+channels
Canais com uso especfico no Asterisk chan_console: Driver para placas de som (OSS ou ALSA).permite o uso de um canal na console do servidor usando uma placa de rede comum. chan_local: Pseudo canal, simplesmente faz o loopback dentro do plano de discagem em um contexto diferente. Utilizado para o roteamento recursivo dentro de uma unidade de resposta automtica (URA).
G.711 alaw (usado na Europa e no Brasil) (64 Kbps) G.723.1 Modo passa-direto (pass-through) G.726 - 32kbps no Asterisk 1.0.3, 16/24/32/40kbps G.729 Precisa de licena, a menos que esteja usando o modo pass-thru.(8Kbps) GSM (12-13 Kbps) iLBC (15 Kbps) LPC10 - (2.5 Kbps) Speex - (2.15-44.2 Kbps)
Protocolos
Enviar dados de um telefone a outro seria fcil se os dados encontrassem seu prprio caminho para o outro telefone. Infelizmente isto no acontece, preciso um protocolo de sinalizao para estabelecer as conexes, determinar o ponto de destino, e tambm questes relacionadas sinalizao de telefonia. O Asterisk suporta os seguintes protocolos de sesso para voz sobre IP. SIP; H323; IAXv1 e v2; MGCP; SCCP (Cisco Skinny); Nortel Unistim.
Aplicaes
Para conectar as chamadas de entrada com as chamadas de sada ou outros usurios do Asterisk so usadas diversas aplicaes como o Dial(), por exemplo. A maior parte das funcionalidades do Asterisk criada na forma de aplicaes como, por exemplo, correio de voz (voicemail()), conferncia (meetme()), ente muitas outras. Voc pode ver as aplicaes disponveis no Asterisk usando o comando: CLI>core show applications Alm das aplicaes na verso padro existem aplicaes que podem ser adicionadas a partir do arquivo asterisk-addons e de terceiros. Voc mesmo pode desenvolver as suas prprias aplicaes se este for o caso.
O Asterisk um PABX multi-protocolo que integra tecnologias como TDM[2] e telefonia IP com funcionalidades avanadas como URA, DAC e correio de voz. Neste momento, provvel que voc no esteja entendendo todos estes termos, mas ao longo dos captulos, voc estar cada vez mais familiarizado. Na figura acima podemos ver que o Asterisk pode se conectar a uma operadora de telecomunicaes ou um PABX usando interfaces analgicas ou digitais. Os telefones podem ser IP. Ele pode atuar como um softswitch, media gateway, correio de voz, servidor de conferncia e possui um mecanismo de msica em espera interno.
comum iniciar construindo uma mquina de teste. A mquina de teste mais simples um PABX 1x1 com pelo menos uma linha e um telefone. Existem vrias formas de faz-lo, vamos examinar algumas.
Um FXO, Um FXS
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 telefnica comum e um telefone normal (analgico) porta FXS, com isso voc tem o PABX 1x1.
IP PBX
O cenrio mais comum a instalao de um novo PABX ou a substituio de um PABX existente. Se voc comparar o Asterisk com outras alternativas, ir descobrir que ele possui uma excelente relao custo/benefcio, contra centrais digitais e principalmente IP.
outros escritrios, de forma que no seja necessrio pagar as taxas de telefonia interurbana.
Media Gateway
A maioria dos provedores de voz sobre IP usam um SIP proxy para fazer o registro, localizao e autenticao dos usurios. De qualquer forma a ligao tem de ser encaminhada na maioria das vezes para a rede pblica de telefonia. Isto pode ser feito diretamente atravs de um gateway PSTN usando interfaces E1 ou analgicas. Em muitos casos, no entanto preciso entroncar com um provedor de terminaes usando conexes SIP ou H.323. O Asterisk pode atuar nesta arquitetura como um media gateway traduzindo protocolos de sinalizao e codecs, sendo que, o seu custo chega a ser uma ordem de grandeza menor que as solues proprietrias de outras empresas.
URL: http://www.asteriskexperts.com.br - O site contm os fruns oficiais para aqueles que compraram este livro (Asterisk guia de configurao e Montando um provedor IP com SIP)
ou fizeram os cursos da V.Office. Contm tambm tutoriais, notcias e artigos em portugus. URL http://www.asteriskdocs.org - site da comunidade sobre documentao do Asterisk URL: http://www.asteriskguru.com - Excelentes tutoriais e utilitrios gratuitos URL: http://www.voip-info.org - Uma das melhores referncias sobre o Asterisk. Est ficando aos poucos confuso e desatualizado com a mistura de exemplos das verses 1.0, 1.2 e 1.4. URL http://svn.digium.com/view/asterisk/branches/1.4/doc/ - Tem os docs relativos a distribuio do Asterisk 1.4. So de grande auxlio para entender as novidades da verso.
Resumo
O Asterisk um software com licenciamento GPL, que transforma um PC comum em uma poderosa central telefnica. Foi criado por Mark Spencer da Digium que comercializa o hardware de telefonia. O Hardware de telefonia tambm aberto e foi desenvolvido por Jim Dixon do projeto Zapata Telephony. A arquitetura do Asterisk se compe basicamente de: CANAIS que podem ser analgicos, digitais ou VoIP. PROTOCOLOS de comunicao como o SIP, H323, MGCP e IAX que so responsveis pela sinalizao das chamadas. CODECs que fazem a codificao da voz, permitindo que seja transmitida com compresso de at oito vezes (G729a), alm de permitir gerao de rudo de conforto e uma maior robustez a perda de pacotes. APLICAES que so responsveis pela funcionalidade do PABX. Alguns exemplos so correio de voz , conferncia e URA O Asterisk pode ser usado em inmeras aplicaes, desde um PABX para uma pequena empresa at sistemas de resposta automtica de alta densidade.
Questionrio
1. Marque as opes corretas. O Asterisk tem quatro componentes bsicos de arquitetura CANAIS PROTOCOLOS AGENTES TELEFONES CODECS APLICAES 2. Marque as opes corretas, O Asterisk permite os seguintes recursos: Unidade de Resposta Automtica Distribuio automtica de chamadas Telefones IP Telefones Analgicos Telefones digitais de qualquer fabricante. 3. Para tocar msica em espera o Asterisk necessita de um CD Player ligado em um ramal FXO. A afirmao est: CORRETA INCORRETA 4. responsvel pelo atendimento automtico de clientes, normalmente toca um prompt e espera que usurio selecione uma opo. Em alguns casos pode ser usado em conjunto com um banco de dados e tambm com converso 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 esto includos no PABX. Esta afirmao est: CORRETA INCORRETA 6 Marque as opes corretas. possvel interligar usando o Asterisk vrias filiais atravs de voz sobre IP reduzindo a despesa com ligaes de longa distncia. Em uma filial: O Asterisk pode ser a central telefnica para todos os usurios. O Asterisk pode se integrar uma central telefnica 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 so os principais tipos de centrais de atendimento? Receptivo
Ativo Misto Externo Interno 8. O Asterisk capaz de suporte no mximo 200 ramais em um nico servidor Falso Verdadeiro 9. No Asterisk possvel processar a transcodificao e o cancelamento de eco Por software usando a CPU do servidor Por hardware usando uma placa TC400B Por hardware usando um mdulo de cancelamento de eco na placa E1 No possvel 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 analgicos, Telefones Digitais ISDN, MFC/R2 Ramais, Troncos Receptivo Ativo Misto Externo Interno 8. O Asterisk capaz de suporte no mximo 200 ramais em um nico servidor Falso Verdadeiro
2 Baixando e instalando o Asterisk Este captulo vai ajud-lo a preparar seu sistema para a instalao do Asterisk. O Asterisk funciona em muitas plataformas e sistemas operacionais, mas ns escolhemos manter as coisas simples e ficar em uma nica plataforma e distribuio do Linux. Vamos usar o Debian Etch 4.0 neste livro. As instrues abaixo podem funcionar com outras distribuies do Linux, substituindo a parte de instalao das dependncias. O Asterisk funciona na maioria das distribuies populares como SuSe, Fedora, Red Hat, Ubuntu e Slackware.
Objetivos do captulo
Ao final deste captulo voc dever estar apto : Dimensionar o hardware necessrio ao Asterisk Instalar o Linux e as bibliotecas necessrias Baixar o Asterisk atravs de FTP Compilar o Asterisk Iniciar o Asterisk na carga do sistema Carregar o Asterisk com um usurio diferente de root.
Hardware Mnimo
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 compatvel com i386 que seja melhor que um Pentium 300Mhz com 256 MB RAM o suficiente. O Asterisk no requer muito espao em disco, cerca de 100 MB com o Asterisk compilado, mais o cdigo fonte, o correio de voz e possivelmente algumas gravaes de voz personalizadas. Se voc usar apenas VOIP, nenhum outro hardware necessrio. 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 aplicaes do Asterisk como o Meetme requerem uma fonte de clock para fornecer a temporizao. Normalmente a fonte de clock do Asterisk uma placa TDM. Se o seu sistema no tem uma placa TDM, voc pode usar o driver ztdummy. O ztdummy usa a USB como fonte de temporizao no kernel 2.4 e o RTC no kernel verso 2.6
Volts. Muitas placas-me compartilham interrupes em slots PCI. Conflito de interrupo uma fonte potencial de problemas de qualidade de udio no Asterisk. Uma maneira de liberar IRQs desabilitar na BIOS todo o hardware que no for utilizado, como placas de som on-board, por exemplo.
Requisitos do Linux
Vrias distribuies como RedHat, Mandrake, Fedora, Debian, Slackware e Gentoo foram usadas com sucesso com o Asterisk. Eu escolhi o Debian Sarge 3.1 (a verso estvel desse projeto durante o desenvolvimento deste material). O mesmo pode ser baixado de www.debian.org.
Pacotes necessrios.
Exigidos pelo ASTERISK: readline, readline-devel (obrigatrio nas verses anteriores a 1.2) bison (obrigatrio nas verses anteriores a 1.2) openssl, openssl-dev termcap ncurses-devel zlib, zlib-devel Exigidos pelo zaptel: Kernel sources Nota: O pacote zaptel exigido para a compilao de algumas aplicaes do ASTERISK, por exemplo, o meetme(). Se voc compilou o ASTERISK antes do Zaptel, voc dever compil-lo novamente para que as essas aplicaes estejam disponveis.
** Cuidado ! ** Todas as informaes do seu disco rgido sero 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 ficaro em uma partio. Passo 2: Siga todos os passos at o fim da instalao. Se voc selecionar corretamente a lngua e o pas receber instrues bem claras de como instalar.
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_usbe4e4:1150 Astribank-multi no-firmware
A tela acima pede que voc edite o arquivo /etc/dahdi/modules e carregue apenas os drivers necessrios abaixo como cortesia mostra a voc o hardware que foi detectado. Edite o arquivo /etc/dahdi/modules para carregar apenas o hardware necessrio. No caso da minha mquina 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 # # # 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 would like to add any module parameters.
# 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.
Compilando o Asterisk
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 aplicaes e mdulos sero compilados atravs do make menuselect. cd /usr/src/libpri-1.4.x/ make make install cd /usr/src/asterisk-1.4.X ./configure make menuselect make make install make samples make config ;use para crier os arquivos de configurao ;use para inicializar o asterisk na hora do boot ;Selecione os mdulos e use x para salvar e sair
/sbin/asterisk Voc pode acessar a console de um processo do Asterisk que j esteja em execuo usando o comando abaixo. Mais de uma console pode ser conectada ao Asterisk simultaneamente. /sbin/asterisk r
; 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: ; ; ; ; ; ; ; ; Special filename "console" represents the system console debug notice warning error verbose dtmf
; ; 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 ------/var/log/asterisk/messages Type ---Status File Configuration - Warning Notice Error -----------------Enabled - Warning Notice Error
== Parsing '/etc/asterisk/logger.conf': Found Asterisk Event Logger restarted Asterisk Queue Logger restarted Voc pode programar a rotao 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
Resumo
Neste captulo voc aprendeu sobre os requisitos mnimos de hardware do Asterisk, como baixar, compilar e instalar o Asterisk. Tambm vimos que o Asterisk deve ser executado com um usurio que no seja o root, por motivo de segurana. No se esquea de verificar seu ambiente de rede antes de iniciar um servidor Asterisk em produo.
Questionrio
1. Qual a configurao mnima para o Asterisk.
2. As placas de telefonia para o Asterisk tm um processador prprio (DSP), no precisando assim de muita CPU do servidor. Correto Incorreto 3. Para que a telefonia IP funcione com perfeio necessrio que a rede possua QoS fim-a-fim. Correto Incorreto 4. possvel obter uma boa qualidade de voz em uma rede que no esteja congestionada com switches de 100 Mbps. Correto Incorreto 5. Liste abaixo as bibliotecas necessrias para compilar o Asterisk.
6. Se voc no tem uma placa zaptel voc precisa de uma fonte de tempo. O driver ztdummy faz este papel na verso de kernel 2.4 do Linux aproveitando uma biblioteca USB. Isto necessrio, pois algumas aplicaes como o _______ e o ______ precisam de uma referncia de tempo. 7. Quando voc faz uma instalao do Asterisk, o melhor no instalar os pacotes grficos como o KDE e GNOME, pois o Asterisk sensvel na questo de CPU e interfaces grfica roubam muitos ciclos de CPU do servidor. Correto Incorreto 8. Os arquivos de configurao do Asterisk ficam em ____________________. 9. Para instalar os arquivos de configurao de exemplo voc precisa executar o seguinte comando.
3 Primeiros passos usando Asterisk Neste captulo voc aprender a configurar o Asterisk dentro de uma configurao de PABX simples. O objetivo aqui que voc possa ter uma primeira experincia com o Asterisk, configurando um ou dois telefones IP, discando entre eles ou para uma extenso com uma mensagem inicial. Mais frente, vamos mostrar, com detalhes, os canais SIP, IAX e ZAPATA. importante que voc entenda os conceitos apresentados neste captulo para prosseguir para os captulos seguintes.
Objetivos do captulo
Ao final deste captulo voc estar apto : Entender e editar os arquivos de configurao Instalar softfones baseados em SIP Configurar um plano de discagem simples Discar entre ramais Discar para uma mensagem criada no sistema
Conf. File
Exemplo
As opes so definidas Herana de Opes antes e os objetos herdam zapata.conf essas opes
Entidade Complexa
Grupo simples
O formato de grupo simples o mais bsico e usado por arquivos de configurao onde os objetos so declarados com todas as opes 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 opes op1, op2 e op3 enquanto o objeto 2 criado com op1b, op2b e op3b.
podem ser mudadas para a declarao de outro objeto. um conceito difcil de entender, mas muito fcil 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 opo op1 e op2 para bas e adv respectivamente. Quando o objeto 1 instanciado, ele criado com sua opo 1 sendo bas e sua opo 2 sendo adv. Aps declarar o objeto 1, mudamos o valor da opo 1 para int. E ento criamos o objeto 2, agora o objeto 2 criado com sua opo 1 sendo int e sua opo 2 permanece adv.
interface FXO. Devido ao fim da fabricao do chipset principal com que elas eram fabricadas, estas placas so cada vez mais raras.
Na figura baixo foi criado o ramal 6000 com senha 1234 j com SIP, IAX e correio de voz prconfigurado. No necessrio incluir os ramais no arquivo extensions.conf. Qualquer chamada a um ramal ser processada pela macro macro-stdexten por default. Quando voc cria um usurio usando o users.conf. Os arquivos individuais, sip.conf, iax.conf e voicemail.conf no so alterados por esta configurao. [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
Seo [general]
O arquivo SIP lido de cima para baixo. A primeira seo contm as opes globais [general]. Estas opes so: allow: Permite que um determinado codec seja usado. bindaddr: Endereo IP onde o Asterisk ir esperar pelas conexes SIP. O comportamento padro esperar em todas as interfaces e endereos secundrios. context: Configura o contexto padro onde todos os clientes sero colocados, a menos que seja sobrescrito na definio da entidade. disallow: Probe um determinado codec. bindport: Porta que o Asterisk deve esperar por conexes de entrada SIP. O padro 5060. maxexpirey: Tempo mximo para registro em segundos. defaultexpirey: Tempo padro para registro em segundos.
register: Registra o Asterisk com outro host. O formato um endereo SIP opcionalmente seguido por uma barra normal (/) e a extenso. Exemplo: [general] bindport = 5060 bindaddr = 10.1.30.45 context = default disallow = all allow = ulaw maxexpirey = 120 defaultexpirey = 80
host: Configura o endereo IP ou o nome do host. Pode-se usar tambm a opo dynamic onde se espera que o host faa o registro, a opo mais comum. secret: Senha usada para autenticar o peer ou user fazendo uma chamada. Exemplo:
Vamos agora criar um plano de discagem bsico, mas que atende as nossas necessidades atuais. Nas sees subseqentes do livro dedicaremos dois captulos 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.
Extenses
O plano de discagem um conjunto de extenses. Uma extenso uma string que vai disparar um evento quando uma chamada realizada. Extenses podem ser literais ou seguir uma mscara padro. Exemplo: exten=>8580,1,Dial(SIP/8580,20) exten=>8580,2,hangup() A instruo exten=> descreve qual o prximo passo para a ligao. O 8580 o conjunto de dgitos que foi recebido (nmero discado). O 1, 2 e 101 so as prioridades que determinam a ordem de execuo dos comandos. Neste exemplo, discando 8580 ir tocar o telefone IP registrado como 8580 e. caso a
ligao no 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 nmero da extenso ou nome, a vrgula, a prioridade, outra vrgula e finalmente a aplicao. Extenso o endereo correspondente da chamada (o nmero do telefone). Prioridades determinam a ordem de execuo das aplicaes. Aplicao a ao a ser tomada (dial, playback, hangup). Cada ao corresponde a uma aplicao diferente.
Prioridades
Prioridades so passos numerados na execuo de cada extenso. Cada prioridade chama uma aplicao especifica. Normalmente estes nmeros de prioridade comeam com 1 e aumentam de um a um em cada extenso. Se os nmeros das prioridades no forem seqenciais o Asterisk aborta a execuo. A partir da verso 1.2 do Asterisk, tornou-se comum o uso da prioridade n, no lugar da associao manual de nmeros, assim como a possibilidade da utilizao de labels e aliases. Entraremos em maiores detalhes no captulo oito.
Aplicaes
As aplicaes so partes fundamentais do Asterisk, elas tratam o canal de voz, tocando sons, aceitando dgitos ou encerrando uma chamada. As aplicaes so chamadas com opes que afetam a sua forma de funcionamento. Voc pode usar core show applications na interface de linha de comando do Asterisk para verificar as aplicaes disponveis. Na medida em que voc construir seu primeiro plano de discagem voc vai aprender a usar as aplicaes de forma apropriada. Voc pode ver as opes de aplicao instaladas no Asterisk usando o comando: CLI>core show applications
Contextos
Os contextos tm um papel importante no Asterisk na organizao e segurana do plano de discagem. Os contextos tambm definem o escopo e permitem separar diferentes partes do plano de discagem. Um ponto que chama ateno que os contextos esto ligados diretamente aos canais. Cada canal existe dentro de um contexto. Quando uma ligao entra no Asterisk por um canal ela processada dentro do contexto deste canal. Vamos supor, por exemplo, que voc tenha duas classes de usurios. 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 alcanar 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 nmero, 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 usurios no mesmo servidor Asterisk. Contextos podem, por exemplo, determinar quem pode e quem no pode realizar chamadas de longa distncia. Os contextos recebem o seu nome dentro de chaves ([]s). Por exemplo, se ns fossemos criar um contexto para a entrada de chamadas, poderamos definir como: [entrada] Todas as instrues colocadas aps a definio so partes do contexto. Para iniciar um novo contexto, simplesmente declare o novo contexto [novocontexto]. Um contexto acaba quando existe a declarao de um novo contexto. No incio do arquivo extensions.conf existe um contexto chamado [globals]. O contexto globals onde as variveis globais so definidas e podem ser usadas por todo o plano de discagem. J o contexto [general] utilizado para definir alguns parmetros gerais.
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. 2. 3. Execute o programa de instalao; Pressione next na primeira tela; Aceite o contrato de licena;
4. Aceite as prximas telas na situao padro at terminar a instalao. Em outras palavras NEXT->NEXT->FINISH; 5. 6. 7. 8. 9. Na tela seguinte escolha system settings; Na prxima escolha SIP PROXY; Escolha Default; Entre no menu no X-LITE pressionando o cone mostrado abaixo:
Preencha os seguintes campos: Display Name: 6000 Username: 6000 Authorization User: 6000 Password: 6000 Domain/Realm: Endereo IP do servidor SIP Proxy: Endereo 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 configurao do XLITE para o softfone 6001.
Exemplo bsico
Agora estamos prontos para criar o extensions.conf da forma mais simples possvel. 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 aplicao answer(), o Asterisk toma conta da linha e configura a chamada. Aps responder a linha, o Asterisk vai para a prxima prioridade. Prioridade 2 - o Asterisk chama a aplicao playback() para tocar o arquivo de som goodbye.gsm (por enquanto vamos usar as mensagens em ingls), esta mensagem dar uma mensagem de adeus ao usurio. Prioridade 3 - ir desconectar o usurio. Explicao 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 extenso s. Ns temos trs prioridades no contexto: 1, 2 e 3. Cada prioridade chama um aplicativo. Vamos olhar de perto as prioridades: A extenso especial s, que significa incio (start), utilizada quando o nmero que discou para o Asterisk no conhecido (como por exemplo, em uma linha analgica). De uma forma geral a chamada inicia no contexto ao qual o canal pertence. A extenso s imediatamente executada ao entrar em um canal. Se vamos responder a uma chamada, melhor conhecermos as aplicaes que vo fazer isto. A aplicao answer() usada para responder a um canal que est tocando. Ela faz a configurao inicial da chamada e pode fazer outras funes. Poucas aplicaes no requerem que necessariamente se responda (answer) o canal antes de fazer qualquer outra coisa. A aplicao playback() usada para tocar um arquivo de som previamente gravado sobre um canal. Quando a aplicao playback() est sendo executada, qualquer dgito pressionado pelo usurio simplesmente ignorado. O formato playback(nomedoarquivo), ele toca o arquivo com a extenso .gsm ou .wav no diretrio de sons padro (/var/lib/asterisk/sounds). A aplicao 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 no precisa estar conectado no sistema.
movimentao entre diferentes partes do plano de discagem. O formato do comando goto() precisa do contexto de destino e prioridade como argumentos. Sintaxe da aplicao goto(): exten=>extenso, prioridade,goto(contexto,extenso, prioridade) Formatos vlidos do comando goto() so : goto(contexto,extenso,prioridade) goto(extenso,prioridade) goto(prioridade) Neste exemplo, vamos assumir que somos uma empresa de suporte, treinamento e vendas. Vamos criar um sistema interativo que permita ao usurio 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 no vamos explorar o tratamento de dgitos invlidos. Em cada contexto vamos tocar uma gravao como voc foi redirecionado para o departamento de suporte. [entrada] exten=>s,1,answer() exten=>s,2,background(saudao) 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 algum liga na interface FXO (Configurada para o contexto [entrada]), a ligao passada para a extenso s dentro do contexto [entrada]. A extenso s atende a ligao e usando o comando background() toca uma saudao e aguarda pela discagem de um dgito. Aps discar o dgito 1 por exemplo, o sistema vai para a extenso 1 na prioridade 1 e toca uma mensagem no arquivo suporte.gsm (Algo como, voc ligou para o suporte tcnico). Em seguida temos o comando goto() que manda a ligao para o contexto (suporte) onde ela ser tratada por uma fila de atendimento.
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 invs de enviar para outro contexto para o tratamento da chamada, enviamos diretamente para o ramal destino. Para suporte a ligao encaminhada para a extenso SIP identificada pelo nmero 8000. Para treinamento a ligao direcionada para o canal TDM identificado como 1 e por ltimo vendas ser atendida pelo telefone IAX2 identificado pelo nmero 8002. Neste ponto voc j deve estar entendendo o uso de vrias aplicaes como o answer(), background(), goto(), hangup() e playback() e o bsico do comando dial(). Isto fundamental para o aprendizado daqui para frente. Se ainda no est claro volte e releia, fundamental que fique entendido o processo antes que se passe a frente. Com um entendimento bsico das extenses, prioridades e aplicaes simples criar um plano de numerao bsico. Nos prximos captulos vamos fazer um plano de discagem ainda mais poderoso.
Laboratrio
Neste laboratrio vamos criar uma pequena central telefnica capaz de discar entre ramais, para a rede pblica pela placa PSTN ou por um provedor VoIP e receber chamadas usando atendimento automtico. Instrues para o laboratrio: Os ramais vo de 6000 a 6100; Para sair para a rede pblica se disca o nmero 0 (zero); Para sair para a rede pblica atravs de um provedor se disca 1 (um); 8000 ser o ramal para gravao do menu de auto-atendimento.
Resumo
Neste captulo voc aprendeu que os arquivos de configurao ficam em /etc/asterisk. Para usar o Asterisk preciso em primeiro lugar configurar os canais (Ex. sip.conf e zapata.conf). Existem basicamente trs formatos o grupo simples, herana de opes entidade complexa. O plano de discagem criado no arquivo extensions.conf, nele so criados contextos, aplicaes, extenses e prioridades. As aplicaes que aprendemos at agora so: playback(), background(), dial(), goto(), hangup() e answer().
O comando background() importante na criao de uma unidade de resposta automtica (URA). J o dial() o principal comando do plano de discagem.
Questionrio
1. So exemplos de arquivos de configurao de canais Asterisk. zaptel.conf zapata.conf sip.conf iax.conf 2. importante definir o contexto no arquivo de canais, pois quando uma ligao 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 conexes de voz sobre IP. Ele bastante antigo e vem sendo substitudo recentemente pelo H.323. Correto Incorreto 4. Dada a configurao abaixo do arquivo sip.conf, na seo [general] est definido o endereo IP 10.1.30.45, onde o SIP estar esperando por conexes. Se fosse necessrio que todas as placas de rede da mquina esperassem por uma conexo 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 diferena 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 dgitos discados. Correto Incorreto 7. Quando uma ligao entra no Asterisk por uma interface de telefonia (FXO) sem identificao de chamada, esta ligao desviada para a extenso especial: 0 9
s i 8. Os formatos vlidos para o comando goto() so: goto(contexto,extenso,prioridade) goto(prioridade, contexto, extenso) goto(extenso,prioridade) goto(prioridade)
[1] POTS Plain Old Telephony System, sistema de telefonia convencional, baseado normalmente em linhas analgicas. 1 TDM TDM - multiplexao por diviso de tempo, toda a telefonia convencional est baseada neste conceito, quando falarmos em TDM estaremos nos referindo a circuitos T1 e E1. E1 mais comum no Brasil e Europa, T1 mais usado nos EUA.