Vous êtes sur la page 1sur 63

A verso completa deste livro impresso pode ser comprada em http://www.shopvoip.com.br/product_info.php?cPath=5887&products_id=1076.

Os trs primeiros captulos formam um excelente guia de introduo ao Asterisk

Como construir e configurar um PABX com software livre

Abordando a verso 1.4

Flavio E. Gonalves
Quarta Gerao

1. Edio/Dezembro/2008
rev. 9

Florianpolis-SC-Brasil/2006

Copyright 2005 por Flavio E. Gonalves Todos os direitos reservados

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.

Crticas sugestes erros de grafia


Todas as pessoas que eu conheo detestam ser criticadas. Eu no me excluo desse grupo, mas gostando ou no, as crticas, quando construtivas, so a melhor forma de evoluo e melhoria constante. Este livro e o curso no qual se baseia tiveram uma boa retroalimentao de alunos e leitores durante os anos de 2005 e 2006. Os captulos de bilhetagem e uma abordagem mais profunda de AMI e AGI contida no captulo quatorze foram sugestes de usurios. Outra sugesto acatada foi o uso de placas Digium e configurao real nos cursos. Por mais que nos esforcemos, sempre existem erros de grafia e contedo. Ficamos agradecidos a qualquer um que os aponte e nos permita corrigir. Quaisquer erros podem ser comunicados em: oops@asteriskguide.com

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

Definies e conceitos bsicos


O Asterisk um software de PABX que usa o conceito de software livre. Ele licenciado atravs de uma licena do tipo GPL Gnu Public License. A Digium, empresa que promove o Asterisk, investe em ambos, o desenvolvimento do cdigo 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 pblica de telefonia. O Asterisk permite conectividade em tempo real entre a rede pblica de telefonia e redes VoIP. A rede pblica de telefonia freqentemente referida pela sua sigla em ingls PSTN (Public Switched Telephony Network). O Asterisk muito mais que um PABX padro. Com ele voc no apenas tem um excepcional upgrade do seu PABX convencional, como tambm adiciona novas funcionalidades a ele, tais como: Conectar colaboradores trabalhando de casa com o PABX do escritrio sobre conexes de banda larga. Conectar escritrios em vrios estados sobre IP. Isto pode ser feito pela Internet ou por uma rede IP privada. Dar aos funcionrios correio de voz, integrado com a web e seu e-mail. Construir aplicaes de resposta automtica por voz, que podem conect-lo ao sistema de pedidos, por exemplo, ou ainda outras aplicaes internas. Dar acesso ao PABX da companhia para usurios que viajam, conectados sobre VPN de um

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.

Qual o papel da Digium?


A Digium baseada em Huntsville, Alabama e a criadora e desenvolvedora primria do Asterisk, o primeiro PABX de cdigo aberto da indstria. Metade do desenvolvimento feito pela empresa e metade pela comunidade. Quando usado em conjunto com as placas de telefonia PCI, ele oferece excelente relao custo/benefcio 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 lderes na indstria de PABX em cdigo aberto. Mark Spencer, seu CTO foi o criador do Asterisk e hoje um dos nomes mais respeitados na indstria de telefonia IP. A Digium oferece o Asterisk em trs tipos de licenciamento:

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.

Roda no Linux e cdigo aberto


Uma das coisas mais fantsticas do Linux a comunidade de software livre. Quando eu acesso o Wiki (www.voip-info.org), ou os fruns de software em cdigo aberto eu percebo que a adoo de usurios muito rpida, milhares de questes e relatos de problemas so enviados todos os dias. O Asterisk provavelmente um dos softwares que mais pessoas tm disponveis para testes e avanos. Entre a verso 1.0 e a 1.2, mais de 3000 modificaes ou correes foram efetuadas. Isto torna o cdigo estvel e permite a rpida resoluo de problemas.

Principais objees ao Asterisk


comum ouvirmos tambm objees ao Asterisk. Vamos rebater algumas destas objees abaixo:

A participao de mercado do Asterisk muito pequena?


A participao no mercado medida na maioria das vezes atravs do volume de vendas. Como o Asterisk um software gratuito, ele no aparece nas estatsticas de vendas de PABX IP. No entanto so 1 milho de downloads por ano e mais de 300.000 sistemas instalados. Este volume de sistemas estimado pelo nmero 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 milhes de portas de gateway (FXS, FXO e E1).

Se gratuito como o fabricante sobrevive?


A Digium uma companhia com 120 funcionrios muito bem capitalizada. Ela sobrevive da venda de placas de telefonia (analgicas e digitais), da venda do PBX baseado em Asterisk chamado Switchvox, licenciamento de software comercial, treinamento e servios. A empresa demonstrou lucro nos ltimos 24 trimestres (Jun/2008).

Como encontro suporte tcnico?


A Digium fornece suporte tcnico para aqueles que compram a verso 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 implantao de Asterisk. Este esquema muito semelhante ao usado por todos os outros fabricantes de equipamentos para telefonia IP.

O Asterisk no suporta mais de 200 ramais?


Isto no verdade. Um nico servidor capaz de suportar centenas de ligaes simultneas e milhares de ramais. O Asterisk altamente escalonvel com o uso de balanceadores de carga e um projeto adequado.

S nerds conseguem instalar o Asterisk!


Com o AsteriskNOW qualquer profissional de redes com algum conhecimento de telefonia capaz de instalar e configurar. Usando uma interface grfica possvel em menos de uma tarde ter um sistema bsico operacional.

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!

Nossa empresa no usa software livre!


Sua empresa provavelmente j usa software livre, apenas ainda no se deu conta. Boa parte dos dispositivos embarcados e appliances usam Linux (software livre) como sistema operacional, ento existe uma grande chance de voc j estar usando software livre. O software dos principais fornecedores de telefonia IP tambm roda sobre Linux que livre. Se sua empresa tem uma poltica contra o uso de software livre voc pode licenciar a verso Business Edition

Usar a CPU do PC para processar o udio condenvel!


O Asterisk usa a CPU do servidor para processar os canais de voz, ao invs 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 lanou uma placa chamada TC400B com DSPs para aqueles que desejam processar a voz (transcodificao, 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 razovel se comparado com o custo de licenciamento individual do code G.729 j embutido.

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).

Codecs e Converses de CODEC


O papel dos CODECs (COder/DECoder) codificar a voz em um formato especfico para transporte em uma rede digital. Cada tipo de CODEC possui um uso especfico. Alguns como o g.729, por exemplo, permitem que se codifique o sinal de udio velocidade de 8 kilobits/segundo, uma compresso de 8 para 1 em comparao com a codificao PCM (Pulse Code Modulation) usada na rede pblica. Alm disso, a codificao de voz permite a utilizao de diversas outras funcionalidades, como por exemplo: Deteco de voz (VAD) Transmisso de dados descontinua (DTX) Gerao de rudo de conforto (CNG) Maior robustez frente a perda de pacotes Existem diversos CODECs que se pode utilizar, sendo que o Asterisk pode fazer a traduo de um CODEC para outro de forma transparente. Entretanto, alguns codecs no Asterisk so suportados apenas no modo passa-direto (pass-through), em outras palavras, eles no podem ser traduzidos, dado que o Asterisk no entende o fluxo de bits utilizado por eles. O Asterisk suporta os seguintes CODECs: G.711 ulaw (usado nos EUA) (64 Kbps)

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.

Viso geral do Asterisk

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.

Diferenas entre o velho e o novo mundo


Telefonia usando o velho modelo de PABX/Softswitch
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 proprietria.

Telefonia do jeito Asterisk


Com o Asterisk possvel ter todas estas funes de forma integrada. O licenciamento gratuito (GPL General Public License) e pode ser feito em um nico ou em vrios servidores de acordo com um dimensionamento apropriado. Algumas vezes, mais fcil implantar o Asterisk do que at mesmo especificar e licenciar um sistema de telefonia convencional.

Construindo um sistema de testes

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.

Provedor de servio VoIP, softfone ou ATA


Uma forma bastante econmica criar um Asterisk de teste puramente baseado em IP. Voc pode contratar um nmero de telefone junto a um provedor de servios de voz sobre IP. Existem vrios operando e algumas operadoras tradicionais j oferecem este servio. Na parte do telefone voc pode usar um softfone gratuito, existem vrios como o Idefisk, X-Lite e SJPhone. Voc pode tambm adquirir um adaptador de telefonia analgica (ATA) para ligar telefones analgicos a ele.

Placa clone FXO, softfone ou ATA


Esta a forma que eu usei para testar o Asterisk. Existem algumas placas de fax/modem padro V.90 que operam com o Asterisk. As placas X100P e X101P da Digium eram baseadas nestes chips. possvel conectar uma linha telefnica em uma placa destas. Depois que a Digium descontinuou a produo, 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.

Cenrios de uso do Asterisk


Existem diferentes cenrios onde o Asterisk pode ser usado. Vamos listar alguns, explicando as vantagens e possveis limitaes.

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.

Atualizao de PABX existente para suportar VoIP.


Voc pode ver na imagem abaixo um dos cenrios mais comuns. As grandes companhias normalmente no 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 possvel usar telefones IP, ATAs e softfones em escritrios remotos e mesmo se conectar a provedores de servio com melhores taxas.

Interligao de filiais atravs de VoIP


Uma aplicao muito til para VoIP a conexo de filiais usando uma rede WAN existente ou mesmo a Internet. Isto permite a voc evitar as tarifas das operadoras para as ligaes entre a matriz e as filiais. possvel inclusive, utilizar como sada os troncos existentes nas filiais a partir de

outros escritrios, de forma que no seja necessrio pagar as taxas de telefonia interurbana.

Servidor de aplicaes (URA, Conf., Voicemail)


Voc pode usar tambm o Asterisk como um servidor de aplicaes para um PABX existente ou conectado diretamente rede pblica. O Asterisk pode fazer os papeis de correio de voz, recepo de fax, gravao de chamadas, URA conectada a um banco de dados ou mesmo um servidor de udio conferncia. Se voc integrar o Asterisk ao e-mail voc ter um sistema de mensagens unificado que uma soluo muito dispendiosa em outras plataformas. Para estas aplicaes o Asterisk uma excelente opo com um custo relativamente pequeno.

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.

Plataforma para central de atendimento


Uma central de atendimento uma soluo muito complexa. Ela combina diversas tecnologias como DAC (distribuio automtica de chamadas), URA (unidade de resposta audvel), superviso de chamadas e agentes, relatrios entre outras coisas. Basicamente existem trs 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 solues de telefonia podem ser criadas totalmente dentro dele. No caso do ativo possvel integrar vrios discadores existentes no mercado (alguns open source) como o VICIDIAL, ou mesmo desenvolver o seu prprio.Operaes mistas, tambm conhecidas como blended tambm so possveis.

Encontrando informaes e documentao


Nesta seo vamos mostrar as principais fontes de informao relativas ao Asterisk. URL: http://www.asteriskexperts.com.br Este um dos sites no Brasil com muitas informaes sobre o Asterisk, tutoriais, downloads e calculadoras IP. URL: http://www.asterisk.org - Este o principal site sobre o Asterisk. L voc pode encontrar informaes sobre: Suporte-> http://www.asterisk.org/support Base de informaes-> http://kb.digium.com/ Frum ->http://forums.digium.com/ ->http://bugs.digium.com/ Rastreamento de erros

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

Montando o seu sistema


O hardware necessrio para o Asterisk no muito complicado. Voc no precisa de uma placa de vdeo sofisticada. Portas seriais, paralelas e USB podem ser completamente desabilitadas para evitar consumo de CPU tratando interrupes de hardware no utilizadas. Uma boa placa de rede essencial. Se voc estiver usando uma das placas da Digium, bom verificar as instrues da sua placa-me para determinar se os Slots PCI suportam estas placas, pois existem placas de 5 e 3.3

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.

Questes de compartilhamento de IRQ


Muitas placas de telefonia como a X100P podem gerar grandes quantidades de interrupes, atendlas toma tempo. Os drivers podem no conseguir faz-lo em tempo se outro dispositivo estiver processando a mesma IRQ compartilhada e a linha de IRQ no puder receber outra interrupo. Se possvel voc deve evitar o compartilhamento de interrupes de hardware. Como a entrega precisa de IRQs uma necessidade primria em telefonia, voc no deve compartilhar IRQs com nada. Nem sempre isto ocorre, mas voc deve prestar ateno ao problema. Se voc est usando um computador dedicado para o Asterisk, desabilite na BIOS o maior nmero de dispositivos que voc no v usar. A maioria das BIOS para servidores permite que voc manualmente aloque as IRQs. V at a BIOS e olhe na seo de IRQs. bem possvel que voc consiga configuras as interrupes 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 trs 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 no for o caso, volte na BIOS at que as placas no estejam compartilhando IRQs.

Escolhendo uma distribuio do Linux.


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.

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.

Instalando o Linux para atender ao Asterisk.


Usamos o Debian Etch 4.0 para a instalao do Asterisk com o Linux. Escolha a verso mais recente do Debian. As imagens podem ser encontradas em: http://cdimage.debian.org/debian-cd/4.0_r4a/i386/iso-cd/ Escolhemos esta distribuio pelo seu grau de aceitao e por ser uma das distribuies suportadas pela Digium. Abaixo seguem as instrues da instalao do Asterisk a partir do zero. Passo 1: Coloque o CD do Debian no cdrom e inicialize o seu PC. A maioria das questes perguntadas so basicas. Responda conforme o seu hardware e necessidades. Destacaremos alguns pontos importantes abaixo.

** 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.

Preparando o Debian para o Asterisk.


A instalao do Debian est completa, vamos agora instalar os pacotes necessrios para a instalao/compilao dos drivers das placas zaptel e do prprio Asterisk. Passo 1: Faa o login como root Passo 2: Instalar os Headers do Kernel em execuo: #apt-get install linux-headers-`uname r` Passo 3: Instalao dos pacotes necessrios 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

Obtendo e compilando o Asterisk


Agora que voc j instalou o Linux e as bibliotecas necessrias, vamos partir para a instalao do Asterisk.

Obtendo os fontes 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 diretrio /usr/src se ele no existir. No momento do fechamento deste livro estas eram as verses correntes, substitua os comandos abaixo com os arquivos das verses 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

Compilando o driver DAHDI


Voc precisar compilar os mdulos DAHDI. Rode os seguintes comandos para compilar e instalar o DAHDI. O mdulo DAHDI foi separado em dois arquivos: dahdi-linux que onde efetivamente os drivers so compilados e dahdi-tools com os utilitrios 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 Aps executar o make config sero instalados os scripts de inicializao 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_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

Iniciando e parando o Asterisk


Com esta configurao mnima, j possvel iniciar o Asterisk: /usr/sbin/asterisk vvvgc Use o comando stop now para interromper o Asterisk. Veja os comandos disponveis na interface de linha de comando do Asterisk. CLI>stop now

Parmetros de linha de comando do Asterisk.


O processo de executar o Asterisk bem simples. Se o Asterisk for rodado sem argumentos, ele lanado como um daemon (Processo que roda em background e espera conexes em uma porta TCP ou UDP).

/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

Abaixo os parmetros disponveis


Voc pode verificar as opes de inicializao do ASTERISK disponveis 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 -C <configfile> -G <group> -U <user> -c -d -f -F -g -h -i -I -L <load> -M <value> -m -n -p -q -r -R -t are done. -T the CLI. -v -x <cmd> Display version number and exit Use an alternate configuration file Run as a group other than the caller Run as a user other than the caller Provide console CLI Enable extra debugging Do not fork Always fork Dump core in case of a crash This help screen Initialize crypto keys at startup Enable internal timing if Zaptel timer is available Limit the maximum load average before rejecting new calls Limit the maximum number of calls to the specified value Mute the console from debugging and verbose output Disable console colorization Run as pseudo-realtime thread Quiet mode (suppress output) Connect to Asterisk on this machine Connect to Asterisk, and attempt to reconnect if disconnected Record soundfiles in /var/tmp and move them where they belong after they Display the time in [Mmm dd hh:mm:ss] format for each line of output to Increase verbosity (multiple v's = more verbose) Execute command <cmd> (only valid with -r)

Diretrios de instalao do Asterisk.


O Asterisk instalado em diversos diretrios. Estes diretrios 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

Arquivos de log do Asterisk e rotao de logs,


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: ; ; ; ; ; ; ; ; 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

Console Enabled CLI> logger rotate

== 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

Iniciando o Asterisk usando um usurio diferente de root.


mais seguro executar o Asterisk com um usurio diferente do usurio root. No caso de uma falha de segurana como, por exemplo, um ataque do tipo buffer overflow mais seguro que o Asterisk tenha sido iniciado com um usurio menos privilegiado. Para alterar o usurio de execuo do Asterisk voc deve seguir os seguintes passos. Passo 1: Edite o arquivo. vi /etc/init.d/asterisk Passo 2: Retire o comentrio das seguintes linhas do arquivo removendo o # do incio de cada linha: /etc/init.d/asterisk AST_USER="asterisk" AST_GROUP="asterisk" Passo 3: Para alterar os direitos do usurio asterisk nas pastas utilizadas para a execuo 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 alteraes realizadas digitando: /etc/init.d/asterisk start

Consideraes sobre a instalao do Asterisk


Sistemas em produo
Se o Asterisk for instalado em um ambiente de produo, deve-se prestar ateno no projeto do sistema. O servidor deve ser otimizado de forma que as funes de telefonia tenham prioridade sobre os outros processos do sistema. Na maioria dos casos o Asterisk no deve rodar outros processos, principalmente se forem intensivos em CPU. Se forem necessrios 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 sensvel a variaes na performance da mquina. Portanto evite utilizar o Asterisk em uma mquina que tenha uma utilizao de CPU mdia superior a 40%.

2.11.2 Consideraes sobre a rede


Se voc vai usar telefones IP importante que voc preste ateno a algumas questes sobre a rede. Os protocolos de voz sobre IP so muito bons e resistentes a perdas de pacotes, atrasos e variaes de atrasos. Entretanto se voc abusar, a qualidade de voz no ser boa. S possvel garantir a qualidade da voz utilizando mecanismos de qualidade de servio (QoS) fim-a-fim, o que invivel principalmente em telefonia sobre a Internet. Desta forma seguem algumas recomendaes: Implante QoS fim-a-fim sempre que possvel. Mesmo em switches de 100Mbps onde raro ter um congestionamento, vale a pena, um vrus ou uma condio de rede inesperada pode por tudo a perder; Seja conservador, use, por exemplo, uma conexo de Internet exclusiva para softfones e telefones IP. Na maioria das vezes os backbones tm folga no trfego, mas a conexo de acesso congestionada pelo prprio usurio com downloads, e-mails, etc; Evite hubs, as colises nestes equipamentos, causam variao no atraso (jitter). Jitter um dos piores inimigos da telefonia IP. Oriente os usurios de telefonia sobre a Internet onde no possvel garantir a qualidade. Manter as expectativas em um nvel realista evita problemas futuros e comentrios como Se eu soubesse que era assim..... Quando usar uma rede IP privada com equipamentos que suportam QoS fim-a-fim, se a qualidade da voz estiver ruim, verifique imediatamente, provvel que exista algum problema na sua rede. Com QoS bem implementado a qualidade de voz perfeita, sem desculpas.

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.

10. Porque importante inicializar o Asterisk com um usurio diferente de root.

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

Gramtica dos arquivos de configurao


O Asterisk controlado atravs de arquivos de configurao localizados no diretrio /etc/asterisk. importante entender o formato destes arquivos de que semelhante aos arquivos (.ini) do Windows. O ponto e vrgula o caractere de comentrio. Arquivo de exemplo: ; ; A primeira linha sem ser comentrio deve ser o ttulo de uma sesso. ; [sessao] chave = valor ; Designao de varivel [sessao2] objeto => valor ; Declarao de objeto O interpretador do Asterisk interpreta (=) e (=>) de forma idntica. A sintaxe apenas para tornar o cdigo mais legvel. Embora os arquivos compartilhem a mesma sintaxe, existem pelo menos trs tipos distintos de gramtica.

Gramtica Grupo Simples

Criao dos Objetos Todos na mesma linha

Conf. File

Exemplo

extensions.conf exten=>4000,1,Dial(SIP/4000) [channels] context=default

As opes so definidas Herana de Opes antes e os objetos herdam zapata.conf essas opes

signalling=fxs_ks group=1 channel => 1 [cisco] type=friend secret=mysecret host=10.1.30.50

Entidade Complexa

Cada entidade recebe um contexto

sip.conf, context=trusted iax.conf [xlite] type=friend secret=xlite host=dynamic

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.

Formato de objeto com herana de opes


Este formato usado pelo zapata.conf e outras interfaces onde h muitas opes. Entretanto, a maioria das interfaces e objetos compartilha o mesmo valor para opes. Nesta classe de arquivo de configurao, tipicamente existem uma ou mais sees que contm declaraes de um ou mais canais ou objetos. As opes para o objeto so especificadas acima da declarao do objeto e

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.

Objeto entidade complexa


O formato objeto entidade complexa usado pelo iax.conf e sip.conf e outras interfaces nas quais existem numerosas entidades com muitas opes e que tipicamente no compartilham um grande volume de configuraes comuns. Cada entidade recebe seu prprio contexto (s vezes existe um contexto reservado tal como [general] para as configuraes globais). As opes ento so especificadas na declarao de contexto. Considere: [entidade1] op1=valor1 op2=valor2 [entidade2] op1=valor3 op2=valor4 A entidade [entidade1] tem valores valor1 e valor2 para opes op1 e op2 respectivamente. A entidade [entidade2] tem valores valor3 e valor4 para as opes op1 e op2.

Configurando uma interface com a rede pblica


Para se interligar com a rede pblica de telefonia necessria uma interface do tipo FXO (Foreign Exchange Office) e uma linha telefnica comum. Um ramal de uma central telefnica analgica existente tambm pode ser utilizado. Voc pode obter uma placa FXO comprando uma placa Digium TDM400P ou uma X100P (clone, a Digium j no fabrica mais este hardware) com uma FXO. Em termos gerais, uma placa FXO usada para ligar na rede pblica ou a um PABX, esta placa recebe tom. Uma placa FXS em contrapartida pode ser usada para ligar um aparelho telefnico comum, uma linha FXS gera tom. Nota: Ainda existem algumas placas X100P, de baixo custo, disponveis com uma

interface FXO. Devido ao fim da fabricao do chipset principal com que elas eram fabricadas, estas placas so cada vez mais raras.

Instalando a placa X100P clone


Antes de instalar uma placa X100P no seu microcomputador, recomendvel que voc desabilite todas as interrupes e hardware que no est sendo usadas no momento, como portas seriais, paralelas, interrupo para vdeo entre outras. Para instalar a sua placa X100P voc deve encaix-la em um slot PCI e configurar dois arquivos de configurao: zaptel.conf no diretrio /etc que o arquivo de configurao da placa zaptel. zapata.conf no diretrio /etc/asterisk que o arquivo de configurao dos canais zapata do Asterisk. No se preocupe neste momento em entender todos os detalhes dos arquivos de configurao, teremos um captulo inteiro sobre canais analgicos e digitais. Neste momento queremos apenas integrar o Asterisk na rede pblica usando uma placa FXO. Vamos mostrar abaixo o arquivo completo e as instrues modificadas de forma destacada. Apesar de ocupar vrias pginas a maneira mais simples de entender a edio do arquivo. zaptel.conf fxsks=1 loadzone=br defaultzone=br channels=1 zapata.conf [channels] context=default signalling=fxs_ks group=1 channel => 1 Aps configurar os arquivos carregue os drivers da placa Zaptel como mostrado abaixo. modprobe zaptel modprobe wcfxo ztcfg vvvvvv asterisk -vvvvvgc

Configurao dos telefones IP


Existem basicamente duas formas de configurar telefones IP a partir da verso 1.4. Voc pode individualmente editar os arquivos de canais ou simplesmente criar os usurios 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 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

Configurao direta nos Arquivos SIP


Se voc quiser fazer a moda antiga, o protocolo SIP configurado no arquivo /etc/asterisk/sip.conf e contm parmetros relacionados configurao dos telefones e operadoras SIP. Os clientes SIP devem estar configurados antes que possam fazer e receber chamadas.

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

Opes para cada telefone


Aps a seo geral, seguem as definies das entidades padro SIP. bom lembrar que nesta seo vamos apenas dar uma introduo ao arquivo sip.conf. Teremos uma seo especfica para detalhar os outros parmetros. [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 conexo, as opes so peer, user e friend. peer: Entidade para a qual o Asterisk envia chamadas. user: Entidade que faz chamadas atravs do Asterisk. friend: Os dois ao mesmo tempo.

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:

[cisco] type=friend secret=mysecret host=10.1.30.50 context=trusted [xlite] type=friend secret=xlite host=dynamic

Introduo ao plano de discagem


O plano de discagem o corao do Asterisk, na medida, que ele define como o Asterisk ir gerenciar as chamadas. Ele consiste de uma lista de instrues ou passos que o Asterisk deveria seguir. Essas instrues so disparadas a partir dos dgitos recebidos de um canal ou aplicao. 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 diretrio /etc/asterisk. O arquivo pode ser separado em quatro partes: Contextos; Extenses; Prioridades; Aplicaes.

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.

Criando um ambiente de testes


A maneira mais econmica de testar o Asterisk conectar-se a um provedor (em www.voipcharges.com voc encontrar uma lista de provedores que atuam em qualquer pas do mundo), vamos ver como se conectar a um provedor no captulo relativo aos canais SIP. Outra forma usar uma placa FXO. Para fazer o laboratrio 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 (no 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 tambm que os dois citados acima no existam mais quando voc estiver lendo este material. Voc pode tambm criar este laboratrio usando um equipamento para o Asterisk e um adaptador de telefonia analgico de dois canais ou ainda fazendo uso de um IP fone SIP. Passo 1: Edite o arquivo sip.conf e adicione a configurao de um ramal com nmero 6000. [general] bindport=5060 bindaddr=10.1.30.45 ; Coloque aqui o endereo 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. 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.

Criando um plano de discagem simples


Agora, ns estamos prontos para nosso primeiro exemplo de plano de discagem. Por favor, prestem ateno maneira que cada prioridade chama uma aplicao. Note que neste exemplo temos apenas uma extenso 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 bsicos do Asterisk e como eles se encaixam dentro do arquivo extensions.conf.

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.

Um exemplo mais til


Agora que j comeamos simples, vamos incrementar aprendendo um pouco dos aplicativos background() e goto(). A chave para sistemas interativos baseados no Asterisk est na aplicao background(). Ela permite que voc execute um arquivo de som, mas quando o originador pressiona uma tecla isso interrompe a execuo e manda para a extenso correspondente aos dgitos discados. Sintaxe da aplicao background(): exten=>extension, priority, background(filename) Outra aplicao muito til o goto(). Como seu nome implica, ele pula de um contexto atual, extenso e prioridade para um contexto especfico e prioridade. A aplicao goto() torna fcil a

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.

Interligando canais com a aplicao dial()


Ns vamos adicionar ao nosso exemplo a aplicao dial(). Ao invs de mandar a ligao para outro contexto, vamos direcion-la a um ramal especfico. [entrada] exten=>s,1,answer() exten=>s,2,background(saudao) 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 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.

Ligando entre telefones.


Passo 1: Edite o arquivo extensions.conf e na seo 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.

Ligando para a rede pblica usando a placa zaptel


Passo 1: Edite o arquivo extensions.conf e na seo 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 nmero externo.

Recebendo ligaes usando auto-atendimento.


Passo 1: Edite o arquivo extensions.conf e digite os comandos abaixo, eles vo 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 nmero 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 ligao ser desviada para o ramal 6001. Se nada for discado a ligao ser automaticamente transferida para o ramal 6000.

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.

Vous aimerez peut-être aussi