Implementação de Asterisk com FreePBX


Definitivamente o Asterisk tem figurado como principal servidor PBX IP do mercado de telefonia mundial. Mais de 90% das aplicações e telefones SIP dão suporte ao uso dele. Na prática, ele funciona como um gateway de telefones analógicos (para tal é preciso o uso de uma placa de telefonia) e SIP Phones, direcionando as ligações para “tunks” analógicos ou digitais.

Utilizar telefonia por IP traz diversas vantagens para o consumidor final, tais como:

  • Geração de relatórios de ligações;
  • Criação de políticas personalizadas de discagem, como por exemplo força o uso de uma determinada operadora para discagens para DDD e outra operadora em discagens para DDI (os chamados dialplans);
  • Redundância de troncos de telefonia analógicos ou digitais;
  • Criação de URAs (Unidade de Resposta Audível) personalizadas, etc.

Este laboratório tem como objetivo configurar de forma básica um servidor PBX IP para SIP Phones.
Descrição do laboratório:

  • Servidor Linux com a distro FreePBX 2.7.0.0;
  • Asterisk 1.6;
  • Uso de um link VONO (da GVT) como tunk;
  • Uso de Software Ekiga Phone como cliente SIP Phone.
INSTALAÇÃO DO FreePBX:
Primeiramente, o ideal é baixa a versão mais estável diretamente do link http://www.freepbx.org/download-freepbx. Feito isso, mãos à obra:
Escolha para instalação, a versão 1.6 do Asterisk:


Particionar o disco:

 
Prosseguir com todo o processo normal de instalação Linux.
Após a instalação,  fazer o login no terminal do servidor e verificar a existência dos bancos asterisk e asteriskcdrdb, que são respectivamente o banco de dados das configurações do Asterisk e o banco de registros de chamadas.

Agora, de uma estação remota, acesse o endereço do servidor via Browser:

Após escolher o modo de administração, fazer login com o usuário admin e senha admin.
Agora, vamos à criação do “trunk”, que é propriamente dito o link que comunica o servidor à rede de telefonia externa. Vamos criar um tronco SIP, que é o tipo de tronco para contas de aplicações SIP de clientes.
É importante obedecer alguns padrões como fornecer os dados de conexão com o seu link externo. Os cados utilizados aqui serão:
Usuário: tux
Senha: 123456@abcd
Host: vono.net.br
Domain: vono.net.br
*Obs: usuário e senha fictícios, é claro!
É importante também inserir o string da conexão, que é a linha de registro deste tronco do seu Asterisk com o host externo. Essa string deve seguir o padrão LOGIN:SENHA@HOST:PORTA/LOGIN .  Essa configuração deve ser inserida no campo Register String da página de configuração do tronco SIP.
No nosso caso, fica assim esta linha:  tux:123456@[email protected]/tux.
A configuração então fica assim:

 
As Dial Rules são as regras de discagem que serão processadas pelo tronco quando ele receber o número da rota. Alguns meta caracteres importantes para a construção dessas regras são:
X  – números de 0 a 9;
Z  – números de 1 a 9;
N  – números de 2 a 9;
.  – qualquer posição;
| – ignorar número que o usuário discou;
+ – adicionar um número que o usuário não discou mas que o tronco exige;
[num1-num20] – intervalo entre num1 e num20.
[num1num20] – num1 e num20.
Exemplo:
Na regra 0+ZZXXXXXXXXXX, o tronco diz que qualquer número que chegar até ele começando com números de 1 a 9 (prefixos das cidades) e vier acompanhado de mais 8 números de 0 a 9, sairá para o link externo com 0 (zero) na frente. No nosso caso é extremamente importante, pois o VONO usa a regra um zero antes de qualquer número digitado como regra de discagem obrigatória.
 
Após criado o tronco, vamos às rotas de saída (Outbound Routes):
As rotas de saída dizem exatamente para qual tronco cada tipo de ligação vai. Essas rotas também contam com regras de discagem que devem contemplar todos os formatos possíveis válidos para o usuário digitar.
Exemplo:
Na regra 0|ZZ[2-5]XXXXXXX  a rota diz que o zero que o usuário digitar antes do prefixo da cidade será removido antes de ser entregue ao tronco. Nesta mesma regra, esta rota entende apenas números que iniciem com 0 (mesmo que seja removido), que tenha 2 números de 1 a 9 (prefixos) após e mais o grupo de 8 números (grupo este que deverá iniciar com número de 2 a 5 para serem processados por esta rota).
É importante também verificar se o tronco foi registrado com sucesso no servidor. Para tal, execute o comando ‘asterisk -rvv’ no servidor e execute a linha de comando ‘sip show registry’ para exibir todos os tunks SIP registrados.
Abaixo vou demonstrar um exemplo real de registro SIP:

 
Criação das rotas

A rota acima é apenas de ligações para DDD fixo e está configurada para sair preferencialmente pelo tronco VONO e, caso este esteja inoperante, utilizar o tronco analógico, que pode ser um link analógico da operadora conectado à uma placa de E1 ou mesmo a uma placa analógica de telefonia.
Rota para celulares locais:

 
Rota para ligações fixas interurbanas:

 
Rota de ligações para celulares interurbanos:

 
Nunca podemos esquecer que, além de salvar as configurações, temos que aplicá-las, o que vai implicar em recarregar o serviço do Asterisk.

 
Hora de criar as contas SIP:

Vamos criar um usuário com o login 1980:


O campo ‘secret’ se refere à senha do usuário.
Outro detalhe é o campo ‘context’. Ele diz exatamente para quais rotas o usuário pode ligar. Por hora, vamos utilizar o padrão do FreePBX, que é o ‘from-internal’, que permite o uso de qualquer rota.
É importante também ativar a tecnologia GSM e o codec G722:

 
Agora é só testar ligando de um aplicativo SIP, como o Ekiga Phone por exemplo. Para tal, a configuração no cliente deve ficar da seguinte forma:
Usuário: 1980
Senha: 123456@abcd
Servidor: <IP_do_servidor_FreePBX>
Domínio: <IP_do_servidor_FreePBX>
 
Antes de fazer a primeira chamada, faça login via ssh no servidor e acesse o console do Asterisk com o seguinte comando: ‘asterisk -rvv’, em seguida. faça alguma ligação e verá o ‘verbose’ da ligação, como no modelo abaixo:

Eu disquei do meu aplicativo SIP cliente o número 88249623 mas o Asterisk converteu para 02188249623, pois, segundo  uma das regras de discagem do tronco VONO, toda vez que receber um número qualquer com 8 dígitos apenas, ele adiciona 021 a este.
brunoodon.com.br
Divirtam-se!!
Boa sorte a todos!!!
 
 

Share

    Comments

    1. Olá Bruno , Grande Post!
      Já conheço um pouco sobre o FreePBX , mais a forma que você explicou sobre a instalação e configuração ficou muito legal. Parabéns.
      Grande Abraço,
      Emerson S. Gaudencio

    2. Logo de estréia um ótimo trabalho, parabéns! Como faço a comunicação do meu FreePBX com troncos analógicos ou digital (Embratel ou Telemar por exemplo)? Preciso de uma placa especial?

      • Bom dia Bruno!
        Para trabalhar com troncos analógicos é preciso a instalação de placas de telefonia. Nos próximos posts eu vou tratar da continuidade da implementação do FreePBX e também vou falar sobre estas placas (modelos, padrões, drivers, fabricantes e preços). Vou falar também sobre criação de contextos para perfis de discagem e configuração de ramais analógicos.
        Obrigado!

        • No meu caso a empresa que trabalho comprou um link dedicado da Oi. Juntamente com ele veio um digitronco, porem este digitronco vem com uma saida rj45.
          Seria isso mesmo, existem uma placa de telefônia que aceite este tipo de entrada?
          Outra duvida que tenho, é que hardware você indica para um servidor pbx? Pelo que ouvi falar a maquina não precisa ser parruda, até mesmo um celeron com 512mb de memória poderia funcionar com o Debian + Asterisk, mais qual é a sua recomendação de “hardware razoável”????

          • Seguinte Tárcio, neste caso, você tem que implementar o tronco da OI com uma placa de telefonia de E1, que tem entrada RJ-45. Só que neste caso, o tipo de tronco a ser criado no Asterisk é ZAP e não SIP, pois trata-se de um tronco de um dispositivo de driver Zaptel.
            Neste caso, você pode implementar os 2 tipos de tronco: o ZAP (pelo Digitronco) e o SIP (pelo link de Internet).
            No caso da requisição do Hardware, deve-se analisar o volume de acessos ao PABX, mas mesmo assim, acredito que, em um caso de 30 ramais ligando o dia todo (sem URA nenhuma), um Pentium D com 2GB de RAM atende perfeitamente.

            • Obrigado pelas dicas. No meu caso temos esse digitronco porem está parado no momento por falta de infra e por falta de conhecimento tanto meu quanto dos gestores de sua utilização.
              Pretendo no fim do mês tentar implanta-lo nem que seja em modo de testes aqui.
              Parabéns pelo artigo.

    3. Olá Bruno,
      Bem legal esse post, parabéns.
      Eu implantei o Elastix para fazer o trunk do Lync e não encontrei nenhum material explicando como faço isso com PSTN, tive que fazer na raça, inclusive alterar a Macro de discagem pois o FreePBX ou Elastix tem uma incompatibilidade de sinalização SIP com o Lync, estou pensando em fazer um post sobre isso, o que acha?

      • Tudo bem Diego?!
        Primeiramente, obrigado!
        Acho que um post sobre este tipo de situação iria enriquecer muito o estudo sobre diversas plataformas de software que trabalham com telefonia. Eu ainda vou postar alguns artigos sobre FreePBX e acho que artigos sobre Linc e Elastix iriam ser muito bons!!
        Abraço!!

    4. […] continuidade ao post anterior, vamos falar sobre a criação de contextos personalizados no FreePBX para ramais analógicos ou […]

    5. Avatar for CooperaTI Douglas Portugal : 25 de abril de 2012 at 12:13 pm

      Bruno, parabéns excelente post.
      Mexo um muito pouco com FreePBX e Elastix.
      Tenho uma dúvida que não tem muito haver com o post, se possível me responda!
      O meu ambiente é o seguinte:
      Eu tenho um placa Digivoice TDM410P com 3 FXS e 1 FXO. Está configurado e funcionando com dois troncos, um tronco Zap OI com apenas uma linha, e um tronco SIP Vono. Tem um ramal ligado na numa FXS e os outros ramais são SIP.
      Gostaria de saber como faço para saber de que tronco vem a ligação? Tem como ver no ramal(ata ou softfone)? É necessário fazer algum tipo de configuração?
      Desde já agradeço,
      Abraço

    6. Boa tarde Diogo!!
      Em modo genérico (ou seja: em qualquer distro), você obtém essa informação entrando no console do Asterisk com o comando #asterisk -rvv . A partir daí, todas as ligações vão ser visualizadas em tempo real. Caso não consiga visualizar de primeira, digite ‘logger mute’ no console do Asterisk porque, neste caso, o log está desativado.
      Obrigado!!

    7. Apenas complementando: no log das ligações aparece de qual tronco veio e para qual ramal analógico ou conta SIP está indo.

    8. Olá Bruno.
      Muito bom o post, parabéns.
      Estou começando agora com Asterisk e estamos precisando implementar o recebimento e envio de Fax, tem alguma coisa a sobre o assunto. Utilizamos tronco analógico e SPA400 da Linksys.
      Abraço.

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.