Livro asterisk v_office_atualizado2

5,870 views
5,482 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,870
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
751
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Livro asterisk v_office_atualizado2

  1. 1. Asterisk PBX Guia de Configuração Como construir e configurar um PABX com Software Livre Segunda Geração Edição Revisada e Ampliada Julho/2006 Por: Flávio Eduardo de Andrade Gonçalves flavio.goncalves@voffice.com.br
  2. 2. III Todos os direitos reservados. É proibida a reprodução total ou parcial deste livro.
  3. 3. IV Prefácio Esta é a segunda geração do eBook Asterisk Guia de Configuração, a primeira foi lançada em março de 2005. Fiz o teste do dCAP da Digium em Maio de 2006 e tive o privilégio de passar na primeira tentativa, o livro ajudou bastante, apenas dois dos vinte alunos do Asterisk Bootcamp passaram no dCAP. O material contido neste livro tem quase tudo referente ao teste. O objetivo principal da revisão foi atualizar para a versão 1.2. No momento em que você receber este eBook é provável que a versão 1.4 já tenha sido lançada. Acompanhar um software que lança uma nova versão à cada 6 meses não é muito fácil. Este eBook contou com um fiel escudeiro que aparece como co-autor, Alexandre Keller que tem me ajudado muito com os cursos de Asterisk e com os testes práticos. Os capítulos quatro e quinze são em boa parte de autoria dele. Estou mudando a forma de comercialização do livro também, privilegiando os eBooks. Este possuem diversas vantagens, a primeira é ecológica, evitar o uso do papel, outros pontos que posso citar são a facilidade de carregar dentro de um laptop ou pendrive e ainda poder pesquisar. A parte ruim fica por conta da pirataria, que tento minimizar com uma tarja cinza como fundo do livro. Sei que é difícil combater a pirataria e vai da consciência de cada um. O Asterisk PBX é revolucionário nas áreas de telefonia IP e PABX baseado em software. Durante anos o mercado de telefonia foi ligado a equipamentos proprietários fabricados por companhias multinacionais. A convergência de dados e voz em pouco tempo vai fazer com que a telefonia seja apenas mais uma aplicação das redes, tornando os atuais PABX obsoletos. Com a entrada do Asterisk, mais e mais empresas vão poder experimentar recursos como URA - unidade de resposta audível, DAC – distribuição automática de chamadas, mobilidade, correio de voz, e conferência antes restritas a grandes companhias. Não tivemos a pretensão de ensinar tudo que existe sobre o Asterisk, pois isto seria uma missão impossível. Nossa pretensão neste material é de que o leitor possa ter acesso aos principais recursos e a partir deles descobrir e implementar recursos mais avançados. Eu espero que vocês se divirtam tanto aprendendo o Asterisk quanto eu me diverti escrevendo sobre ele. Flávio Eduardo de Andrade Gonçalves Diretor Geral V.Office Networks flavio.goncalves@voffice.com.br
  4. 4. V Agradecimentos Tenho aqui de agradecer a minha família pela paciência de me ver trabalhando as madrugadas e fins de semana para que este material pudesse ser escrito. Agradeço à Clarice minha esposa e companheira pelo incentivo e apoio e a Ana Cristina Gonçalves, Cristiano Soares e Alexandre Keller por resolver todos os entraves como publicação, distribuição, capa, marketing que possibilitaram que este material chegasse aos usuários e a minha filha Anna Letícia pelo desenho da mascote do Asterisk na contra capa. Críticas sugestões, erros de grafia e conteúdo Todos as pessoas que eu conheço detestam ser criticadas. Eu não me excluo desse grupo, mas gostando ou não, as críticas quando construtivas são a melhor forma de evolução e melhoria constante. Este livro e o curso no qual se baseia tiveram um grande “feedback” de alunos e leitores durante os anos de 2005 e 2006. Os capítulos de bilhetagem e uma abordagem mais profunda de AMI e AGI contida no capítulo quatorze foram sugestões de usuários. Outra sugestão acatada foi o uso de placas digium e configuração real nos cursos. Apesar dos custos elas agora estão presentes e os alunos podem ver como se carrega realmente uma placa da Digium. Por mais que nos esforcemos, sempre há erros de grafia e conteúdo. Ficamos agradecidos a qualquer um que os aponte e nos permita corrigir. Quaisquer erros podem ser comunicados em: oops@voffice.com.br
  5. 5. VI Sumário INTRODUÇÃO AO ASTERISK ..........................................................1 1.1 OBJETIVOS DO CAPÍTULO................................................................1 1.2 O QUE É O ASTERISK .....................................................................1 1.2.1 QUAL O PAPEL DA DIGIUM?..............................................................2 1.2.2 O PROJETO ZAPATA .......................................................................3 1.3 PORQUE O ASTERISK? ...................................................................5 1.3.1 REDUÇÃO DE CUSTOS EXTREMA .........................................................5 1.3.2 TER CONTROLE DO SEU SISTEMA DE TELEFONIA .......................................5 1.3.3 AMBIENTE DE DESENVOLVIMENTO FÁCIL E RÁPIDO....................................6 1.3.4 RICO E ABRANGENTE EM RECURSOS ....................................................6 1.3.5 É POSSÍVEL PROVER CONTEÚDO DINÂMICO POR TELEFONE...........................6 1.3.6 PLANO DE DISCAGEM FLEXÍVEL E PODEROSO ..........................................6 1.3.7 RODA NO LINUX E É CÓDIGO ABERTO...................................................6 1.3.8 LIMITAÇÕES DA ARQUITETURA DO ASTERISK ..........................................6 1.4 ARQUITETURA DO ASTERISK............................................................7 1.4.1 CANAIS.....................................................................................7 1.4.2 CODECS E CONVERSÕES DE CODEC...................................................9 1.4.3 PROTOCOLOS ..............................................................................9 1.4.4 APLICAÇÕES ............................................................................. 10 1.5 VISÃO GERAL DO ASTERISK...........................................................10 1.6 DIFERENÇAS ENTRE O VELHO E O NOVO MUNDO ..................................11 1.6.1 TELEFONIA USANDO O VELHO MODELO DE PABX/SOFTSWITCH................... 11 1.6.2 TELEFONIA DO JEITO ASTERISK ....................................................... 12 1.7 CONSTRUINDO UM SISTEMA DE TESTE ..............................................13 1.7.1 UM FXO, UM FXS...................................................................... 13 1.7.2 VOIP SERVICE PROVIDER, SOFTFONE OU ATA...................................... 13 1.7.3 PLACA CLONE FXO, SOFTFONE OU ATA ............................................. 13 1.8 CENÁRIOS DE USO DO ASTERISK.....................................................14 1.8.1 IP PBX................................................................................... 14 1.8.2 ATUALIZAÇÃO DE PABX EXISTENTE PARA SUPORTAR VOIP. ...................... 15 1.8.3 INTERLIGAÇÃO DE FILIAIS ATRAVÉS DE VOIP ....................................... 16 1.8.4 SERVIDOR DE APLICAÇÕES (URA, CONFERÊNCIA, CORREIO DE VOZ) ........... 16 1.8.5 MEDIA GATEWAY........................................................................ 17 1.8.6 PLATAFORMA DE CONTACT CENTER ................................................... 18 1.9 SUMÁRIO..................................................................................18 1.10 QUESTIONÁRIO ........................................................................19 BAIXANDO E INSTALANDO ..........................................................21 2.1 OBJETIVOS DO CAPÍTULO..............................................................21 2.2 INTRODUÇÃO .............................................................................21 2.3 HARDWARE MÍNIMO....................................................................21
  6. 6. VII 2.3.1 MONTANDO O SEU SISTEMA............................................................ 22 2.3.2 QUESTÕES DE COMPARTILHAMENTO DE IRQ ........................................ 22 2.4 ESCOLHENDO UMA DISTRIBUIÇÃO DO LINUX. ....................................23 2.4.1 REQUISITOS DO LINUX ................................................................. 23 2.4.2 PACOTES NECESSÁRIOS. ............................................................... 23 2.5 INSTALANDO O LINUX PARA ATENDER AO ASTERISK............................24 2.6 PREPARANDO O DEBIAN PARA O ASTERISK. ......................................34 2.7 OBTENDO E COMPILANDO O ASTERISK .............................................36 2.7.1 OBTENDO OS FONTES DO ASTERISK .................................................. 36 2.7.2 COMPILANDO O DRIVER ZAPTEL ....................................................... 37 2.8 COMPILANDO O ASTERISK ............................................................37 2.9 INICIANDO E PARANDO O ASTERISK ................................................38 2.9.1 PARÂMETROS DE LINHA DE COMANDO DO ASTERISK................................ 38 2.9.2 ABAIXO OS PARÂMETROS DISPONÍVEIS............................................... 38 2.10 INICIANDO O ASTERISK EM TEMPO DE INICIALIZAÇÃO. ......................39 2.11 INICIANDO O ASTERISK USANDO UM USUÁRIO DIFERENTE DE ROOT. .....39 2.12 CONSIDERAÇÕES SOBRE A INSTALAÇÃO DO ASTERISK ........................40 2.12.1 SISTEMAS EM PRODUÇÃO............................................................. 40 2.12.2 CONSIDERAÇÕES SOBRE A REDE .................................................... 40 2.13 SUMÁRIO ................................................................................41 2.14 QUESTIONÁRIO ........................................................................41 PRIMEIROS PASSOS ...................................................................43 3.1 OBJETIVOS DO CAPÍTULO..............................................................43 3.2 INTRODUÇÃO .............................................................................43 3.3 GRAMÁTICA DOS ARQUIVOS DE CONFIGURAÇÃO..................................43 3.3.1 GRUPO SIMPLES ......................................................................... 44 3.3.2 FORMATO DE OBJETO COM HERANÇA DE OPÇÕES.................................... 44 3.3.3 OBJETO ENTIDADE COMPLEXA ......................................................... 44 3.4 CONFIGURANDO UMA INTERFACE COM A REDE PÚBLICA OU COM UM PABX 45 3.4.1 INSTALANDO A PLACA X100P CLONE................................................. 46 3.5 CONFIGURAÇÃO DOS TELEFONES IP SIP ..........................................57 3.5.1 ARQUIVO EXEMPLO DO SIP.CONF SEÇÃO GERAL [GENERAL] ....................... 58 3.5.2 OPÇÕES PARA CADA TELEFONE ........................................................ 58 3.5.3 EXEMPLO COMPLETO DO SIP .......................................................... 58 3.6 INTRODUÇÃO AO PLANO DE DISCAGEM .............................................59 3.6.1 CONTEXTOS.............................................................................. 59 3.6.2 EXTENSÕES .............................................................................. 60 3.6.3 PRIORIDADES............................................................................ 61 3.6.4 APLICAÇÕES ............................................................................. 61 3.6.5 CRIANDO UM AMBIENTE DE TESTES ................................................... 61 3.6.6 CRIANDO UM PLANO DE DISCAGEM SIMPLES ......................................... 63 UM EXEMPLO MAIS ÚTIL ........................................................................ 65 INTERLIGANDO CANAIS COM A APLICAÇÃO DIAL() .......................................... 66 3.7 LABORATÓRIOS ..........................................................................66 3.7.1 LIGANDO ENTRE TELEFONES. .......................................................... 67
  7. 7. VIII 3.7.2 LIGANDO PARA A REDE PÚBLICA USANDO A PLACA ZAPTEL ......................... 67 3.7.3 RECEBENDO LIGAÇÕES USANDO AUTO-ATENDIMENTO. ............................. 67 3.8 SUMÁRIO..................................................................................68 3.9 QUESTIONÁRIO ..........................................................................68 CANAIS ANALÓGICOS E DIGITAIS...............................................71 4.1 OBJETIVOS................................................................................71 4.2 CONCEITOS BÁSICOS...................................................................... 71 4.2.1 SINALIZAÇÃO DE SUPERVISÃO......................................................... 71 4.2.2 SINALIZAÇÃO DE ENDEREÇAMENTO ................................................... 72 4.2.3 SINALIZAÇÃO DE INFORMAÇÃO ........................................................ 72 4.3 INTERFACES DE ACESSO A REDE PÚBLICA ..........................................73 4.4 USANDO INTERFACES FXS, FXO E E+M..........................................73 4.4.1 INTERFACES FX (FOREIGN EXCHANGE).............................................. 73 4.4.2 INTERFACES E & M ..................................................................... 74 4.4.3 SINALIZAÇÃO NOS TRONCOS .......................................................... 74 4.5 LINHAS DIGITAIS E1/T1, SINALIZAÇÃO CAS E CCS. .........................75 4.5.1 SINALIZAÇÃO E ENQUADRAMENTO E1 ................................................ 76 4.5.2 SINALIZAÇÃO CAS, E1-R2-BRASIL ................................................. 76 4.5.3 SINALIZAÇÃO CCS, E1-ISDN-PRI. ................................................ 76 4.6. CONFIGURANDO UM CANAL DE TELEFONIA NO ASTERISK......................77 4.6.1 PROCEDIMENTOS GERAIS DE CONFIGURAÇÃO VÁLIDOS NOS TRÊS CASOS ........ 77 4.7 EXEMPLO 1 - INSTALAÇÃO DE UMA PORTA FXO E OUTRA FXS ...............77 4.7.1 INSTALANDO UMA PLACA TDM400P COM UMA PORTA FXS E OUTRA PORTA FXO. .................................................................................................... 78 4.7.2 CONFIGURAÇÃO DO ARQUIVO ZAPTEL.CFG ........................................... 79 4.7.3 CARREGAR OS DRIVERS DE KERNEL ................................................... 79 4.7.4 USANDO O UTILITÁRIO ZTTEST. ....................................................... 79 4.7.5 USANDO O UTILITÁRIO ZTCFG ......................................................... 80 4.7.6 CONFIGURAÇÃO DO ARQUIVO ZAPATA.CONF ......................................... 80 4.8 EXEMPLO 2 – CARGA DE DOIS CANAIS E1-ISDN ...............................80 4.8.1 INSTALAÇÃO DA PLACA TE205P ...................................................... 81 4.8.2 CONFIGURAÇÃO DO ARQUIVO ZAPTEL.CONF ......................................... 81 4.8.3 CARGA DO DRIVER DA PLACA ZAPTEL ................................................. 82 4.8.4 USANDO O UTILITÁRIO ZTTEST ........................................................ 82 4.8.5 VERIFICANDO CONFLITOS DE INTERRUPÇÃO ......................................... 83 4.8.6 USANDO O UTILITÁRIO ZTCFG ......................................................... 83 4.8.7 CONFIGURAÇÃO DOS CANAIS “ZAPATA.CONF”....................................... 84 4.8.8 COMANDOS PARA VERIFICAÇÃO ....................................................... 84 4.9 CONFIGURANDO MFC/R2 ............................................................88 4.9.1 ENTENDENDO O PROBLEMA ............................................................ 88 4.9.2 ENTENDENDO O PROTOCOLO MFC/R2 ............................................... 88 4.9.3 SEQÜÊNCIA DE UMA CHAMADA MFC/R2............................................. 92 4.9.4 O DRIVER UNICALL ..................................................................92 4.9.5 CONFIGURANDO A PLACA ZAPTEL PARA OPERAR COM MFC/R2 ...........93 4.9.6 INSTALANDO E COMPILANDO AS BIBLIOTECAS.................................93
  8. 8. IX 4.9.7 INTEGRANDO O CANAL UNICALL AO ASTERISK ...................................... 94 4.9.8 CONFIGURANDO O CANAL UNICALL.................................................... 95 4.9.9 RESOLVENDO PROBLEMAS EM UM CANAL UNICALL. ................................. 98 4.10 OPÇÕES DE CONFIGURAÇÃO DO ARQUIVO ZAPATA.CONF ...................101 4.10.1 OPÇÕES GERAIS, INDEPENDENTES DO TIPO DE CANAL.......................... 101 4.10.2 OPÇÕES PARA CONEXÕES COM REDE ISDN...................................... 102 4.10.3 OPÇÕES DE IDENTIFICADOR DE CHAMADAS (CALLER ID). ..................... 103 4.10.4 OPÇÕES DE QUALIDADE DE ÁUDIO ................................................ 104 4.10.5 OPÇÕES DE BILHETAGEM ........................................................... 105 4.10.6 OPÇÕES DE ACOMPANHAMENTO DA CHAMADA ................................... 105 4.10.7 OPÇÕES PARA TELEFONES LIGADOS A LINHAS FXS ............................. 106 4.10.8 OPÇÕES PARA CANAIS FXO........................................................ 106 4.11 NOMENCLATURA DOS CANAIS ZAP..............................................107 4.12 NOMENCLATURA DOS CANAIS UNICALL.........................................107 4.13 QUESTIONÁRIO ......................................................................108 VOZ SOBRE IP ...........................................................................111 5.1 OBJETIVOS..............................................................................111 5.2 INTRODUÇÃO ...........................................................................111 5.3 BENEFÍCIOS DA VOZ SOBRE IP.....................................................111 5.3.1 APLICAÇÕES PARA CALL-CENTERS .................................................. 112 5.3.2 SISTEMA DE MENSAGENS UNIFICADO ............................................... 112 5.3.3 CHAMADA BASEADA EM CARTÃO..................................................... 112 5.4 ARQUITETURA DO ASTERISK E VOZ SOBRE IP ..................................113 5.5 COMO ESCOLHER UM PROTOCOLO ..................................................114 5.5.1 SIP ..................................................................................... 114 5.5.2 IAX..................................................................................... 114 5.5.3 MGCP.................................................................................. 115 5.5.4 H323 .................................................................................. 115 5.6 CONCEITO DE PEERS, USERS E FRIENDS.........................................116 5.7 CODECS E CONVERSÃO DE CODECS ................................................117 5.8 COMO ESCOLHER O CODEC.........................................................118 5.9 OVERHEAD CAUSADO PELOS CABEÇALHOS. ......................................118 5.11 ENGENHARIA DE TRÁFEGO.........................................................119 5.10.1 SIMPLIFICAÇÕES .................................................................... 119 5.10.2 MÉTODO DE ERLANG B ............................................................. 120 5.11 ESTRATÉGIAS DE REDUÇÃO DO USO DE BANDA PASSANTE ..................121 5.10.1 IMPACTO DA COMPRESSÃO DE CABEÇALHO RTP................................. 121 5.10.2 IMPACTO DO MODO TRUNKED EM IAX. ........................................... 122 5.11 SUMÁRIO ..............................................................................122 5.12 QUESTIONÁRIO ......................................................................123 O PROTOCOLO IAX ....................................................................125 6.1 OBJETIVOS DO CAPÍTULO ...........................................................125 6.2 INTRODUÇÃO ...........................................................................125
  9. 9. X 6.3 TEORIA DE OPERAÇÃO ................................................................126 6.4 FORMATO DOS FRAMES ..............................................................127 6.4.1 FRAME COMPLETO ..................................................................... 127 6.4.2 MINIFRAME ............................................................................ 128 6.5 USO DE BANDA PASSANTE ...........................................................128 6.6 NOMENCLATURA DOS CANAIS.......................................................130 6.6.1 FORMATO DE UMA CONEXÃO DE SAÍDA. ............................................ 130 6.6.2 EXEMPLOS DE CANAIS DE SAÍDA: ................................................... 130 6.6.3 FORMATO DE UMA CONEXÃO DE ENTRADA.......................................... 131 6.6.4 EXEMPLO DE CANAIS DE ENTRADA .................................................. 131 6.7 CENÁRIOS DE USO.....................................................................131 6.7.1 CONECTANDO UM SOFTFONE IAX AO ASTERISK................................... 132 6.7.2 LAB – INSTALANDO UM SOFTFONE IAX ............................................ 138 6.7.2 CONECTANDO-SE A UM PROVEDOR BASEADO EM IAX2........................... 140 6.7.3 LAB – CONECTANDO-SE AO FREEWORLDDIALUP USANDO IAX2................. 140 6.7.4 CONECTANDO SERVIDORES ASTERISK USANDO IAX2 TRUNK................... 142 6.8 AUTENTICAÇÃO NO IAX .............................................................144 6.8.1 CONEXÕES DE ENTRADA.............................................................. 144 6.8.2 CONEXÕES DE SAÍDA ................................................................. 146 6.9 CONFIGURAÇÃO DO ARQUIVO IAX.CONF .........................................147 6.9.1 CONFIGURAÇÃO DO ENDEREÇAMENTO .............................................. 148 6.9.2 SELEÇÃO DOS CODECS: .............................................................. 148 6.9.3 CONFIGURAÇÃO DO BUFFER DE JITTER E MARCAÇÃO DE PACOTES:.............. 149 6.9.4 PARÂMETROS ADICIONAIS PARA TIPO “USER”:.................................... 150 6.10 COMANDOS DE DEPURAÇÃO DO IAX2. .........................................151 6.11 SUMÁRIO ..............................................................................153 6.12 QUESTIONÁRIO ......................................................................155 O PROTOCOLO SIP.....................................................................157 7.1 OBJETIVOS..............................................................................157 7.2 VISÃO GERAL...........................................................................157 7.2.1 TEORIA DA OPERAÇÃO DO SIP...................................................... 157 7.2.2 PROCESSO DE REGISTRO DO SIP................................................... 159 7.2.3 OPERAÇÃO DO SIP EM MODO PROXY. .............................................. 160 7.2.4 OPERAÇÃO EM MODO DE REDIRECT. ................................................ 160 7.2.5 SIP NO MODO ASTERISK............................................................. 161 7.3 ARQUIVO DE CONFIGURAÇÃO SIP.CONF ..........................................162 7.3.1 CONFIGURAÇÃO DA SEÇÃO GERAL [GENERAL]..................................... 162 7.4 CONFIGURANDO UM CLIENTE SIP .................................................164 7.4.1 PASSO 1 – CONFIGURANDO O SIP.CONF ........................................... 164 7.4.2 PASSO 2 CONFIGURANDO O TELEFONE ............................................. 164 7.4.3 PASSO 3 – DEFINIR A EXTENSÃO NO ARQUIVO SIP.CONF ........................ 165 7.4.4 OPÇÕES DE CONFIGURAÇÃO PARA OS TELEFONES ................................. 165 7.4.5 LIMITAÇÕES E CUIDADOS COM CLIENTES SIP ..................................... 168 7.5 CONECTANDO-SE A UM PROVEDOR SIP. .........................................168 7.5.1 PASSO 1: REGISTRAR O PROVEDOR (SIP.CONF) .................................. 169
  10. 10. XI 7.5.2 - PASSO 2: CONFIGURAR O [PEER] (SIP.CONF) .................................. 169 7.5.3 PASSO 3: CRIAR UMA ROTA DE SAÍDA NO PLANO DE DISCAGEM. ............... 169 7.5.4 OPÇÕES DE CONFIGURAÇÃO ESPECÍFICAS PARA PROVEDORES ................... 170 7.6 AUTENTICAÇÃO DAS CHAMADAS SIP ENTRANTES..............................171 7.7 NOMENCLATURA DOS CANAIS SIP ................................................172 7.8 SIP NAT TRAVERSAL................................................................173 7.8.1 FULL CONE (CONE COMPLETO) ..................................................... 174 7.8.2 RESTRICTED CONE (CONE RESTRITO) ............................................. 175 7.8.3 PORT RESTRICTED CONE (CONE RESTRITO POR PORTA)......................... 175 7.8.4 SIMÉTRICO............................................................................. 176 7.8.5 RESUMO DOS TIPOS DE FIREWALL .................................................. 176 7.9 NAT NA PASSAGEM DA SINALIZAÇÃO SIP.......................................176 7.10 NAT NO FLUXO DE MÍDIA RTP...................................................177 7.11 FORMAS DE PASSAGEM PELO NAT...............................................178 7.11.1 UPNP ................................................................................. 179 7.11.2 STUN – SIMPLE TRAVERSAL OF UDP NAT ..................................... 179 7.11.3 ALG – APLICATION LAYER GATEWAY............................................. 181 7.11.4 CONFIGURAÇÃO MANUAL ........................................................... 181 7.11.5 COMEDIA CONEXION ORIENTED MEDIA........................................ 182 7.11.6 TURN – TRAVERSAL USING RELAY NAT......................................... 182 7.11.7 ICE – INTERACTIVITY CONNECTIVITY ESTABLISHMENT ........................ 183 7.12 SOLUÇÕES PRÁTICAS PARA O ASTERISK .......................................183 7.12.1 PARÂMETROS DO ASTERISK USADOS PARA ATRAVESSAR NAT................. 183 7.12.2 CENÁRIOS DO ASTERISK COM NAT............................................... 185 7.13 CONSIDERAÇÕES FINAIS SOBRE O NAT........................................186 7.14 QUESTIONÁRIO ......................................................................187 RECURSOS BÁSICOS DO PLANO DE DISCAGEM..........................189 8.1 OBJETIVOS DO CAPÍTULO............................................................189 8.2 INTRODUÇÃO ...........................................................................189 8.3 ESTRUTURA DO ARQUIVO EXTENSIONS.CONF ...................................189 8.3.1 SEÇÃO [GENERAL] .................................................................... 190 8.3.2 SEÇÃO [GLOBALS] .................................................................... 191 8.4 CONTEXTOS E EXTENSÕES ...........................................................192 8.4.1 INTRODUÇÃO A CONTEXTOS E EXTENSÕES ......................................... 192 8.4.2 COMO OS CONTEXTOS SÃO USADOS?............................................... 193 8.5 EXTENSÕES .............................................................................194 8.5.1 LITERAIS ............................................................................... 194 8.5.2 PADRÕES............................................................................... 194 8.5.3 ESPECIAIS ............................................................................. 195 8.5.4 DEFININDO EXTENSÕES .............................................................. 196 8.6 VARIÁVEIS..............................................................................198 8.6.5 VARIÁVEIS ESPECÍFICAS DE APLICAÇÕES........................................... 200 8.6.6 VARIÁVEIS ESPECÍFICAS PARA MACROS ............................................ 201 8.6.7 VARIÁVEIS DE AMBIENTE............................................................. 202 8.7 EXPRESSÕES............................................................................202
  11. 11. XII 8.7.1 OPERADORES .......................................................................... 202 8.8 FUNÇÕES ................................................................................203 8.8.1 COMPRIMENTO DA STRING........................................................... 203 8.8.2 SUBSTRINGS........................................................................... 204 8.8.3 CONCATENAÇÃO DE STRINGS........................................................ 204 8.9 O PLANO DE DISCAGEM NA PRÁTICA ..............................................205 8.9.1 DISCANDO ENTRE RAMAIS. .......................................................... 205 8.9.2 DISCANDO PARA UM DESTINO EXTERNO............................................ 207 8.9.3 DISCANDO 0 PARA PEGAR UMA LINHA EXTERNA. .................................. 208 8.9.4 FORÇANDO UMA ÚNICA OPERADORA ................................................ 208 8.9.5 RECEBENDO UMA CHAMADA NA TELEFONISTA...................................... 208 8.9.6 RECEBENDO UMA LIGAÇÃO COM DDR .........................................209 8.9.7 TOCANDO VÁRIAS EXTENSÕES....................................................... 209 8.9.8 EVITANDO O TELEMARKETING........................................................ 209 8.9.9 ROTEAMENTO PELO ORIGINADOR DA CHAMADA.................................... 209 8.9.10 USANDO VARIÁVEIS NO PLANO DE DISCAGEM.................................... 210 8.10 O ESTILO DA VERSÃO 1.2 .........................................................210 8.11 CRIANDO UM PLANO DE DISCAGEM SIMPLES ..................................211 8.11.1 CENTRAL DE QUATRO PORTAS FXO E 16 RAMAIS SIP.......................... 211 8.11.2 CENTRAL COM UM E1 DE 15 CANAIS E 50 RAMAIS SIP........................ 212 8.12 SUMÁRIO ..............................................................................212 8.13 QUESTIONÁRIO ......................................................................213 RECURSOS AVANÇADOS DO PLANO DE DISCAGEM ....................215 9.1 OBJETIVOS..............................................................................215 9.2 INCLUSÃO DE CONTEXTOS ...........................................................215 9.2.1 LIMITANDO A DISCAGEM PARA NÚMEROS DDD E DDI ........................... 216 9.3 COMO O PLANO DE DISCAGEM ENCONTRA A EXTENSÃO .......................217 9.3.1 PROCESSO “ENCONTRA ENQUANTO VOCÊ DISCA”. ................................ 218 9.3.2 EXEMPLO ............................................................................... 220 9.3.3 ORDEM DE BUSCA DOS PADRÕES DE EXTENSÃO ................................... 221 9.3.4 CONTROLANDO O ORDENAMENTO ................................................... 222 9.4 RECEBENDO UMA CHAMADA EM UM MENU DE VOZ. .............................222 9.5 SWITCHES, ENCAMINHANDO PARA OUTRO ASTERISK .........................226 9.6 MACROS .................................................................................227 9.7 A BASE DE DADOS DO ASTERISK ...................................................228 9.7.1 FAMÍLIAS............................................................................... 228 9.72 FUNÇÕES................................................................................ 228 9.7.3 EXEMPLO DE USO DO ASTERISK DB. ............................................... 228 9.8 PROGRAMANDO O RECURSO DE LISTA NEGRA. ..................................229 9.9 CONTEXTOS BASEADOS EM HORÁRIO..............................................230 9.10 ABRINDO UM NOVO TOM DE DISCAGEM COM DISA..........................232 9.11 LIMITANDO O NÚMERO DE CHAMADAS SIMULTÂNEAS .......................233 9.12 UM PLANO DE DISCAGEM NA PRÁTICA ..........................................234 9.12.1 PASSO 1 - CONFIGURANDO OS CANAIS. ......................................... 234 9.12.2 PASSO 2 - CONFIGURANDO O PLANO DE DISCAGEM ............................ 236
  12. 12. XIII 9.12.3 RECEPÇÃO DAS CHAMADAS......................................................... 236 9.13 QUESTIONÁRIO ......................................................................239 CONFIGURANDO RECURSOS AVANÇADOS..................................241 10.1 OBJETIVOS............................................................................241 10.2 SUPORTE AOS RECURSOS DE PABX .............................................241 10.2.1 RECURSOS COM SUPORTE PARA TODO TIPO DE CANAL .......................... 241 10.2.2 RECURSOS COM SUPORTE EM TELEFONES SIP ................................... 242 10.2.3 PARA TELEFONES ANALÓGICOS (ZAP). ........................................... 243 10.3 ESTACIONAMENTO DE CHAMADAS................................................243 10.3.1 DESCRIÇÃO:......................................................................... 243 10.3.2 LISTA DE TAREFAS PARA CONFIGURAÇÃO......................................... 244 10.4 CAPTURA DE CHAMADAS - CALL-PICKUP .......................................244 10.4.1 DESCRIÇÃO .......................................................................... 244 10.4.2 LISTA DE TAREFAS PARA HABILITAR A CAPTURA.................................. 245 10.5 TRANSFERÊNCIA DE CHAMADAS - CALL TRANSFER...........................245 10.5.1 DESCRIÇÃO .......................................................................... 245 10.5.2 LISTA DE TAREFAS PARA CONFIGURAR ............................................ 245 10.6 CONFERÊNCIA – CALL CONFERENCE ............................................246 10.6.1 FORMATO: ........................................................................... 246 10.6.2 DESCRIÇÃO:......................................................................... 246 10.6.3 CÓDIGOS DE RETORNO: ............................................................ 247 10.6.4 DETALHE DAS OPÇÕES:............................................................. 247 10.6.5 LISTA DE TAREFAS DE CONFIGURAÇÃO............................................ 248 10.5.6 EXEMPLOS............................................................................ 248 10.5.7 ARQUIVO DE CONFIGURAÇÃO DO MEETME()..................................... 248 10.7 GRAVANDO UMA LIGAÇÃO .........................................................249 10.8 MÚSICA EM ESPERA – MUSIC ON HOLD.........................................250 EDITE OS ARQUIVOS PARA HABILITAR MÚSICA EM ESPERA ............................... 250 10.9 QUESTIONÁRIO ......................................................................252 DAC DISTRIBUIÇÃO AUTOMÁTICA DE CHAMADAS.....................253 11.1 OBJETIVOS............................................................................253 11.2 INTRODUÇÃO .........................................................................253 11.3 MEMBROS .............................................................................254 11.4 ESTRATÉGIAS.........................................................................254 11.5 MENU PARA O USUÁRIO ............................................................255 11.6 NOVOS RECURSOS...................................................................255 11.7 CONFIGURAÇÃO......................................................................255 11.7.1 LISTA DE TAREFAS .................................................................. 255 11.7.2. CRIAR A FILA DE ATENDIMENTO. ................................................. 256 11.7.3 DEFINIR PARÂMETROS DOS AGENTES. ............................................ 256 11.7.4 CRIAR OS AGENTES NO ARQUIVO.................................................. 257 11.7.5 COLOCAR A FILA NO PLANO DE DISCAGEM....................................... 257 11.7.6 CONFIGURAR A GRAVAÇÃO ......................................................... 257
  13. 13. XIV 11.7.7 APLICAÇÕES DE APOIO PARA AS FILAS............................................ 258 11.8 FUNCIONAMENTO DAS FILAS......................................................258 11.8.1 LOGIN DO AGENTE .................................................................. 258 11.9 QUESTIONÁRIO ......................................................................260 O CORREIO DE VOZ....................................................................263 12.1 OBJETIVOS............................................................................263 12.2 INTRODUÇÃO .........................................................................263 12.3 LISTA DE TAREFAS PARA CONFIGURAÇÃO ......................................263 12.3.1 CONFIGURANDO O ARQUIVO VOICEMAIL.CONF................................... 263 12.3.2 CONFIGURANDO O ARQUIVO EXTENSIONS.CONF................................. 264 12.3.3 USANDO A APLICAÇÃO VOICEMAILMAIN()....................................... 264 12.3.4 SINTAXE DO VOICEMAIL(): ........................................................ 265 12.3.5 CÓDIGOS DE RETORNO ............................................................ 267 12.4 ARQUIVO DE CONFIGURAÇÃO DO VOICEMAIL.................................267 12.4.1 CONFIGURAÇÕES DA SEÇÃO [GENERAL].......................................... 267 12.4.2 VARIÁVEIS PARA EMAILSUBJECT E EMAILBODY. .................................. 272 12.4.3. CONFIGURAÇÕES PARA AS SEÇÕES [CONTEXT] .............................. 272 12.5 INTERFACE WEB PARA O CORREIO DE VOZ. ...................................273 12.6 SUMÁRIO ..............................................................................273 12.7 QUESTIONÁRIO ......................................................................274 BILHETAGEM NO ASTERISK .......................................................277 13.1 INTRODUÇÃO .........................................................................277 13.2 OBJETIVOS: ..........................................................................277 13.3 FORMATO DOS BILHETES DO ASTERISK.........................................277 13.4 CÓDIGOS DE CONTA E CONTABILIZAÇÃO AUTOMÁTICA......................278 13.5 MÉTODOS DE ARMAZENAMENTO DO CDR ......................................279 13.5.1 DRIVERS DE ARMAZENAMENTO DISPONÍVEIS..................................... 279 13.5.2 ARMAZENANDO EM CSV............................................................ 279 13.5.3 ARMAZENANDO EM UMA BASE DE DADOS MYSQL............................... 279 13.6 APLICAÇÕES ..........................................................................281 13.6.1 SETACCOUNT ........................................................................ 281 13.6.2 SETAMAFLAGS...................................................................... 281 13.6.3 NOCDR()............................................................................ 281 13.6.4 RESETCDR()........................................................................ 281 13.6.5 SET(CDR(USERFIELD)=VALUE).................................................. 281 13.6.6 APPENDCDRUSERFIELD(VALUE) ................................................. 282 13.7 USANDO AUTENTICAÇÃO DOS USUÁRIOS .......................................282 13.8 USANDO AS SENHAS DO CORREIO ELETRÔNICO ..............................282 13.9 SUMÁRIO ..............................................................................284 13.10 QUESTIONÁRIO ....................................................................284 INTEGRAÇÃO DO ASTERISK USANDO AGI E AMI .......................287
  14. 14. XV 14.1INTRODUÇÃO..........................................................................287 14.2 OBJETIVOS DESTE CAPÍTULO......................................................287 14.3 PRINCIPAIS FORMAS DE EXTENDER O ASTERISK .............................287 14.4 ESTENDENDO O ASTERISK ATRAVÉS DA CONSOLE............................288 14.5 ESTENDENDO O ASTERISK USANDO O APLICATIVO SYSTEM ...............288 14.5.1 EXEMPLO DE USO DO APLICAÇÃO SYSTEM() ..................................... 288 14.6 O QUE É O AMI ......................................................................289 14.6.1 QUE LINGUAGEM UTILIZAR ?....................................................... 289 14.6.2 COMPORTAMENTO DO PROTOCOLO ................................................ 289 14.6.3 TIPOS DE PACOTES.................................................................. 289 14.7 CONFIGURANDO USUÁRIOS E PERMISSÕES ....................................290 14.7.1 LOGANDO-SE NO AMI .............................................................. 291 14.7.2 LOGANDO-SE NO AMI VIA PHP. .................................................. 291 14.7.3 PACOTES DO TIPO ACTION ......................................................... 291 14.7.4 COMANDOS DO TIPO ACTION ...................................................... 291 14.7.5 PACOTES DO TIPO EVENT........................................................... 293 14.8 ASTERISK MANAGER PROXY ......................................................294 14.8.1 INSTALANDO E CONFIGURANDO O ASTMANPROXY ............................... 295 14.9 ASTERISK GATEWAY INTERFACE.................................................296 14.9.1 USANDO O AGI ..................................................................... 298 14.9.2 EXEMPLO DE AGI ................................................................... 300 14.9.3 DEADAGI ........................................................................... 301 14.9.4 FASTAGI............................................................................ 302 14.10 ALTERANDO O CÓDIGO FONTE ..................................................302 14.11 SUMÁRIO ............................................................................303 14.12 QUESTIONÁRIO ....................................................................304 ASTERISK REAL-TIME................................................................307 15-1 INTRODUÇÃO.........................................................................307 15.2 OBJETIVOS DESTE CAPÍTULO......................................................307 15.3 MODO DE FUNCIONAMENTO DO ASTERISK REAL TIME ......................307 15.4 LAB 1 INSTALANDO O ASTERISK REAL/TIME ...............................308 15.5 COMO CONFIGURAR O ASTERISK REAL TIME..................................309 15.6 CONFIGURAÇÃO DA BASE DE DADOS.............................................311 15.6 LAB 2 – INSTALANDO O BANCO E CRIANDO AS TABELAS ...................312 15.6.1 CRIANDO AS TABELAS NO MYSQL. ............................................... 312 15.7 LAB 3 – CONFIGURANDO E TESTANDO O ARA................................315 15.7 SUMÁRIO ..............................................................................316 15.8 QUESTIONÁRIO ......................................................................317 RESPOSTA DOS EXERCÍCIOS .....................................................321 RESPOSTAS DO CAPÍTULO 1..............................................................321 RESPOSTAS DO CAPÍTULO 2..............................................................323 RESPOSTAS DO CAPÍTULO 3..............................................................325 RESPOSTAS DO CAPÍTULO 4 ..............................................................328
  15. 15. XVI RESPOSTAS DO CAPÍTULO 5..............................................................330 RESPOSTAS DO CAPÍTULO 6..............................................................332 RESPOSTAS DO CAPÍTULO 7..............................................................334 RESPOSTAS DO CAPÍTULO 8..............................................................336 RESPOSTAS DO CAPÍTULO 9..............................................................338 RESPOSTAS DO CAPÍTULO 10............................................................340 RESPOSTAS DO CAPÍTULO 11............................................................341 RESPOSTAS DO CAPÍTULO 12............................................................343 RESPOSTAS DO CAPÍTULO 13 ............................................................345 RESPOSTAS DO CAPÍTULO 14 ............................................................347 RESPOSTAS DO CAPÍTULO 15 ............................................................349
  16. 16. XVII Página deixada intencionalmente em branco
  17. 17. Introdução ao Asterisk Neste capítulo vamos aprender o que é o Asterisk, qual é sua arquitetura e como pode ser utilizado. 1.1 Objetivos do capítulo Ao final deste capítulo o leitor estará apto a: • Explicar o que é o Asterisk, como surgiu e sua relação com outros projetos como o Zapata Telephony e qual o papel da Digium no Asterisk. • Reconhecer a arquitetura básica do Asterisk e se familiarizar com conceitos como aplicações, canais e codecs. • Descobrir diversos cenários onde o Asterisk poderia ser usado. 1.2 O que é o Asterisk O Asterisk é um software de PABX que usa o conceito de software livre (GPL). A Digium, empresa que promove o Asterisk, investe em ambos, o desenvolvimento do código fonte e em hardware de telefonia de baixo custo que funciona com o Asterisk . O Asterisk roda em plataforma Linux e outras plataformas Unix com ou sem hardware conectando a rede pública de telefonia, PSTN (Public Service Telephony Network). O Asterisk permite conectividade em tempo real entre as redes PSTN e redes VoIP. O Asterisk é muito mais que um PABX padrão, com ele você não apenas tem um excepcional upgrade do seu PABX “convencional”, como também adiciona novas funcionalidades a ele, tais como: • Conectar empregados trabalhando de casa para o PABX do escritório sobre conexões de banda larga. • Conectar escritórios em vários estados sobre IP. Isto pode ser feito pela Internet ou por uma rede IP privada. • Dar aos funcionários, correio de voz, integrado com a “web” e seu e-mail. Capítulo 1
  18. 18. 2 | Capítulo 1 | Introdução ao Asterisk • Construir aplicações de resposta automática por voz, que podem conectar você ao sistema de pedidos, por exemplo, ou ainda outras aplicações internas. • Dar acesso ao PABX da companhia para usuários que viajam, conectando 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: • Música em espera para clientes esperando nas filas, suportando streaming de media assim como música em MP3. • Filas de chamada onde agentes de forma conjunta atendem as chamadas e monitoram a fila. • Integração para sintetização da fala (text-to-speech). • Registro detalhado de chamadas (call-detail-records) para integração com sistemas de tarifação. • Integração com reconhecimento de voz (Tal como o software de código aberto para reconhecimento de voz). • A habilidade de interfacear com linhas telefônicas normais, ISDN em acesso básico (2B+D) e primário (30B+D). 1.2.1 Qual o papel da Digium? A Digium é baseada em Huntsville, Alabama, ela é a criadora e desenvolvedora primária do Asterisk, o primeiro PABX de código aberto da indústria. Usado em conjunto com as placas de telefonia PCI, ele oferece uma abordagem estratégica com excelente relação custo/benefício para o transporte de voz e dados sobre arquiteturas TDM, comutadas e redes Ethernet. A Digium é hoje o principal patrocinador do Asterisk e um dos líderes na indústria do PABX em código aberto, sendo Mark Spencer o criador e principal mantenedor do Asterisk, ele é hoje admirado pelo grande trabalho que fez e pela responsabilidade que carrega. A Digium oferece o Asterisk em três tipos de licenciamento: Asterisk GPL (GNU Public License) A licença GPL é a mais encontrada, ela permite que você use e altere o código. A restrição existente é que quaisquer alterações no código fonte têm de ser redistribuídas. Em outras palavras, se você altera o Asterisk tem de fornecer o código fonte das alterações e for passar o código adiante.
  19. 19. 1.2 O que é o Asterisk | 3 Asterisk Business Edition O Asterisk Business Edition é uma licença comercial do Asterisk. Ela não possui recursos adicionais em comparação com a versão GPL, com exceção da proteção contra cópia. A grande vantagem da licença comercial é para desenvolvedores que não desejam abrir o código fonte de seus produtos e não podem ou querem usar a versão GPL. Asterisk OEM O Asterisk OEM foi criado para fabricantes de centrais telefônicas que não desejam mostrar aos seus clientes que a central foi criada com o Asterisk. 1.2.2 O projeto Zapata O projeto ZAPATA foi conduzido por Jim Dixon. Ele é o responsável pelo desenvolvimento do hardware da DIGIUM. É interessante ressaltar que o hardware também é aberto e pode ser produzido por qualquer empresa. Hoje a placa com quatro E1/T1s é produzida pela Digium, Sangoma e também pela Varion. A história do projeto zapata pode ser vista em: http://www.asteriskdocs.org/modules/tinycontent/index.php?id=10) Uma pequena tradução pode ser encontrada abaixo, Por Jim Dixon Há 20 ou 25 anos atrás, a AT&T começou a oferecer uma API permitindo aos usuários customizar a funcionalidade de seu sistema de correio de voz e auto-atendimento chamado Audix. O Audix rodava em plataforma Unix e custava como tudo em telefonia até o momento, milhares de dólares por porta com uma funcionalidade bastante limitada. Em uma tentativa de tornar as coisas possíveis e atrativas (Especialmente para quem não tinha um PABX AT&T) alguns fabricantes vieram com uma placa que podia ser colocada em um PC que rodava DOS e respondia a uma única linha telefônica (FXO apenas). As placas não tinham uma qualidade tão boa quanto as atuais e muitas terminaram como secretárias eletrônicas igualmente ruins. Novas placas de telefonia foram lançadas com preços muito salgados e as companhias continuaram gastando na faixa de milhares de dólares por porta. Afinal de contas, mesmo com as margens altas de muitos fabricantes, as placas de telefonia possuíam muita capacidade de processamento na forma de DSPs, processadores de sinais digitais. Se você observar ainda hoje um gateway de voz sobre ip, vai ver que boa parte do custo ainda está relacionada aos DSPs.
  20. 20. 4 | Capítulo 1 | Introdução ao Asterisk No entanto, o poder de processamento dos microcomputadores continuou crescendo. De forma a provar o conceito inicial comprei uma placa Mitel89000C “ISDN Express Development Card” e escrevi um driver para o FreeBSD. A placa ocupou bem pouco processamento de um Pentium III 600Mhz, provando que se não fosse à limitação do I/O (A placa gerenciava de forma ineficiente o I/O exigindo muitos wait-states) ela poderia atender de 50 a 75 canais. Como resultado do sucesso, eu sai e comprei o necessário para criar um novo desenho de cartão ISA que usasse o I/O de forma eficiente. Eu consegui dois T1s (48 canais) de dados transferidos sobre o barramento e o PC gerenciou isto sem problemas. Então eu tinha as placas e ofereci-as para venda (Umas 50 foram vendidas) e coloquei o desenho completo (incluindo arquivos de plotagem da placa) na web. . Como o conceito era revolucionário e sabia que faria ondas na indústria, Eu decidi colocar um nome inspirado no revolucionário mexicano e dei o nome à organização de Emiliano Zapata e decidi chamar a placa de “tormenta”. Assim começou a telefonia ZAPATA. Escrevi um driver completo e coloquei na rede. A resposta que eu obtive foi quase sempre, “ótimo e você tem para Linux?”. Pessoalmente eu nunca havia visto o linux rodar antes, mas fui rapidamente ao Fry’s (Uma loja enorme de produtos eletrônicos, famosa nos EUA) e comprei uma cópia do Linux Red Hat 6.0. Eu dei uma olhada nos drivers e usei o Vídeo Spigot como base para traduzir o driver de BSD para Linux. De qualquer forma minha experiência com Linux não era grande e comecei a ter problemas em desenvolver o módulo do kernel na forma de módulos carregáveis. De qualquer forma liberei-o na Net sabendo que algum guru no Linux iria rir dele e talvez me ajudar a reformatá-lo em “Linuquês” apropriado. Em 48 horas eu recebi um e-mail de um sujeito no Alabama (Mark Spencer), que se ofereceu para fazer exatamente isto. Notei apenas que, ele disse que tinha algo que seria perfeito para a coisa toda (O Asterisk). Neste momento o Asterisk era um conceito funcional, mas não tinha uma forma real de funcionar de forma prática e útil. O casamento do sistema de telefonia Zapata e o desenho da biblioteca de hardware/driver e interface permitiram a ele crescer para ser um PABX real que poderia falar com telefones e linhas reais. Além disso, Mark era brilhante em VOIP, redes, na parte interna do sistema etc., e tinha um grande interesse em telefones e telefonia, mas tinha experiência limitada em sistemas de telefonia e como eles funcionavam, particularmente na área de interfaces de hardware. Desde o início eu estava e sempre estive lá para ajudá-lo nestas áreas, ambos fornecendo informação e implementando código nos drivers e no switch
  21. 21. 1.3 Porque o Asterisk? | 5 (PABX). Nós e mais recentemente outros, fizemos um bom time trabalhando em um objetivo comum de trazer o estado da arte em tecnologia de Telecom ao público por um custo realista. Desde o cartão ISA, eu desenhei o “Tormenta 2 PCI Quad T1/E1, o qual o Mark vende como Digium T400P e E400P, e agora a Varion está vendendo como V400P (Ambos T1 e E1). Todos os arquivos de projeto (incluindo foto e arquivos de plotagem) estão disponíveis em zaptelephony.org (http://www.zapatatelephony.org) para uso público. Como qualquer um pode ver, com o trabalho dedicado de Mark (um monte do meu e outras pessoas) nos drivers da Zaptel e no software do Asterisk, estas tecnologias que vêm de um longo tempo estão crescendo e melhorando a cada dia”. 1.3 Porque o Asterisk? Eu me lembro do meu primeiro contato com o Asterisk, a primeira reação ao encontrarmos algo novo que compete com aquilo que conhecemos é rejeitar. Foi o que aconteceu, na primeira vez que vi o Asterisk ele concorria com uma solução que eu estava apresentando. De qualquer forma, eu sempre procuro levantar todas as informações sobre as alternativas aos projetos que faço e tento descobrir quais os pontos fortes e fracos de uma solução como o Asterisk. Posso dizer que após alguns dias eu fiquei pasmo, sabia que o Asterisk traria uma mudança profunda em todo o mercado de telecomunicações e voz sobre IP. O Asterisk é o Apache da telefonia. Deixe-me então dar várias razões para o Asterisk. 1.3.1 Redução de custos extrema Se você comparar um PABX convencional com o Asterisk talvez à diferença seja pequena, principalmente pelo custo do hardware e dos telefones IP. Entretanto, o Asterisk só pode ser comparado a um PABX digital estado da arte. Comparar uma central analógica de quatro troncos e 16 ramais com o Asterisk é no mínimo injusto. Quando você adiciona recursos avançados como voz sobre IP, URA e DAC, a diferença de custo a menos, pode chegar a diversas vezes. Para dar um exemplo, uma única porta de URA hoje com acesso a um mainframe, cotada recentemente para um cliente nosso, custou pelo menos 10 vezes o preço que custaria com Asterisk. 1.3.2 Ter controle do seu sistema de telefonia Este é um dos benefícios mais citados, ao invés de esperar alguém configurar o seu PABX proprietário (alguns nem mesmo dão a senha para
  22. 22. 6 | Capítulo 1 | Introdução ao Asterisk o cliente final), configure você mesmo. Total liberdade e interface padrão. No fim das contas é LINUX. 1.3.3 Ambiente de desenvolvimento fácil e rápido O Asterisk pode ser programado em C com as APIs nativas, ou em qualquer outra linguagem usando AGI. 1.3.4 Rico e abrangente em recursos Como temos ressaltado desde o início, poucos são os recursos encontrados em equipamentos PABX vendidos no mercado que não possam ser encontrados ou criados no Asterisk. Já o reverso, para encontrar tudo que tem no Asterisk em um PABX convencional... 1.3.5 É possível prover conteúdo dinâmico por telefone. Como o Asterisk é programado com C ou outras linguagens de domínio da maioria dos programadores, as possibilidades de prover conteúdo dinâmico por telefone são sem limite. 1.3.6 Plano de discagem flexível e poderoso Mais uma vez o Asterisk se supera. Se pensarmos, a maioria das centrais, nem mesmo rota de menor custo possuem. Com o Asterisk este processo é simples e prático. 1.3.7 Roda no Linux e é código aberto Uma das coisas mais fantásticas do Linux é a comunidade de software livre. Quando eu acesso o Wiki, ou os fóruns de software em código aberto eu percebo que a adoção de usuários é muito rápida, milhares de questões e relato de problemas são enviados todos os dias. O Asterisk é provavelmente um dos softwares que mais pessoas têm disponíveis para testes e avanços. Isto torna o código estável e permite a rápida resolução de problemas. 1.3.8 Limitações da arquitetura do Asterisk O Asterisk usa a CPU do servidor para processar os canais de voz, ao invés de ter um DSP (processador de sinais digitais) dedicado a cada canal. Enquanto isto permitiu que o custo fosse reduzido para as placas E1/T1, o sistema é muito dependente da performance da CPU. Minha recomendação é preservar ao máximo a CPU do Asterisk, rodá-lo sempre em uma máquina dedicada e testar o dimensionamento antes de implantar. Em minha opinião, o Asterisk deve ser sempre implementado em uma VLAN específica para VoIP, qualquer tempestade de broadcasts
  23. 23. 1.4 Arquitetura do Asterisk | 7 causada por loops ou vírus pode comprometer o seu funcionamento devido ao uso de CPU das placas de rede quando este fenômeno acontece. 1.4 Arquitetura do Asterisk APIdeformatodearquivo Asterisk APIdetraduçãodeCodecs Gsm,ALaw,Ulaw,G.723, G729,ADPCM,MP3,Speex, LPC10 GSM,WAV,G723af,MP3 Figura 1.1 Arquitetura do Asterisk. A figura acima mostra a arquitetura básica do Asterisk. Vamos explicar abaixo os conceitos relacionados à figura acima como canais, codecs e aplicações. 1.4.1 Canais Um canal é o equivalente a uma linha telefônica na forma de um circuito de voz digital. Ele geralmente consiste de ou um sinal analógico em um sistema POTS1 ou alguma combinação de CODEC e protocolo de sinalização (GSM com SIP, Ulaw com IAX). No início as conexões de telefonia eram sempre analógicas e por isso, mais suscetíveis a ruídos e eco. Mais recentemente, boa parte da telefonia passou para o sistema digital, onde o sinal analógico é codificado na forma digital usando normalmente PCM (Pulse Code Modulation). Isto permite que um canal de voz seja codificado em 64 Kilobits/segundo sem compactação. Alguns dos hardwares que o Asterisk suporta: 1 POTS – Plain Old Telephony System, sistema de telefonia convencional, baseado normalmente em linhas analógicas.
  24. 24. 8 | Capítulo 1 | Introdução ao Asterisk • Zaptel – Wildcard T410P – Placa E1/T1 com quatro portas (PCI 3.3 volts apenas) Zaptel – Wildcard T405P – Placa E1/T1 com quatro portas (PCI 5 volts apenas) Zaptel – TDM400P – Placa com quatro portas para tel. analógicos e ADSI, Zaptel - TE110P – Placa com E1/T1 com uma porta, meio- comprimento. Quicknet, - as placas quicknet, tanto PhoneJack quanto LineJack podem ser usadas com o Asterisk. • ISDN4Linux – É um driver antigo para placas ISDN BRI, acesso básico. Placas neste padrão poderão ser usadas no Asterisk. ISDN CAPI – É a outra forma de suportar as placas ISDN BRI no Linux. Placas que suportam este padrão poderão ser usadas com o Asterisk. • Voicetronix: possui placas com maior densidade de canais FXS e FXO que as da Digium. Canais que o Asterisk suporta: • Agent: Um canal de agente DAC. • Console: Cliente de console do Linux, driver para placas de som (OSS ou ALSA). • H323: Um dos protocolos mais antigos de VoIP, usado em muitas implementações. • IAX e IAX2: Inter-Asterisk Exchange Protocol, o próprio protocolo do Asterisk. • MGCP: Media Gateway Control Protocol, outro protocolo de VOIP. • Modem: Usado para linhas ISDN e não modems. • NBS: Usado para broadcast de som. • Phone: Canal de telefonia do Linux. • SIP: Session Initiation Protocol, o protocolo de VoIP mais comum. • Skinny: Um driver para o protocolo dos telefones IP da Cisco. • VOFR: voz sobre frame-relay da Adtran. • VPB: Linhas telefônicas para placas da Voicetronix. • ZAP: Para conectar telephones e linhas com placas da Digium. Também usado para TDMoE (TDM sobre Ethernet) e para o Asterisk zphfc (ISDN em modo NT). • Unicall: Usado para linhas digitais com sinalização E1/R2. Alguns drivers que podem ser instalados:
  25. 25. 1.4 Arquitetura do Asterisk | 9 • Bluetooth: Permite o uso de dispositivos Bluetooth para mudar o roteamento. • CAPI: canal ISDN CAPI • mISDN: canal mISDN channel • SCCP: Um driver alternativo para o Skinny. 1.4.2 Codecs e Conversões de CODEC Obviamente é desejado colocar tantas chamadas quanto possíveis em uma rede de dados. Isto pode ser feito codificando em uma forma que use menos banda passante. Este é o papel do CODEC (COder/DECoder), alguns CODECs como o g.729 permite codificar a 8 Kilobits por segundo, uma compressão de 8 para 1. Outros exemplos são ulaw, alaw, gsm e ilbc. 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 Pass-through • G.726 - 32kbps no Asterisk 1.0.3, 16/24/32/40kbps • G.729 – Precisa de licença, 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) 1.4.3 Protocolos Enviar dados de um telefone a outro seria fácil se os dados encontrassem seu próprio caminho para o outro telefone. Infelizmente isto não acontece, é preciso um protocolo de sinalização para estabelecer as conexões, determinar o ponto de destino, e também questões relacionadas à sinalização de telefonia como campainha, identificador da chamada, desconexão, etc. Hoje é comum o uso do SIP (Session Initiated Protocol), muito embora outros protocolos também sejam expressivos no mercado como o H.323, o MGCP e recentemente o IAX, que é excepcional quando se trata de trunking e NAT (Network Address Translation). O asterisk suporta: • SIP • H323 • IAXv1 e v2 • MGCP • SCCP (Cisco Skinny).
  26. 26. 10 | Capítulo 1 | Introdução ao Asterisk 1.4.4 Aplicações Para conectar as chamadas de entrada com as chamadas de saída ou outros usuários do asterisk são usadas diversas aplicações como o Dial, por exemplo. A maior parte das funcionalidades do Asterisk é criada na forma de aplicações como o VoiceMail (correio de voz), Meetme (conferência), entre outras. Você pode ver as aplicações disponíveis no Asterisk usando o comando “show applications” na interface de linha de comando do Asterisk. Além das aplicações na versão padrão existem aplicações que podem ser adicionadas a partir do arquivo asterisk-addons e de terceiros. 1.5 Visão geral do Asterisk x x x x x xx x x xx x x xx x CISCO IP PHONE 7905 S ERIES 1 2 AB C 3 D E F 4 5 J K L 6 MN OG H I 7 8 TU V 9 W XY ZP Q R S * 0 # 4 7 P QRS * CISCO IP PHONE 7905 S ERIES 1 2 AB C 3 D E F 4 5 J K L 6 MN OG H I 7 8 TU V 9 W XY ZP Q R S * 0 # 4 7 P QRS * CISCO IP PHONE 7905 S ERIES 1 2 AB C 3 D E F 4 5 J K L 6 MN OG H I 7 8 TU V 9 W XY ZP Q R S * 0 # 4 7 P QRS * Figura 1.2 - Visão Geral do Asterisk Dentro de uma visão geral, o Asterisk é um PABX híbrido que integra tecnologias como TDM2 e telefonia IP com funcionalidade de unidade de resposta automática e distribuição automática de chamadas. Neste momento do livro é provável que você não esteja entendendo todos estes termos, mas ao longo dos capítulos, você estará cada vez mais familiarizado. Na figura acima podemos ver que o Asterisk pode se conectar a uma operadora de telecomunicações ou um PABX usando interfaces analógicas ou digitais. Os telefones podem ser IP. Ele pode atuar como um softswitch, media gateway, correio de voz, áudio conferência e possui um mecanismo de música em espera interno. 2 TDM – TDM - multiplexação por divisão 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.
  27. 27. 1.6 Diferenças entre o velho e o novo mundo | 11 1.6 Diferenças entre o velho e o novo mundo 1.6.1 Telefonia usando o velho modelo de PABX/Softswitch x x x x x xx x x xx x CISCO IP PHONE 7905 SERIES 1 2 A B C 3 D EF 4 5 J K L 6 M N OG H I 7 8 TU V 9 WX YZP Q R S * 0 # 4 7 PQR S * CISCO IP PHONE 7905 SERIES 1 2 A B C 3 D EF 4 5 J K L 6 M N OG H I 7 8 TU V 9 WX YZP Q R S * 0 # 4 7 PQR S * CISCO IP PHONE 7905 SERIES 1 2 A B C 3 D EF 4 5 J K L 6 M N OG H I 7 8 TU V 9 WX YZP Q R S * 0 # 4 7 PQR S * x x Figura 1.3 - PABX por software do tipo convencional (softswitch) No antigo modelo de PABX, todos os componentes eram vendidos separadamente. Você tinha de comprar cada componente separadamente e integrar ao sistema. Os custos e riscos eram altos e a maior parte dos equipamentos proprietária.
  28. 28. 12 | Capítulo 1 | Introdução ao Asterisk 1.6.2 Telefonia do jeito Asterisk x x CISCO IPPHONE 7905 SERIES 1 2 A BC 3 D E F 4 5 J K L 6 M N OG H I 7 8 T U V 9 W X YZP Q R S * 0 # 4 7 PQ RS * x xx x x xx x CISCO IPPHONE 7905 SERIES 1 2 A BC 3 D E F 4 5 J K L 6 M N OG H I 7 8 T U V 9 W X YZP Q R S * 0 # 4 7 PQ RS * CISCO IPPHONE 7905 SERIES 1 2 A BC 3 D E F 4 5 J K L 6 M N OG H I 7 8 T U V 9 W X YZP Q R S * 0 # 4 7 PQ RS * Figura 1.4 – Telefonia do jeito Asterisk O Asterisk faz todas estas funções de forma integrada, o licenciamento é gratuito (GPL General Public License) e pode ser feito em um único ou em vários servidores de acordo com um dimensionamento apropriado. Incrível dizer isto, mas posso atestar que às vezes é mais fácil implantar o Asterisk do que até mesmo especificar e licenciar um sistema de telefonia convencional. Se me permitem a crítica neste livro, os grandes fabricantes além de caros criaram uma barreira enorme à adoção dos seus produtos, pois é preciso um especialista para descobrir o que está ou não incluído nas licenças e de que forma se licenciam seus produtos. Esse é o um dos pontos individuais que mais contribuíram para que eu abraçasse o Asterisk.
  29. 29. 1.7 Construindo um sistema de teste | 13 1.7 Construindo um sistema de teste x x x xx x CISCO IP PHONE 7905 SERIES 1 2 A B C 3 DE F 4 5 J K L 6 M N OG HI 7 8 T U V 9 WX Y ZP QR S * 0 # 4 7 PQ RS * SIP phone FXO interface FXS interface x x x xx x x x Internet Connection Figura 1.5 O PABX 1x1 É comum iniciar construindo uma máquina de teste. A máquina de teste mais simples é um PABX 1x1 com pelo menos uma linha e um telefone. Existem várias formas de fazê-lo, vamos examinar algumas. 1.7.1 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 telefônica comum e um telefone normal (analógico) ‘a porta FXS e você tem o PABX 1x1. 1.7.2 VoIP Service Provider, softfone ou ATA Uma forma bastante econômica é criar um Asterisk de teste totalmente em VoIP. Você pode contratar um número de telefone junto a um provedor de serviços de voz sobre IP. Existem vários operando e algumas operadoras tradicionais já oferecem este serviço. Na parte do telefone você pode usar um softfone gratuito, existem vários como o Idefisk, X- Lite e SJPhone. Você pode também adquirir um adaptador de telefonia analógica para ligar telefones analógicos a ele. 1.7.3 Placa clone FXO, softfone ou ATA
  30. 30. 14 | Capítulo 1 | Introdução ao Asterisk Esta é a forma que eu usei para testar o Asterisk. Existem algumas placas de fax/modem padrão V.90 que operam com o Asterisk. As placas X100P e X101P da Digium eram baseadas nestes chips (daí o nome de clones). É possível conectar uma linha telefônica em uma placa destas. É bem difícil encontrá-las hoje, pois foram descontinuadas. Os chipsets que eram conhecidos por funcionar eram (Motorola 68202-51, Intel Ambient MD3200, 537PG e 537PU). Para o telefone você pode usar um ATA ou um softfone. 1.8 Cenários de uso do Asterisk Existêm diferentes cenários onde o Asterisk pode ser usado. Vamos listar alguns deles explicando as vantagens e possíveis limitações. 1.8.1 IP PBX O cenário mais comum é a instalação de um novo PABX ou a substituição de um PABX existente. Se você compara o Asterisk com outras alternativas, você irá descobrir que ele é possui uma excelente relação custo/benefício se comparado com centrais digitais e principalmente IP. Comparar o Asterisk com uma central analógica é no mínimo injusto. Várias empresas estão modificando suas especificações para Asterisk. x x xx x x xx x x x x x x x x x x x x x x x Figure 1.6 IP PBX
  31. 31. 1.8 Cenários de uso do Asterisk | 15 1.8.2 Atualização de PABX existente para suportar VoIP. Você pode ver na imagem abaixo um dos cenários mais comuns. As grandes companhias normalmente não desejam assumir grandes riscos e querem preservar investimentos já feitos. Habilitar uma central antiga para o mundo IP usando o Asterisk pode ser uma alternativa excelente. Com isso é possível usar telefones IP, ATAs e softfones em escritórios remotos e mesmo se conectar a provedores de serviço com melhores taxas. x x x xx x x xx x x x x x x x x x x x x x x x x x x x x x x x Figure 1.7 Integrção com um PABX existente
  32. 32. 16 | Capítulo 1 | Introdução ao Asterisk 1.8.3 Interligação de filiais através de VoIP Uma aplicação muito útil para VoIP é a conexão de filiais usando uma rede WAN existente ou mesmo a Internet. Isto permite a você evitar as tarifas das operadoras para as ligações entre a matriz e as filiais. È possível inclusive sair discando nas cidades onde você possui um ponto de presença VoIP com saída para rede pública. PSTN Telco orexisting PBX x xx x x xx xx xx x x xx x x xx xx xx x x xx x x xx xx xx x Figure 1.8 Interligação de filiais 1.8.4 Servidor de aplicações (URA, Conferência, Correio de voz) Você pode usar também o Asterisk como um servidor de aplicações para um PABX existente ou conectado diretamente à rede pública. O Asterisk pode fazer os papeis de correio de voz, recepção de fax, gravação de chamadas, ura conectada a um banco de dados ou mesmo um servidor de áudio conferência. Se você integrar o Asterisk ao e-mail você tem um sistema de mensagens unificado que é uma solução muito custosa em outras plataformas. Para estas aplicações o Asterisk é uma excelente opção com um custo relativamente pequeno.
  33. 33. 1.8 Cenários de uso do Asterisk | 17 x x Figure 1.9 Asterisk no papel de servidor de aplicações 1.8.5 Media Gateway A maioria dos provedores de voz sobre IP usam um SIP proxy para fazer o registro, localização e autenticação dos usuários. De qualquer forma a ligação tem de ser encaminhada na maioria das vezes para a rede pública de telefonia. Isto pode ser feito diretamente através de um gateway PSTN usando interfaces E1 ou analógicas. Em muitos casos, no entanto é preciso entroncar com um provedor de terminações usando conexões SIP ou H.323. O Asterisk pode atuar nesta arquitetura como um media gateway traduzindo protocolos de sinalização e codecs. x x x xx x x x x x x Figure 1.10 Asterisk como um gateway de media
  34. 34. 18 | Capítulo 1 | Introdução ao Asterisk 1.8.6 Plataforma de Contact Center Um Contact center é uma solução muito complexa. Ela combina diversas tecnologias como DAC (distribuição automática de chamadas), URA (unidade de resposta audível), supervisão de chamadas e agents, relatórios entre outras coisas. Basicamente existem dois tipos de Contact Centers, os ativos e os receptivos. Nos receptivos o Asterisk pode atuar como PABX, DAC, URA, CTI, gravador digital e a solução de telefonia podem ser criadas totalmente nele. No caso do ativo é possível integrar vários discadores existentes no mercado (alguns open source) com o Asterisk. x x x Figure 1-11 Asterisk as a Contact Center Platform 1.9 Sumário O Asterisk é um software com licenciamento GPL, que transforma um PC comum em uma poderosa central telefônica. Foi criado por Mark Spencer da Digium que comercializa o hardware de telefonia. O Hardware de telefonia também é aberto e foi desenvolvido por Jim Dixon no projeto Zapata Telephony. A arquitetura do Asterisk se compõe basicamente de: • CANAIS que podem ser analógicos, digitais ou VoIP.
  35. 35. 1.10 Questionário | 19 • PROTOCOLOS de comunicação como o SIP, H323, MGCP e IAX que são responsáveis pela sinalização de telefonia. • CODECs que fazem a codificação da voz de um formato para outro, permitindo que seja transmitida com compressão de até oito vezes (G729a). • APLICAÇÕES que são responsáveis pela funcionalidade do PABX. O Asterisk pode ser usado em inúmeras aplicações, desde um PABX para uma pequena empresa até sistemas de resposta automática de alta densidade. 1.10 Questionário 1. Marque as opções corretas. O Asterisk tem quatro componentes básicos de arquitetura CANAIS PROTOCOLOS AGENTES TELEFONES CODECS APLICAÇÕES 2. Se for necessário criar um PABX com 4 troncos e oito telefones, você pode usar um PC com Linux e três placas TDM400P uma com quatro canais FXO e duas com quatro canais FXS cada. A afirmação acima está: CORRETA INCORRETA 3. Um canal FXS gera tom de discagem, enquanto um canal FXO recebe o tom vindo da rede pública ou de um outro PABX. A afirmação acima está: CORRETA INCORRETA 4. Marque as opções corretas, O Asterisk permite os seguintes recursos: Unidade de Resposta Automática Distribuição automática de chamadas Telefones IP Telefones Analógicos Telefones digitais de qualquer fabricante.
  36. 36. 20 | Capítulo 1 | Introdução ao Asterisk 5. Para tocar música em espera o Asterisk necessita de um CD Player ligado em um ramal FXO. A afirmação está: CORRETA INCORRETA 6. É responsável pelo atendimento automático de clientes, normalmente toca um “prompt” e espera que usuário selecione uma opção. Am alguns casos pode ser usada em conjunto com um banco de dados e conversão texto para fala. Estamos falando de uma: URA IVR DAC Unified Messaging 7 – Marque as opções corretas, Um banco de canais é conectado ao Asterisk através de uma interface: E1 T1 FXO FXS 8 – Marque a opção correta. Um canal E1 suporta ___ canais de telefonia enquanto um T1 suporta ___ canais. 12, 24 30, 24 12,12 30,23 9 – Nas plataformas de telefonia convencional, normalmente URA, DAC e Correio de voz estão incluídos no PABX. Esta afirmação está: CORRETA INCORRETA 10 – Marque as opções corretas, É possível interligar usando o Asterisk várias filiais através de voz sobre IP reduzindo a despesa com ligações de longa distância. Em uma filial: O Asterisk pode ser a central telefônica para todos os usuários. O Asterisk pode integrar uma central telefônica existente Podem ser usados apenas telefones IP ligados a um Asterisk centralizado
  37. 37. Baixando e instalando Neste capítulo vamos abordar a instalação e execução do Asterisk. 2.1 Objetivos do capítulo Ao final deste capítulo você deverá estar apto à: • Dimensionar o hardware necessário para o Asterisk. • Instalar o Linux com as bibliotecas necessárias para o Asterisk. • Baixar o Asterisk usando FTP. • Compilar o Asterisk no Linux. • Executar e explicar as opções de execução do Asterisk. • Aprender a iniciar o Asterisk na carga do Linux com um usuário diferente de root. 2.2 Introdução Este capítulo vai ajudá-lo a preparar seu sistema para a instalação do Asterisk. O Asterisk funciona em muitas plataformas e sistemas operacionais, mas nós escolhemos manter as coisas simples e ficar em uma única plataforma e distribuição do Linux. Vamos usar o Debian neste livro. As instruções abaixo podem funcionar com outra distribuição do Linux, mas isto não foi testado. O Asterisk é conhecido por funcionar na maioria das distribuições. Testamos no Debian, Suse 9.2 e no CentOS. 2.3 Hardware Mínimo O Asterisk usa de forma intensiva o processador, principalmente para fazer o processamento dos canais de voz. Se você estiver construindo um sistema complexo com carga elevada é importante entender este conceito. Para construir seu primeiro PABX um processador compatível com Intel que seja melhor que um Pentium 300Mhz com 256 MB RAM é o suficiente. O Asterisk não requer muito espaço em disco, cerca de 100 MB compilados, mais código fonte, voice-mail, prompts customizados e todos requerem espaço. Capítulo 2
  38. 38. 22 | Capítulo 2 | Baixando e Instalando o Asterisk Se você usar apenas VOIP, nenhum outro hardware é necessário. Pode se usar softfones como os da Counterpath (X-Lite) 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 Cuidado ! Algumas aplicações do Asterisk como o “Meetme” requerem uma fonte de clock para fornecer a temporização. Normalmente a fonte de clock do Asterisk é uma placa TDM. Se o seu sistema não tem uma placa TDM, você pode usar o driver ztdummy que usa a USB como fonte de temporização. (No Kernel versão 2.6 o ztdummy usa um temporizador interno do kernel e não necessita da USB, usar o temporizador interno do kernel é mais recomendado). 2.3.1 Montando o seu sistema O hardware necessário para o Asterisk não é muito complicado. Você não precisa de uma placa de vídeo sofisticada ou periféricos. Portas seriais, paralelas e USB podem ser completamente desabilitadas. Uma boa placa de rede é essencial. Se você estiver usando uma das placas da Digium, é bom verificar as instruções da sua placa-mãe para determinar se os Slots PCI suportam estas placas. Muitas placas-mãe compartilham interrupções em slots PCI. Conflito de interrupção é uma fonte potencial de problemas de qualidade de áudio no Asterisk. Uma maneira de liberar IRQs é desabilitar na BIOS todo o hardware que não for utilizado, como placas de som on-board por exemplo. 2.3.2 Questões de compartilhamento de IRQ Muitas placas de telefonia como a X100P podem gerar grandes quantidades de interrupções, atendê-las toma tempo. Os drivers podem não conseguir fazê-lo em tempo se outro dispositivo estiver processando a mesma IRQ compartilhada e a linha de IRQ não puder receber outra interrupção. Tende a funcionar melhor em sistemas multiprocessados. Em sistemas monoprocessados você pode ter muitas perdas de interrupção e clock desalinhado. Quaisquer das placas da Digium e outras placas de telefonia podem estar sujeitas ao mesmo problema. Como a entrega precisa de IRQs é uma necessidade primária em telefonia, você não deve compartilhar IRQs com nada. Nem sempre isto ocorre, mas você deve prestar atenção ao problema. Se você está usando um computador dedicado para o Asterisk, desabilite o maior número de dispositivos que você não vá usar. A maioria das BIOS permite que você manualmente designe as IRQs. Vá até a BIOS e olhe na seção de IRQs. É bem possível que você consiga configuras as interrupções manualmente por slot.
  39. 39. 2.4 Escolhendo uma distribuição do Linux. | 23 Uma vez iniciado o computador, veja em /proc/interrupts as IRQs designadas. # cat /proc/interrupts CPU0 0: 41353058 XT-PIC timer 1: 1988 XT-PIC keyboard 2: 0 XT-PIC cascade 3: 413437739 XT-PIC wctdm <-- TDM400 4: 5721494 XT-PIC eth0 7: 413453581 XT-PIC wcfxo <-- X100P 8: 1 XT-PIC rtc 9: 413445182 XT-PIC wcfxo <-- X100P 12: 0 XT-PIC PS/2 Mouse 14: 179578 XT-PIC ide0 15: 3 XT-PIC ide1 NMI: 0 ERR: 0 Acima você pode ver as três placas da Digium cada uma na sua IRQ. Se este for o caso, você pode ir em frente e instalar os drivers de hardware. Se não for o caso, volte na BIOS até que as placas não estejam compartilhando as IRQs. 2.4 Escolhendo uma distribuição do Linux. O Asterisk foi originalmente desenvolvido para rodar em Linux, embora possa ser usado no BSD e OS X. No entanto, as placas PSTN da Digium foram desenhadas para trabalhar com Linux i386. Se você for novo com Asterisk procure usar o Linux. 2.4.1 Requisitos do Linux Várias distribuições como RedHat, Mandrake, Fedora, Debian, Slackware e Gentoo foram usadas com sucesso com o Asterisk. 2.4.2 Pacotes necessários. Antigamente existiam alguns pacotes que eram necessários para instalar o Asterisk como o readline e readline-devel que não são mais necessários. Não existe hardware especial tal como uma placa de som e o único pacote necessário é o próprio Asterisk. Se você estiver usando hardware da Digium ou ztdummy, você vai precisar do pacote zaptel. O pacote zaptel é necessário para que algumas aplicações sejam incluídas em tempo de compilação. Se você escolher compilar o Asterisk e não o zaptel, mas
  40. 40. 24 | Capítulo 2 | Baixando e Instalando o Asterisk descobrir que esta faltando uma aplicação relacionada ao pacote zaptel (Como o Meetme()), você terá de compilar o zaptel e então recompilar o Asterisk para que a aplicação seja incluída. Para interfaces T1 e E1 o pacote libpri é necessário. Bison é necessário para compilar o Asterisk. Os pacotes de desenvolvimento ncurses e ncurses-development são necessários se você quiser construir novas ferramentas (Como o astman). As bibliotecas zlib e zlib-devel são necessárias agora para compilar. Isto se deve a adição do DUNDi (Distributed Universal Number Discovery) protocol. O openssl e openssl-dev também são necessários. 2.5 Instalando o Linux para atender ao Asterisk. Usamos o Debian com Kernel 2.6 para a instalação do Asterisk com o Linux. Escolhemos esta distribuição pelo seu grau de aceitação e por ser uma das distribuições suportadas pela Digium. Abaixo seguem as instruções da instalação do Asterisk a partir do zero. Passo 1: Coloque o CD do Debian no cdrom e inicialize o seu PC.
  41. 41. 2.5 Instalando o Linux para atender ao Asterisk. | 25 Passo 2 : Selecione o idioma para a instalação. Passo 3: Selecione o país do idioma selecionado anteriormente. Passo 4: Escolha agora o mapa de teclado correspondente. Passo 5: Digite o nome do host da máquina.
  42. 42. 26 | Capítulo 2 | Baixando e Instalando o Asterisk Passo 6: Digite o domínio ao qual este equipamento faz parte. Passo 7: Será feita a configuração do particionamento do disco do equipamento, apenas confirme as opções apresentadas. Cuidado ! Todas as informações do seu disco rígido serão apagadas. Instale em um PC novo ou que você possa formatar !!!
  43. 43. 2.5 Instalando o Linux para atender ao Asterisk. | 27 Passo 8: Confirme que você vai apagar todo o disco. Passo 9: Confirme que todos os arquivos ficarão em uma partição. Passo 10: Aceite e finalize as opções de particionamento. Passo 11: Confirme novamente.
  44. 44. 28 | Capítulo 2 | Baixando e Instalando o Asterisk Passo 12: Aceite a instalação do GRUB. Passo 13: Instalação está completa, digite <enter> para continuar.
  45. 45. 2.5 Instalando o Linux para atender ao Asterisk. | 29 Passo 14: Agora a máquina irá reiniciar, remova o CD. Passo 15: Siga as opções apresentadas para a configuração do fuso horário. Passo 16: Escolha America.
  46. 46. 30 | Capítulo 2 | Baixando e Instalando o Asterisk Passo 17: Escolha “Other”. Passo 18: Escolha “São Paulo”. Passo 19: Digite “asterisk” como senha para o usuário root. Passo 20: Redigite a senha para confirmação.
  47. 47. 2.5 Instalando o Linux para atender ao Asterisk. | 31 Passo 21: Crie um usuário chamado asterisk. Passo 22: Entre com o nome do usuário Asterisk novamente. Passo 23: Digite “asterisk” como senha para o usuário asterisk.
  48. 48. 32 | Capítulo 2 | Baixando e Instalando o Asterisk Passo 24: Redigite a senha para confirmação. Passo 25: Responda não a pergunta para verificação de outro CD.
  49. 49. 2.5 Instalando o Linux para atender ao Asterisk. | 33 Passo 26: Já que utilizaremos esta máquina como servidor Asterisk PBX, não é necessário selecionar nenhuma opção apresentada. Redigite a senha para confirmação. Passo 27: Apenas confirme a opção apresentadas para o encerramento das configurações do Debian
  50. 50. 34 | Capítulo 2 | Baixando e Instalando o Asterisk Passo 28: Use a conta Asterisk para o servidor de e-mail: 2.6 Preparando o Debian para o Asterisk. A instalação do Debian está completa, vamos agora instalar os pacotes necessários para a instalação/compilação dos drivers das placas zaptel e do próprio Asterisk. Passo 1: Faça o login como root Passo 2: Adicionar fonte para download de pacotes (/etc/apt/sources.list)) #apt-setup Passo 3: Selecionar ftp.
  51. 51. 2.6 Preparando o Debian para o Asterisk. | 35 Passo 4: Selecionar Brazil. Passo 5: Selecionar ftp.br.debian.org Passo 6: Selecionar <no> para não inserir nenhuma outra fonte.
  52. 52. 36 | Capítulo 2 | Baixando e Instalando o Asterisk Passo 7: Instalar os Headers do Kernel em execução: #apt-get install kernel-headers-`uname –r` #ln -s /usr/src/kernel-headers-`uname -r` /usr/src/linux Passo 8: Instalação dos pacotes necessários para o Asterisk: #apt-get install bison openssl libssl-dev libasound2-dev libc6-dev libnewt- dev libncurses5-dev zlib1g-dev zlib-bin gcc make 2.7 Obtendo e compilando o Asterisk Agora que você já instalou o Linux e as bibliotecas necessárias, vamos partir para a instalação do Asterisk. 2.7.1 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 diretório /usr/src se ele não existir. No momento do fechamento deste livro estas eram as versões correntes, substitua os comandos abaixo com os arquivos das versões mais atuais. # cd /usr/src #wget http://ftp.digium.com/pub/zaptel/zaptel-1.2.5.tar.gz #wget http://ftp.digium.com/pub/libpri/libpri-1.2.2.tar.gz #wget http://ftp.digium.com/pub/asterisk/asterisk-addons-1.2.2.tar.gz #wget http://ftp.digium.com/pub/asterisk/asterisk-sounds-1.2.1.tar.gz #wget http://ftp.digium.com/pub/asterisk/asterisk-1.2.5.tar.gz Descompacte os arquivos usando: # tar –xzvf asterisk-1.2.5.tar.gz
  53. 53. 2.8 Compilando o Asterisk | 37 # tar –xzvf libpri-1.2.2.tar.gz # tar –xzvf asterisk-addons-1.2.2.tar.gz # tar –xzvf asteriks-sounds-1.2.1.tar.gz # tar –xzvf zaptel-1.2.4.tar.gz 2.7.2 Compilando o driver zaptel Normalmente a compilação dos drivers zaptel é bem simples. Entretanto podem ocorrer casos onde você não possui nenhuma placa TDM que use o driver zaptel. O Asterisk precisa de uma fonte de temporização que normalmente é fornecido por uma placa com driver zaptel. Se esta placa não existir vai ser preciso compilar o módulo ztdummy. O módulo ztdummy usa o relógio interno do kernel (kernel 2.6) ou da interface USB (kernel 2.4) para fornecer temporização para o Asterisk. O Driver ztdummy requer que você tenha uma controladora USB UHCI. Se você estiver usando kernel 2.4. Você pode verificar se a sua placa-mãe tem uma controladora UHCI USB rodando o lsmod da linha de comando. # lsmod Module Size Used by Not tainted ... uhci-hcd 29725 0 [unused] <-- usb-uhci usbcore 105342 3uhci-hcd A tela acima mostra os módulos USB carregados. Se você vir uma linha que lê usb-uhci. Isto mostra que o módulo UHCI está carregado e pronto para ser usado com o ztdummy se você estiver usando a versão 2.4, se estiver usando a versão de kernel 2.6 nada disso é necessário. 2.7.2.1 Compilando os drivers zaptel Você vai precisar compilar os módulos da Zaptel se você planeja usar o ztdummy ou qualquer hardware da Digium. Os seguintes comandos irão compilar e instalar módulos para quaisquer hardwares da Digium que você possa ter instalado no seu sistema. Exemplo: Compilando os drivers da Zaptel. cd /usr/src/zaptel-1.2.4/ make clean make install 2.8 Compilando o Asterisk Se você já compilou o software antes, compilar o Asterisk vai parecer bem simples. Rode os seguintes comandos para compilar e instalar o Asterisk.
  54. 54. 38 | Capítulo 2 | Baixando e Instalando o Asterisk cd /usr/src/libpri-1.2.2/ make clean make make install cd /usr/src/asterisk-1.2.5/ make clean make make install 2.9 Iniciando e parando o Asterisk Antes de usar o Asterisk, você deve criar os arquivos de configuração. Muito embora a quantidade de configurações possíveis seja muito grande, apenas um pequeno conjunto é necessário de forma a iniciar o Asterisk com sucesso. Gere a configuração exemplo do Asterisk usando: cd /usr/src/asterisk-1.2.5/ make samples Com esta configuração mínima, já é possível iniciar o Asterisk com sucesso. /usr/sbin/asterisk –vvvgc Use o comando stop now para derrubar o Asterisk. Veja os comandos disponíveis na interface de linha de comando do Asterisk. CLI>stop now 2.9.1 Parâmetros de linha de comando do Asterisk. O processo de executar o Asterisk é bem simples. Se o Asterisk for rodado sem argumentos, ele é lançado como um “daemon” (Processo que espera conexões em uma porta TCP ou UDP). /sbin/asterisk Você pode acessar a console de um processo do Asterisk que já esteja em execução usando o comando abaixo. Mais de uma console pode ser conectada ao Asterisk simultaneamente. /sbin/asterisk –r 2.9.2 Abaixo os parâmetros disponíveis • -h: Help mostra as opções de parâmetros de linha de comando.
  55. 55. 2.10 Iniciando o Asterisk em tempo de inicialização. | 39 • -C <configfile>: Inicia o Asterisk com arquivo de configuração diferente do padrão /etc/asterisk/asterisk.conf • -f: Foreground. Inicia o Asterisk, mas não coloca um processo em Background. • -c: Habilita o modo de console. Inicia o Asterisk em Foreground (na frente, implica na opção –f), com uma console com interface de linha de comando. • -r: Console remota. • -n: Desabilita a cor na console. • -i: Pede pelos códigos criptográficos de inicialização. • -p: Roda como pseudo-realtime. Roda com prioridade de tempo real. • -q: Modo silencioso suprime as mensagens. • -v: Inclui mensagens detalhadas, (múltiplos v’s = mais verbose). • -d: Habilita debug extra em todos os módulos • -g: Faz com que o Asterisk descarregue o núcleo em caso de segment violation. • -x<cmd>: Executa o comando <cmd> (válido apenas com r) 2.10 Iniciando o Asterisk em tempo de inicialização. Vamos agora preparar o Asterisk para iniciar automaticamente no boot do Linux, digite: cd /etc/init.d cp /usr/src/asterisk/contrib/init.d/rc.debian.asterisk ./asterisk Para atualizar os scripts de inicialização do Linux digite: update-rc.d asterisk defaults 2.11 Iniciando o Asterisk usando um usuário diferente de root. É mais seguro executar o Asterisk com um usuário diferente do usuário root. No caso de uma falha de segurança e um ataque do tipo “buffer overflow” é mais seguro que o Asterisk tenha sido iniciado com um usuário menos privilegiado. Para alterar o usuário de execução do Asterisk: 1) Edite o arquivo asterisk: vi /etc/init.d/asterisk
  56. 56. 40 | Capítulo 2 | Baixando e Instalando o Asterisk 2) Descomente as seguinte linhas do arquivo removendo o # do início de cada linha: AST_USER="asterisk" AST_GROUP="asterisk" 3) Para alterar os direitos do usuário asterisk nas pastas utilizadas para a execução do Asterisk, digite: cd / chown --recursive asterisk:asterisk /etc/asterisk chmod --recursive u=rwX,g=rX,o= /etc/asterisk chown --recursive asterisk:asterisk /var/lib/asterisk chown --recursive asterisk:asterisk /var/log/asterisk chown --recursive asterisk:asterisk /var/run/asterisk chown --recursive asterisk:asterisk /var/spool/asterisk chown --recursive asterisk:asterisk /dev/zap chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk chmod --recursive u=rwX,g=rX,o= /var/log/asterisk chmod --recursive u=rwX,g=rX,o= /var/run/asterisk chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk chmod --recursive u=rwX,g=rX,o= /dev/zap 4) Teste as alterações realizadas digitando: /etc/init.d/asterisk start 2.12 Considerações sobre a instalação do Asterisk 2.12.1 Sistemas em produção Se o Asterisk for instalado em um ambiente de produção, deve-se prestar atenção no projeto do sistema. O servidor deve ser otimizado de forma que as funções de telefonia tenham prioridade sobre os outros processos do sistema. Na maioria dos casos o Asterisk não deve rodar outros processos, principalmente se forem intensivos em CPU. Se forem necessários processos que utilizam muita CPU como um bancos de dados, por exemplo, estes devem ser instalados eventualmente em um servidor separado. De uma forma geral o Asterisk é um sistema sensível a variações na perfomance da máquina. Isto significa que em um sistema em produção o ideal é não usar interfaces gráficas como o KDE ou GNOME. 2.12.2 Considerações sobre a rede Se você vai usar telefones IP, o que é muito provável, é importante que você preste atenção a algumas questões sobre a rede. Os protocolos de voz sobre IP são muito bons e resistentes a perdas de pacotes, atrasos e variações de atrasos. Entretanto se você abusar, a qualidade de voz não será boa. Só é possível garantir a qualidade da voz utilizando QoS fim-a- fim, o que é inviável principalmente em telefonia sobre a Internet. Desta forma seguem algumas recomendações.
  57. 57. 2.13 Sumário | 41 Implemente QoS fim-a-fim sempre que possível. Mesmo em switches de 100Mbps onde é raro ter um congestionamento, vale a pena, um vírus ou uma condição de rede inesperada pode por tudo a perder. Seja conservador, use, por exemplo, uma conexão de Internet exclusiva para softfones e telefones IP. Na maioria das vezes os backbones têm folga no tráfego, mas a conexão de acesso é congestionada pelo próprio usuário com downloads, navegação, e-mail entre outros. Evite hubs de 10 e 100 Mbps, as colisões nestes equipamentos, causam variação no atraso (jitter). Jitter é um dos piores inimigos da telefonia IP. Oriente os usuários de telefonia sobre a Internet onde não é possível garantir a qualidade. Manter as expectativas em um nível realista evita problemas futuros e comentários 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, é provável que exista algum problema na sua rede. Com QoS bem implementado a qualidade de voz é perfeita, “sem desculpas”. 2.13 Sumário Neste capítulo você aprendeu que o requisito mínimo de hardware do Asterisk é um Pentium 300 Mhz com 256 MB RAM e pouco mais de 100 MB de espaço livre em disco para instalar o Asterisk. Por fim aprendemos a inicializar o Asterisk com um usuário diferente de “root”. 2.14 Questionário 1. Qual a configuração mínima para o Asterisk. 2. As placas de telefonia para o Asterisk têm um processador próprio (DSP), não precisando assim de muita CPU do servidor. Correto Incorreto 3. Para que a telefonia IP funcione com perfeição é necessário que à rede possua QoS fim-a-fim. Correto Incorreto
  58. 58. 42 | Capítulo 2 | Baixando e Instalando o Asterisk 4. É possível obter uma boa qualidade de voz em uma rede que não esteja congestionada com switches de 100 Mbps. Correto Incorreto 5. Liste abaixo as bibliotecas necessárias para compilar o Asterisk. 6. Se você não tem uma placa zaptel você precisa de uma fonte de tempo. O driver ztdummy faz este papel na versão de kernel 2.4 do Linux aproveitando uma biblioteca USB. Isto é necessário, pois algumas aplicações como o _______ e o ______ precisam de uma referência de tempo. 7. Quando você faz uma instalação do Asterisk, o melhor é não instalar os pacotes gráficos como o KDE e GNOME, pois o Asterisk é sensível na questão de CPU e interfaces gráfica roubam muitos ciclos de CPU do servidor. Correto Incorreto 8. Os arquivos de configuração do Asterisk ficam em ____________________. 9. Para instalar os arquivos de configuração de exemplo você precisa executar o seguinte comando. 10. Porque é importante inicializar o Asterisk com um usuário diferente de root.
  59. 59. Primeiros passos Neste capítulo você vai aprender a configurar o Asterisk dentro de uma configuração de PABX simples. O objetivo aqui é que você possa ter uma primeira experiência com o Asterisk, configurando um ou dois telefones IP, discando entre eles ou para uma extensão com uma mensagem inicial. Mais à frente, vamos mostrar, com detalhes, os canais SIP, IAX e ZAPATA. 3.1 Objetivos do capítulo Ao final deste capítulo você poderá: • Entender e saber editar os arquivos de configuração. • Aprender a instalar softfones baseados em SIP. • Entender e configurar um plano de discagem simples. • Configurar um PABX simples. 3.2 Introdução Neste capítulo vamos aprender alguns conceitos que vão nos permitir configurar o Asterisk da forma mais básica. No final temos um exercício que poderá ser feito usando hardware de uma porta FXO ou usando uma conexão para um provedor VoIP. Nos capítulos seguintes vamos aumentar gradualmente a dificuldade. É muito importante que se entendam os conceitos apresentados neste capítulo para prosseguir aos capítulos seguintes. 3.3 Gramática dos arquivos de configuração O Asterisk é controlado através de arquivos de arquivos de configuração localizados no diretório /etc/asterisk. O formato dos arquivos de configuração do Asterisk é semelhante aos arquivos (.ini) do Windows. O ponto e vírgula é o caractere de comentário. O (=) e o (=>) podem ser usados de forma idêntica, linhas em branco são ignoradas. Arquivo de exemplo: ; ; A primeira linha sem ser comentário deve ser o título de uma sessão. ; [sessao] chave = valor ; Designação de variável [sessao2] objeto => valor ; Declaração de objeto Capítulo 3
  60. 60. 44 | Capítulo 3 | Configuração do Asterisk O interpretador do Asterisk interpreta (=) e (=>) de forma idêntica. A sintaxe é apenas para tornar o código mais legível. Embora os arquivos compartilhem a mesma sintaxe, existem pelo menos três tipos distintos de gramática. 3.3.1 Grupo simples O formato de grupo simples é o mais básico e usado por arquivos de configuração onde os objetos são declarados com todas as opções na mesma linha. Os arquivos extensions.conf, meetme.conf e voicemail.conf seguem este formato. [sessao] objeto1 => op1,op2,op3 objeto2 => op1b,op2b,op3b Neste exemplo, o objeto1 é criado com opções op1, op2 e op3 enquanto o objeto 2 é criado com op1b, op2b e op3b. 3.3.2 Formato de objeto com herança de opções Este formato é usado pelo zapata.conf e outras interfaces onde há muitas opções. Entretanto, a maioria das interfaces e objetos compartilha o mesmo valor para opções com outros. Nesta classe de arquivo de configuração, tipicamente existem uma ou mais seções que contém declarações de um ou mais canais ou objetos. As opções para o objeto são especificadas acima da declaração do objeto e podem ser mudadas para a declaração de outro objeto. É um conceito difícil de entender, mas muito fácil de usar. Considere o exemplo abaixo: [sessao] op1 = bas op2 = adv objeto=>1 op1 = int objeto => 2 As primeiras duas linhas configuram o valor da opção op1 e op2 para “bas” e “adv” respectivamente. Quando o objeto 1 é instanciado, ele é criado com sua opção 1 sendo “bas” e sua opção 2 sendo “adv”. Após declarar o objeto 1, mudamos o valor da opção 1 para “int”. E então criamos o objeto 2, agora o objeto 2 é criado com sua opção 1 sendo “int” e sua opção 2 permanecendo “adv”. 3.3.3 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 opções e que tipicamente não compartilham um grande volume de

×