• Nenhum resultado encontrado

(Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP.

N/A
N/A
Protected

Academic year: 2021

Share "(Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP."

Copied!
6
0
0

Texto

(1)

(Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP.

Autoria de Marcelo Araujo 09/07/2006

Última Atualização 16/07/2006

Observando o mercado, é fácil prever até onde a telefonia IP (VoIP) vai modificar nossas vidas em um breve futuro, estou desenvolvendo uma série de 3 artigos, estou publicando o primeiro, uma introdução sobre o relacionamento do FreeBSD com o projeto Asterisk, e um modelo básico para entender as aplicações que podem ser desenvolvidas como uma introdução ao aprendizado na telefonia IP. Asterisk hoje é uma realidade no mercado de telefonia, e a visão de Telefonia e Telecom esta sendo redirecionada para o mercado de TI.

1 - O Asterisk.

O Asterisk é um software PBX que usa o conceito de software livre, criado inicialmente por Mark Spencer, fundador da empresa Digium .

Com o Asterisk você pode criar diversas aplicações a um baixo custo, com a mesma, se não superioridade de muitos PABX encontrados hoje no mercado de telecomunicações.

Entenda que o Asterisk é muito mais que um PABX padrão. Com o Asterisk em sua rede, você cria novas aplicações em telefonia.

   Algumas como:

- URA (Unidade de Resposta AudÃ-vel);

- Filas de chamadas para Call Centers e outras atividades; - VoiceMail; - Atendimento Programado; - Servidor de Fax; - Conferência; - VideoConferência; - Bilhetagem detalhada;

- Planos de chamadas (DialPlain); - CRM

- e muitos outros...

2 - História dos Projetos Zapata/Asterisk.

Não podemos falar de Asterisk sem antes pincelar um pouco da história do projeto ZAPATA.

O projeto ZAPATA foi conduzido por Jim Dixon, Ele é o responsável pelo desenvolvimento do hardware da Digium. É interessante ressaltar que todo o projeto inicial de placas produzidos pela Digium é aberto e qualquer empresa pode produzir um hardware igual ou com a mesma tecnologia.

Ele desenvolveu inicialmente para o sistema FreeBSD um driver para a placa Mitel89000C "ISDN Express Development Card", e no sistema operacional rodava uma API desenvolvida inicialmente pela AT&T com algumas funcionalidades de correio de voz e auto-atendimento, esta API foi chamada de Audix. O Audix rodava em plataforma UNIX e custava como tudo em telefonia, milhares de dólares por porta e com as funcionalidades bastante limitadas.

Jim então notou que existia uma grande limitação de I/O na placa Mitel89000C e resolveu desenvolver a sua própria placa disponibilizando todos os arquivos do projeto, incluindo fotos e arquivos de plotagem na Internet batizando o

projeto de Zapata.

Como o conceito era revolucionário, Jim inspirado no mexicano (Emiliano Zapata), batizou a primeira placa com o nome de tormenta, o mesmo nome da organização de Emiliano Zapata.

Após a públicação de toda a parafernalha na Internet, a resposta que Jim recebia constantemente era se existia o driver para Linux, ele nunca havia tido contato com o Linux antes, e as dificuldades para entender os conceitos de módulos carregáveis fez com que Jim disponibilizasse um pequeno hack do código portado para Linux.

Em 48 horas Jim recebeu a resposta de um desenvolvedor no Alabama (Mark Spencer), que se ofereceu para dar

(2)

continuidade no desenvolvimento do driver para Linux.

Mark Spencer inicialmente para suprir as dificuldades financeiras na aquisição de um PABX para a sua empresa de Help Desk, desenvolveu o Asterisk para controlar as ligações que seu Help Desk recebia. O conceito Asterisk até então era funcional mas não tinha um hardware útil e prático. O casamento do sistema de telefonia criado por Jim Dixon e o desenho da biblioteca de hardware/driver e interface, permitiu à Mark desenvolver novas funcionalidade e criar um sistema que poderia falar com telefones reais, linhas analógicas e digitais.

A história completa você pode ver em: AsteriskDocs 3 - Instalando o Asterisk.

Iremos utilizar a Coleção de Ports para instalar o Asterisk.

O ports do Asterisk atualmente é mantido por Maxim Sobolev <sobomax (A) portaone (DOT) com > e vários outros desenvolvedores ao redor do mundo. O suporte à Asterisk no FreeBSD é pleno, não há qualquer funcionalidade que não esteja totalmente funcional. As pequenas exceções são módulos de terceiros, não oficialmente suportados pelo Asterisk, mas ainda assim estes módulos podem ser usados no FreeBSD com pequenas adaptações no código.

   nagazaki# cd /usr/ports/net/asterisk    nagazaki# make install clean

Opcionalmente você pode evitar que o Ports compile o Asterisk com suporte a H.323. Sem H.323 a compilação será bem mais rápida. Esse protocolo é pouco funcional e vem sendo amplamento substituÃ-do por SIP/RTP, sendo praticamente um protocolo descontinuado no que tange à VoIP (mas ainda usado em VÃ-deo sobre IP). Se não quiser compilar com H.323, use a opção WITHOUT_H323=yes para instalar o asterisk:

   nagazaki# cd /usr/ports/net/asterisk

   nagazaki# make WITHOUT_H323=yes install clean

 4 - Criando um ambiente de testes.

O ambiente que criei para testes, consiste em um ATA (Adaptador para telefone analogico), com duas portas FXS. Entendendo os modelos de portas FXO e FXS.

           FXS = Foreign EXchange Subscriber

                   É a interface que fornece a linha analógica, em outras palavras, é o "plug na parede".            FXO = Foreign eXchange Office

                   É a interface do telefone. Entendendo melhor o funcionamento das portas FXO e FXS.

           Ao realizar uma chamada: (FXO)

                   Tire o telefone do gancho(dispositivo FXO). A porta FXS detecta que o telefone está fora do gancho.

                   Digite um número de telefone, que é transmitido á porta FXS em Tom Duplo de Multifrequência (DTMF).            Ligação Interna: (FXS)

                   A porta FXS recebe a ligação, e então envia um impulso tônico (som) ao dispositivo FXO anexado.                    O telefone toca.

                   Assim que alguém atende, pode responder a chamada.

Ainda não tenho disponivel em meu ambiente de testes uma porta FXO configurada no PBX, mas isso é questão de tempo.

Neste ambiente de testes, tenho a seguinte configuração:

       [ MODEM ADSL ] --- [  Switch 8 portas  ]

                                                |              |

(3)

                                             |              |                                               |              |                                                [ ASTERISK ] [ATA]

                                                         |                                                      [Telefone]

Fiz alguns testes com um amigo que trabalha em um provedor de internet aqui da região, este mesmo tem um equipamento ATA LinkSys, irei abordar no final deste artigo, alguns problemas que tive e como fiz para resolver o mesmo.

5 - Pós Instalação, os principais arquivos de configuração.

Após instalar o Asterisk, podemos navegar e olhar seus arquivos de configuração.    nagazaki# cd /usr/local/etc/asterisk

Em um primeiro momento iremos observar dois arquivos principais para configurar um plano de de testes:

O arquivo sip.conf é responsável por autenticar os usuários que utilizam este protocolo (SIP = Session Initialized Protocol). Protocolo SIP é um dos protocolos mais usados nos tempos de hoje na telefonia IP.

O arquivo extensions.conf é responsável pela configuração dos planos de numeração. Iremos nos referenciar aos planos de numeração chamando-os de CONTEXTO.

6 - Criando 2 usuários e autenticando usando SIP.

Nesta abordagem iremos adicionar algumas configurações no arquivo sip.conf, percebemos que o arquivo já vem com vários sets pré-configurados.

6.1 Adicionando os usuarios:

Edite o arquivo sip.conf e adicione no final do mesmo as seguintes configurações.            ; Usuário INLOCO no asterisk

           [araujo]            type=friend            username=araujo            secret=<SENHA>            host=dynamic            context=faculdade            qualify=yes            insecure=very            dtmfmode=rfc2833            allow=all            canreinvite=no

           ; Usuário em outra localidade WAN            [marcelo]            type=friend            username=marcelo            secret=<SENHA>            host=dynamic            context=faculdade            qualify=yes            insecure=very            dtmfmode=rfc2833            allow=all            nat=route            canreinvite=no

Irei fazer uma abordagem básica sobre cada opção usada no arquivo sip.conf. Em "type", podemos usar duas opções:

(4)

                   peer = Usuário só faz chamadas.

                   user = Usuários autenticados podem apenas fazer chamadas.                    friend = Usuários podem fazer e receber chamadas.

Em username e secret, definimos o usuário e senha para autenticação. Em host, podemos definir estaticamente o host ou então atribuir a flag dynamic.

Em Context, apontamos para qual CONTEXTO o usuário vai estar inserido no extensions.conf . Em Qualify, podemos manter um padrão de qualidade para os dispositivos interconectados, exemplo:           qualify=10000

Iremos considerar o dispositivo inassecÃ-vel se o mesmo não responder dentro de 1s. Em insecure, iremos abordar 2 sets:

      invite = Não requer autenticação para efetuar ligações.

      very = Não requer autenticação para efetuar ligações e não iremos checar a porta de destino para a transmissão de dados.

Em allow, definimos o tipo de codec suportado para o dispositivo conectado, neste modelo, qualquer codec suportado pelo asterisk pode ser configurado no dispositivo ATA ou SoftPhone.

Os codecs são usados para converter um sinal analógico de voz em uma versão codificada digitalmente. Codecs variam na qualidade do som, banda passante necessária e requisitos de processamento e memória.

Lista de alguns Codecs suportados pelo asterisk: Â Â Â Â Â Â Â Â Â Â GIPS: 13.3Kbps

      GSM: 13Kbps, 20ms de "tamanho do frame"

      G711: 64Kbps conhecido também como alaw/ulaw       G722: 48/56/64Kbps

      G723: 5.3/6.3Kbps, 30ms de "tamanho do frame"       G728: 16Kbps

Em nat existem 4 opções que devem ser abordadas, não iremos entrar nas particularidades de cada modelo de NAT, mas os maiores problemas da telefonia IP estão no NAT.

                           yes = Ignora qualquer informação no cabeçalho SIP e assume os mapeamentos da tabela NAT.                            no = Usa o NAT de acordo com o RFC3581.

                           never = Não utiliza os recursos do NAT para a resposta simétrica de roteamento (RFC3581).                            route = Assume o NAT e não envia a resposta para o ip/porta padrão do cabeçalho SIP. Em canreinvite setamos se o modo de conexão vai ser entre ATA-ATA ou ATA-ASTERISK-ATA.

7 - Criando o primeiro plano de discagem.

Iremos editar o arquivo extensions.conf e criaremos o CONTEXTO "faculdade". Â Â Â Â Â [faculdade]

     exten => 9010,1,Dial(SIP/araujo)      exten => 9020,1,Dial(SIP/marcelo)

Em nosso primeiro contexto estamos apenas atribuindo os ramais e redirecionando as ligações para os usuários cadastrados no sip.conf.

Agora podemos startar o asterisk e efetuar nossa primeira ligação.            nagazaki# asterisk -vvvvvvvvvc

8 - Exemplo de atendimento automático.

(5)

No arquivo extensions.conf inseri um novo CONTEXTO "atendimento" e inserir um novo ramal no CONTEXTO "faculdade". Â Â Â Â [faculdade] Â Â Â Â exten => 9030,1,Goto(atendimento,s,1) Â Â Â Â [atendimento] Â Â Â Â exten => s,1,playback(thanks) Â Â Â Â exten => s,2,Hangup()

Após reiniciar o asterisk, com esta configuração obtemos o seguinte ambiente:

Quando ligamos para o número 9030 no CONTEXTO faculdade, iremos ser redirecionados para o CONTEXTO [atendimento], onde este, tocará o arquivo "THANKS" e logo após irá se desconectar-se.

9 - Criando uma URA (Unidade de Resposta AudÃ-vel).

Neste modelo, primeiro iremos gravar os prompts para a URA e logo após ver como tudo ficou. O CONTEXTO [default] já vem por padrão configurado no asterisk.

           ;Gravando os PROMPTS para a URA     [default]

    ; Bem Vindo, para falar com suporte técnico pressione 1, outras opções pressione 2.     exten => 1000,1,Record(bemvindo:gsm)     exten => 1000,2,Hangup()     ; Suporte técnico     exten => 1001,1,Record(suporte:gsm)     exten => 1001,2,Hangup()     ; Atendimento ao cliente.     exten => 1002,1,Record(atendimento:gsm)     exten => 1002,2,Hangup()     exten => 0800,1,Goto(ura,s,1)           [ura]     exten => s,1,Ringing     exten => s,2,Background(bemvindo)     exten => s,3,Wait(2)     exten => s,4,Hangup()     exten => 1,1,Playback(suporte)     exten => 1,2,Hangup()     exten => 2,1,Playback(atendimento)     exten => 2,2,Hangup()         Â

Agora existem 3 novas opções inseridas em nossos CONTEXTOS.

           Record = Grava em um arquivo de aúdio, podemos escolher o tipo de gravação, gsm, mp3 e etc...            Wait = Aguarda alguns segundos antes de passar para a próxima opção do CONTEXTO.

           Background = Toca o arquivo de aúdio aguardando algum digito de resposta do usuário.   Â

Discando para o número 0800, o asterisk ira nos redirecionar para o CONTEXTO [ura] na primeira regra s,1, iremos ouvir a chamada "bemvindo" e durante a chamada já poderemos escolher a opção para o próximo menu. 10 - Problemas e soluções.

O primeiro problema que encontrei configurando o sistema de URA, quando digitava alguma opção para o menu da URA, o asterisk não aceitava a sinalização e não passava para a outra opção escolhida.

(6)

Possuo um ATA da marca XAVi, e para arrumar este pequeno problema, mudei a opção do DTMF Type de "SIP Info" para "Out-of-Band(RFC2833)".

O segundo problema foi com um cliente externo conectado no asterisk, não conseguiamos nos comunicar, sem aúdio. A solução foi aplicar na configuração SIP deste usuário externo a opção canreinvite=no, de forma que toda comunicação passase pelo Asterisk. Do contrário ele tentava estabelecer a comunicação com a outra ponta diretamente.

Em uma conversação com um cliente externo usando o Codec G711a, conseguimos claramente falar e escutar um ao outro, monitorando o uso do meu Link Internet, usando o software rate, a maior largura de banda usada no momento foi de 26Kbps.

   => Currently 23.02 kBps/100.36 pps, Average: 26.96 kBps/112.12 pps 11 - Conclusão.

A telefonia IP esta chegando aos poucos para os usuários finais, com a convergência de serviços em diversas operadoras no Brasil, em breve teremos uma modificação total dos planos de telefonia e links Internet.

As grandes empresas estão adotando a tecnologia VOIP para baratear custos em diversos campos de atuação, e já esta provado que o VOIP não é apenas mais um produto no mercado, e sim um recurso que deve e vai ser padrão na vida de todos nós.Â

No Brasil, algumas empresas como a DigiVoice já estão comercializando hardware próprio para telefonia IP baseada em Asterisk, sem a necessidade de importar as placas.

Importante: este é o primeiro artigo de uma série; os outros artigos estão disponÃ-veis em: - Artigo 2 Â

Marcelo Araujo

araujo at fug dot com dot br.Â

Referências

Documentos relacionados

Encontrámos correlações estatisticamente significativas entre as dimensões da Escala de Ânimo e a dimensão Saúde Mental do EQ-5D (entre r=-0,35 e r=-0,42, com um r=-0,52 para

O presente estudo visa melhor compreender a produção científica nacional sobre o empreendedorismo internacional mediante o desenvolvimento de uma pesquisa bibliométrica

Ao diagnosticar a hipertensão (pressão alta), seu médico pode recomendar mudanças em seu estilo de vida e também pode lhe receitar medicamentos para controlar a pressão

O número de coordenação para a estrutura cristalina CCC é 8; cada átomo central possui como vizinhos mais próximos oito átomos localizados nos vértices.. Uma vez que

A controller is projected in the structure of the model of predictive control (MPC) and it is used to control equivalent representation of the process in the space of

For instance, (i) reducing the timeslot size increases the sensing frequency, and consequently, it minimizes the possibility of data losses during the period the sensor is in

Gobineau também foi o primeiro a elaborar teorias sobre o racismo científico que, segundo Bulcão Neto (2009), baseava-se em uma separação de raças humanas, onde

A reciclagem deste tipo de material apresenta vantagens econômicas, sociais e ambientais: economia para as prefeituras, pela diminuição do volume de resíduos a ser coletado