Baixe o app para aproveitar ainda mais
Prévia do material em texto
O PBX Asterisk Prof. Glaucionor Oliveira O Asterisk é um software de PBX� (Private Branch eXchange) híbrido com licença GPL(General Public Licence) que integra tecnologias como TDM (Multiplexação por Divisão de Tempo), telefonia IP e IVR (Resposta Interativa por Voz) com funcionalidade DAC (Distribuição Automática de Chamadas). Esse software roda em plataforma Linux, podendo também funcionar em outros sistemas operacionais como o Windows, FreeBSD e outros, porém com recursos limitados. A Digium é a empresa criadora e desenvolvedora primária do Asterisk, sendo Mark Spencer seu criador e principal mantenedor. Essa empresa além de investir no desenvolvimento do código fonte do Asterisk, fabrica hardwares de telefonia de baixo custo que funciona em conjunto. O Asterisk é uma plataforma completa de telecomunicações. Ele é muito mais que um PABX comum, pois permite uma conectividade em tempo real entre as redes PSTN e redes VoIP. Além de possuir as mesmas características de um PABX, ele possui uma série de recursos adicionais como: Possibilidade de conectar empregados trabalhando de casa para o PABX da empresa, através de conexões banda larga; Correio de voz enviado por e-mail no formato mp3 (MPEG-1/2 Audio Layer 3) ; Música em espera para clientes esperando em filas, suportando música em mp3; Filas de chamadas onde agentes de forma conjunta atendem e as chamadas e monitoram a fila; Salas de conferência, onde varias pessoas podem falar simultaneamente; Identificação do numero chamador; Siga-me; URA - Resposta Interativa por Voz permitindo navegar usando reconhecimento de voz ou teclado do telefone; DAC - Entrega automática de chamadas; Gerência de filas de chamadas (queue); Direcionamento de chamadas; Billing (Sistema de bihetagem); Gravar conversas ou conferências; FAX over IP; 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 aos canais de voz. Isso permitiu uma redução de custos, porém o sistema fica muito dependente da performance da CPU, para atenuar esse problema deve-se optar por uma máquina servidora dedicada. Ele foi projetado para permitir a adição de novas interfaces e tecnologias de maneira simples. As principais interfaces são divididas em: hardware Zaptel e Não-Zaptel. A diferença entre eles está na capacidade de realizar conferências, pois somente os Zaptel oferecem esse serviço. Segue abaixo alguns modelos de hardwares: T410P (Zaptel) - Placa E1/T1(Padrão de telefonia Europeu/Americano) com 4 portas PCI (Peripheral Component Interconnect) 3.3 volts; E110P (Zaptel)– Placa com E1/T1 com 1 porta; TDM400P (Zaptel)– Placa com 4 portas para telefones analógicos e ADSI (Analog Display Service Interface); T405P (Zaptel)– Placa E1/T1 com 4 portas (PCI 5 volts); ISDN4Linux – É um driver antigo para placas ISDN BRI (Basic Rate Interface), acesso básico; ISDN CAPI – É outra forma de suportar as placas ISDN BRI no Linux. Voicetronix – Possui placas com maior densidade de canais FXS (Foreing Exchange Station) e FXO (Foreing Exchange Office). A figura 4.1 mostra algumas dessas placas: Placas Digium Fonte: www.digium.com Para poder alocar várias chamadas o Asterisk utiliza CODECs (Coder/Decoder), que são responsáveis pela compressão dos dados, reduzindo a utilização da banda passante. Existem vários modelos suportados, como o G.729 que permite codificar a 8 Kbps, a uma compressão de 8/1. O Asterisk é responsável por intermediar a conversação entre CODECs variados, ficando totalmente imperceptível para o usuário final, o tipo de CODEC que está sendo usado em cada terminal. Abaixo podemos ver alguns CODECs suportados: G.711 (64Kbps) G.723.1 (5,3-6 Kbps) G.726 (32 Kbps) G.729 (8 Kbps) GSM (Global System for Mobile Communications) (12-13 Kbps) iLBC (Internet Low Bitrate Codec) (15 Kbps) LPC (Linear Predictive Coding) (2.5 –10 Kbps) Speex (Speech codec) (2.15-44.2 Kbps) Todos os CODECs apresentados são de licença Open Source, com exceção do G.729 que necessita de licença comercial, e somente pode ser usado gratuitamente para uso educacional. O G.711, GSM e G.729 possuem melhor desempenho, os outros têm qualidade inferior ou consomem muita CPU. Para estabelecer conexões entre um telefone e outro, é preciso um protocolo de sinalização, onde este irá determinar o ponto de destino e também questões relacionadas à sinalização de telefonia como campainha, identificador da chamada, desconexão, etc. O Asterisk funciona como um gateway de mídia fazendo a comunicação entre variados protocolos. Os principais protocolos utilizados são: SIP – Pode ser usado na rede local (LAN). É o protocolo padrão de fato para telefonia IP no momento, porém tem problemas no uso do NAT (Network Address Translation), pois, o uso da banda com RTP (Real-time Transport Protocol) é alto; IAX (Inter Asterisk Exchange)v1 e v2 – Protocolo proprietário do Asterisk. Ele é eficiente em banda passante e pode passar facilmente por firewalls com NAT. É mais usado para interligar dois ou mais Asterisks (WAN - Internet). H323 – É um dos protocolos VoIP mais antigos, usado em muitas implementações. É excelente para videoconferência, mas é complexo e pouco adotado em telefonia IP. MGCP (Media Gateway Control Protocol)– Este protocolo foi feito para ser usado em conjunto com H.323, SIP, IAX. Sua grande vantagem é a escalabilidade. Possui gerenciamento centralizado, mas ainda é pouco adotado. Existem vários cenários de uso do Asterisk, um dos mais simples consiste em conectá-lo a uma rede LAN provendo a substituição ou acrescentando novos ramais ao sistema telefônico já existente na empresa. Outra possibilidade é o uso do Asterisk para conexão via Internet ao sistema telefônico fixo e celular via uma operadora VoIP. Para este modelo é necessária a compra de minutos de ligação junto a operadora. A interligação do Asterisk ao sistema telefônico de uma operadora de telecomunicações ou um PABX usando interfaces analógicas ou digitais por ser realizado utilizando-se basicamente dois tipos de placas: a FXO (Foreign eXchange Office) utilizada para interligar linhas analógicas de centrais (PABX ou Pública) e a FXS (Foreign eXchange Station) que pode receber telefones analógicos, secretária eletrônica, máquina de fax e tronos de PABX. Atualmente é comum encontrarmos softswitches, que são PCs que têm a função de comutar os circuitos de telefonia VoIP. No caso do Asterisk, ele faz estas funções de forma integrada, o licenciamento é gratuito e pode ser feito em um ou mais servidores, de acordo com a necessidade. Na figura 4.2 apresenta esse cenário com uso do Asterisk: Uso do Asterisk como softswitch O Asterisk possui uma funcionalidade de gateway de media, podendo converter sinais analógicos (FXS e FXO) ou digitais (ISDN) vindos da central telefônica ou de telefones IP, e transmiti-los pela rede corporativa de dados eliminando os custos de ligações de longa distância entre as filiais. Para isso cada filial deverá ter um Asterisk, onde este se comunica com o outro através do IAX. A figura 4.3 ilustra esse ambiente: Ambiente em empresa de médio porte em uma mesma cidade A interface de gerenciamento permite ao programador se conectar ao Asterisk e emitir comandos, ou ler eventos de PABX usando a interface sockets do TCP/IP. A AGI (Asterisk Gateway Interface) serve para adicionar funcionalidade ao Asterisk com muitas linguagens de programação diferentes como Perl ( Extraction and Report Language), PHP (Hypertext Processor), Pascal ( Linguagem de programação extruturada), Shell (Interpretador de comandos), Java (Linguagem de programação orientada a objeto). Instalação do Asterisk A instalação do Asterisk requer alguns cuidados como: hardware mínimo necessário, sistema operacional adequado, ordem de instalação dos módulos e configuração básica. Ohardware mínimo necessário deverá ser um computador com clock de processador superior a 300 Mhz e 256 Mb de RAM. Apesar dele funcionar em quase todas as distribuições Linux, é mais recomendável instalá-lo em arquiteturas mais robustas como Suse, Mandrake, Slackware, Red Hat, CentOs, etc. A versão mais atual é a 1.2, e pode ser baixada no site: www.asterisk.org. Os módulos a serem copiados são: Zaptel, Libpri, Asterisk, Addons e Sounds. Todos devem ficar na mesma pasta. Antes de instalá-los deverá ser verificado se as seguintes bibliotecas estão instaladas: ncurses, e o -devel referente openssl, e o -devel referente zlib, e o -devel referente bison, e o -devel referente Após a verificação deverá ser feita a instalação e a compilação dos módulos. Primeiramente é necessário acessar a pasta Zaptel e executar os comandos: make clean e make install. Se os serviços de conferência ou música em espera estiverem nos planos, também deverá ser compilado o módulo ztdummy. Em seguida, executam-se os comandos make clean e make install na pasta Libpri e na pasta Asterisk e executam-se os mesmos comandos com a adição do make samples para a instalação de exemplos de configuração. A aplicação destes comandos (make clean e make install) deve ser realizada também nas pastas Asterisk-Addons e Asterisk-sound finalizando o processo de instalação. Depois de instalado, executam-se os comandos: asterisk –vvvc para iniciar e stop now para interromper a aplicação; ambos localizados na pasta /usr/bin/. O console de um processo do Asterisk pode ser acessado a qualquer tempo. Existem muitos parâmetros que podem ser usados para configuração e monitoramento. Os principais são indicados na tabela 4.1. Tabela 4.1 – Parâmetros usados no Asterisk Fonte: o Autor COMANDO FUNÇÃO -h É o help, mostra as opções de parâmetros que podem ser utilizados. -C <configfile> Inicia o Asterisk com o arquivo de configuração diferente do padrão. -f Inicia o Asterisk, mas não coloca um processo em background. -c Habilita o modo de console, iniciando o Asterisk em foreground (na frente). -r Conecta a uma instancia do Asterisk já iniciada. -n Desabilita a cor do console. -i Pede pelos códigos criptográficos de inicialização. -p Roda como prioridade em tempo real. -q Modo silencioso, suprime as mensagens. -v Inclui mensagens detalhadas. -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). Executar o comando de inicialização do Asterisk não é o suficiente para fazê-lo funcionar adequadamente, para que isso ocorra é necessário que sejam programados os arquivos de configuração. Configuração básica do Asterisk Existem vários arquivos que controlam o Asterisk, e todos eles possuem a extensão “.conf” e estão localizados na pasta /etc/asterisk. Esses arquivos são responsáveis pela configuração de hardware, telefones SIP, plano de discagem, envio e recebimento de chamadas. Os arquivos de configuração são mostrados na tabela 4.2: Tabela 4.2 – Arquivos de configuração do Asterisk. Fonte: o autor ARQUIVO FUNÇÃO asterisk.conf Responsável pela configuração dos diretórios para os componentes. Caso algum caminho de instalação seja especificado durante a compilação, será escrita neste arquivo. extensions.conf Responsável pelo plano de controle e fluxo de execução das chamadas. Contém as regras de discagem. Os componentes são conhecidos como “contextos” sip.conf Possui informações referentes as configurações SIP do Asterisk. Ele registra e cadastra os clientes SIP que se registrarão no servidor local, e em servidores remotos. oh323.conf Arquivo de configuração para utilização de H.323 do pacote asterisk-oh323. Ele pode cadastrar como um gatekeeper. Esse módulo não é compatível com o H.323 que originalmente acompanha o Asterisk. zapata.conf Possui configurações referentes a interfaces que utilizem o driver zaptel (como as das placas Digium). Define o protocolo PRI utilizado: EuroISDN, DMS100, National ISDN, Lucent 5ESS, etc. musiconhold.conf É responsável pela configuração das músicas de espera. Podem ser configuradas várias classes de músicas e suporta diferentes tipos de áudio, desde que exista uma aplicação compatível. cdr_mysql.conf Arquivo que contém a configuração a ser aplicada a sistema de CDR para gravar as informações em uma base de dados MySQL IAX.conf Usado para configurar clientes que usam Inter-Asterisk Exchange protocol Geralmente utilizado para interconectar servidores Asterisk logger.conf Responsável pela configuração dos logs do Asterisk. Possui vários níveis de log. Pode ser configurado para enviar logs para a tela ou arquivos agents.conf Usado para as configurações referentes aos agentes usados nas filas configuradas no arquivo queues.conf enum.conf Usado para configurações de ENUM. Pode ser usado para configurar o Asterisk para acessar primeiro um endereço via ENUM para depois via PSTN modules.conf Configura quais módulos devem ou não ser carregados quando o Asterisk é iniciado. Um módulo pode ser carregado também CLI, através dos comando load queues.conf Arquivo responsável pela configuração das filas de entrada RTP.conf Configuração do RTP (Real Time Protocol) para o Asterisk. Ele limita as portas a serem usadas, e é útil para configuração de firewalls voicemail Configura Voice Mail meetme.conf Responsável pela configuração das conferências. Podem haver senhas nas conferências. Todos esses arquivos complementam a configuração do Asterisk incluindo funcionalidades, extensões ou serviços. Para que o Asterisk funcione de forma básica, é necessário que sejam configurado os arquivos sip.conf, extension.conf e zaptel.conf. O arquivo sip.conf, como descrito na tabela 4.2, possui informações referentes as configurações SIP do Asterisk, contendo parâmetros relacionados à configuração dos telefones e operadoras SIP. Todos os clientes devem estar previamente configurados para poderem fazer e receber chamadas. Este arquivo é lido de cima para baixo e sua primeira seção contém as opções gerais, sendo identificada como: [general] e as seguintes são os nomes dos clientes, sempre entre colchetes. A tabela 4.3 mostra as variáveis que implementam a seção [general]: Tabela 4.3 – Variáveis da seção [general] Fonte: o Autor VARIÁVEL DESCRIÇÃO Allow Permite que um determinado codec seja usado. Bindaddr Endereço IP onde o Asterisk irá esperar pelas conexões SIP. O comportamento padrão é esperar em todas as interfaces e endereços secundários. Context Configura o contexto padrão onde todos os clientes serão colocados. Disallow Proíbe um determinado codec. Port Porta que o Asterisk deve esperar por conexões de entrada SIP. O padrão é 5060. Tos Configura o campo TOS (tipo de serviço) usado para SIP e RTP. maxexpirey Tempo Maximo para registro em segundos. defaultexpirey Tempo padrão para registro em segundos. Register Registra o Asterisk com outro host. As definições das entidades padrão SIP vêm após a seção [general], cujas variáveis são exibidas na tabela 4.4: Tabela 4.4 – Variáveis de configuração das entidades SIP. Fonte: o Autor VARIÁVEL DESCRIÇÃO Type Configura a classe de conexão. A variável do tipo peer recebe chamadas, do tipo user faz chamadas e do tipo friend faz os dois ao mesmo tempo. Host Configura o endereço IP ou nome do host. A opção mais comum é dynamic. Essa opção espera que o telefone se registre. username Esta opção configura o nome do usuário que o Asterisk tenta conectar quando uma chamada é recebida. Secret Um segredo compartilhado para autenticar os peers e users. A figura 4.4 mostra um exemplo de configuração do arquivo sip.conf: Figura 4.4 – Exemplode configuração do sip.conf. Fonte: Gonçalves (2005). O arquivo extensions.conf é responsável pelo plano de controle e fluxo de execução das chamadas. Este arquivo é dividido em quatro seções: contexto, extensão, prioridade e aplicações. Os contextos têm um papel importante na organização e segurança do plano de discagem. Eles estão diretamente ligados aos canais. Pode-se definir mais de um contexto quando se deseja atribuir permissões de discagens diferenciadas. Os contextos recebem o seu nome dentro de colchetes, por exemplo: [novo_contexto]. Todas as instruções colocadas após ele são partes do contexto. As variáveis estão localizadas no contexto [Globals], e podem ser usadas por todo o plano de discagem. Dentro de cada contexto são definidas diversas extensões. São elas que determinam o fluxo das chamadas. No Asterisk ela é uma string que dispara um evento. O comando “exten=>” é seguido pelo número da extensão, prioridade e aplicação. Prioridades são passos numerados na execução de cada extensão. Aplicações são partes fundamentais do Asterisk, elas tratam o canal de voz, tocando sons, aceitando dígitos ou desligando uma chamada. As principais aplicações são: Aswer(): responde um canal que está tocando; Dial(): Disca para um ramal ou extensão Playback(): Toca um arquivo de som previamente gravado; Hangup(): Desliga um canal ativo; Goto(): Pula para um contexto específico. O extenions.conf aceita uma série de variáveis que servem de argumento para os comandos. Um exemplo de configuração do extensions.conf pode ser visto na figura 4.5: Figura 4.5 – Exemplo simples do extensions.conf Fonte: Gonçalves (2005). Para implementar o sistema de VoIP através do Asterisk pode ser utilizado o softfone da Lucent chamado X-Lite, cuja interface pode ser visto abaixo. Sua configuração é muito simples e oferece 3 tipos de codec. Provedores de VoIP: TAHO, Sistema IP, Lig VoIP, Onda VoIP, NET Brás, Telefonia, VoIP Nordeste, etc... TAHOT O Asterisk não é o único software para a implementação de Telefonia IP. Veja abaixo outros programas para realizam um pouco do que a plataforma Asterisk fornece. VOVIDA NETWORK VOCAL SIP EXPRESS ROUTER (SER) PBX4LINUX OPENPBX VOICETRONICS Para mais informações sobre a tecnologia do Asterisk acesse os link: www.asteriskbrasil.org www.digium.com www.voffice.com.br www.asterisk.org www.sangoma.com � PBX (Private Branch eXchange) é um centro de distribuição telefônica pertencente a uma empresa que não inclua na sua atividade o fornecimento de serviços telefônicos ao público em geral.
Compartilhar