Asterisk – Construindo um PBX IP com Software Livre (Parte 2)

Publicado: dezembro 09, 2009 em Asterisk
Tags:, , , , ,

Introdução

Na parte 1 deste tutorial foi realizada a instalação do Asterisk e suas dependências, agora irei configurá-lo para efetuar ligações entre ramais utlizando os protocolos SIP e IAX.

Pré-requisitos

Ter executado com sucesso a parte 1 deste tutorial.
Uma segunda máquina para que possam ser executados testes.

Informações gerais

Será utilizada a mesma configuração da parte 1 do tutorial.

Mãos à obra!

1. Criar ramais SIP

O arquivo sip.conf existente está muito bem comentado, é uma boa prática mantê-lo inalterado para posteriormente ser utilizado como fonte de consulta para eventuais dúvidas.

Renomear sip.conf

# mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.orig

Criar e editar um novo arquivo sip.conf

# vi /etc/asterisk/sip.conf

Conteúdo do arquivo:

[general]
bindport = 5060
bindaddr = 0.0.0.0
disallow = all
allow = alaw,ulaw,gsm
language = pt_BR

[1001]
type = friend
context = tutorial
secret = 12345
host = dynamic

[1002]
type = friend
context = tutorial
secret = 54321
host = dynamic

[general] → Esta seção define os valores default (padrão) para as demais seções e/ou protocolo.
bindport → Porta utilizada pelo protocolo. O SIP utiliza as portas 5060 TCP e UDP, e 5061 TCP para TSL (Transporte Layer Security).
bindaddr → Endereço IP onde o Asterisk aceitará conexões. Se configurado como 0.0.0.0, aceitará conexões em qualquer IP.
disallow → Desabilita codecs, a opção all desabilita todos codecs.
allow → Habilita o (s) codec (s) especificado (s).
language → Configuração padrão de idioma para users/peers. É possível configurar individualmente em cada peer.

[XXXX] → Identificação do ramal.
type → Define se o ramal pode receber chamadas (peer), efetuar chamadas (user), ou receber e efetuar chamadas (friend).
context → Define o contexto ao qual o ramal pertence. Este contexto será criado posteriormente no plano de discagem.
secret → Senha para registrar o ramal no servidor.
host → Informa onde o ramal está registrado. Aceita endereço dinâmico, quando configurado como dynamic.

2. Criar ramais IAX

Renomear iax.conf

# mv /etc/asterisk/iax.conf /etc/asterisk/iax.conf.orig

Criar e editar um novo arquivo iax.conf

# vi /etc/asterisk/iax.conf

Conteúdo do arquivo:

[general]
bindport = 4569
bindaddr = 0.0.0.0
disallow = all
allow = alaw,ulaw,gsm
language = pt_BR

[1003]
type = friend
context = tutorial
secret = 12345
host = dynamic
requirecalltoken = no

[1004]
type = friend
context = tutorial
secret = 54321
host = dynamic
requirecalltoken = no

[general] → Esta seção define os valores default (padrão) para as demais seções e/ou protocolo.
bindport → Porta utilizada pelo protocolo. O IAX utiliza a porta 4569 UDP.
bindaddr → Endereço IP onde o Asterisk aceitará conexões. Se configurado como 0.0.0.0, aceitará conexões em qualquer IP.
disallow → Desabilita codecs, a opção all desabilita todos codecs.
allow → Habilita o (s) codec (s) especificado (s).
language → Configuração padrão de Idioma para users/peers. É possível configurar individualmente em cada peer.

[XXXX] → Identificação do ramal.
type → Define se o ramal pode receber chamadas (peer), efetuar chamadas (user), ou receber e efetuar chamadas (friend).
context → Define o contexto ao qual o ramal pertence. Este contexto será criado posteriormente no plano de discagem.
secret → Senha para registrar o ramal no servidor.
host → Informa onde o ramal está registrado. Aceita endereço dinâmico, quando configurado como dynamic.
requirecalltoken = no → Informa que não há necesside de validar a chamada por token.

3. Criar o plano de discagem (Dial Plan)

Renomear extensions.conf

# mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.orig

Criar e editar um novo arquivo extensions.conf

# vi /etc/asterisk/extensions.conf

Conteúdo do arquivo:

[tutorial]
exten => 1001,1,Dial(SIP/1001)
exten => 1002,1,Dial(SIP/1002)
exten => 1003,1,Dial(SIP/1003)
exten => 1004,1,Dial(SIP/1004)

[tutorial] → Contexto contendo regras de discagem.

Por ser um assunto de maior abrangência, o plano de discagem terá um tutorial exclusivo.

4. Ativar as configurações

Acessar a CLI (Command Line Interface) do Asterisk

# rasterisk

ou

# asterisk -r

Resultado:

Asterisk 1.4.26.2, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer 
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.4.26.2 currently running on debian (pid = 2800)
debian*CLI>

Recarregar as configurações SIP

sip reload

Mostrar ramais (peers) criados no sip.conf

sip show peers

Resultado:

Name/username              Host            Dyn Nat ACL Port     Status
1002                       (Unspecified)    D          0        Unmonitored
1001                       (Unspecified)    D          0        Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 2 offline]

Recarregar as configurações IAX

iax2 reload

Mostrar ramais (peers) criados no iax.conf

iax2 show peers

Resultado:

Name/Username    Host                 Mask             Port          Status
1004             (Unspecified)   (D)  255.255.255.255  0             Unmonitored
1003             (Unspecified)   (D)  255.255.255.255  0             Unmonitored
2 iax2 peers [0 online, 0 offline, 2 unmonitored]

Recarregar as configurações do plano de discagem

dialplan reload

Resultado:

Dialplan reloaded.

Verificar se o plano de discagem foi carregado

dialplan show tutorial

Resultado:

[ Context 'tutorial' created by 'pbx_config' ]
  '1001' =>         1. Dial(SIP/1001)                             [pbx_config]
  '1002' =>         1. Dial(SIP/1002)                             [pbx_config]
  '1003' =>         1. Dial(SIP/1003)                             [pbx_config]
  '1004' =>         1. Dial(SIP/1004)                             [pbx_config]

-= 4 extensions (4 priorities) in 1 context. =-

Sair da CLI

exit

5. Configurar do softphone

Softphone é um software utilizado para efetuar chamadas telefônicas, a partir de um computador.
Para efetuar os testes irei utilizar o sofphone Zoiper que possui verssões para Linux, Mac e Windows.
O Zoiper tem suporte aos protocolos SIP e IAX, e permite registrar duas contas simultaneamente. Desta forma, com apenas um computador consigo testar se os ramais estão efetuando chamadas entre si.
A instalação do Zoiper é bastante simples, por este motivo não será abordada neste tutorial.
Depois de instalado, basta executá-lo.

Se quiser que o Zoiper inicie ao fazer o login, clique em Yes.

Clique no ícone da ferramenta (acima do número 6) para acessar o menu de configurações.

Clique em Add new SIP account, e informe o nome da conta em Name.

Em SIP account options preencha conforme a figura abaixo e clique em Ok.

Clique em Add new IAX account, e informe o nome da conta em Name.

Em IAX account options preencha conforme a figura abaixo e clique em Ok.

Com as contas criadas, o próximo passo é registrá-las para efetuar chamadas. Na tela principal do Zoiper, selecione a conta em Account e clique em Register, este procedimento deve ser feito para as duas contas.
Agora basta discar para o outro ramal. No exemplo abaixo, a chamada tem como origem o ramal 1003, e destino o ramal 1001.

Traduzindo a imagem abaixo:
Incoming call é ramal que está efetuando a chamada para 1001. É possível aceitar (Accept), rejeitar (Regect) ou ignorar (Ignore).

O ideal é executar este teste com mais de um computador e com uso de headset. Porém, apenas para efeito de teste, já é possível comprovar que a comunicação entre ramais está funcionando.

6. Verificar ramais registrados

Os comandos abaixo são executados na CLI do Asterisk.
Verificar ramais SIP.

sip  show peers

Resultado:

Name/username              Host            Dyn Nat ACL Port     Status               
1002                       (Unspecified)    D          0        Unmonitored           
1001/1001                  189.110.52.67    D          59927    Unmonitored           
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 1 offline]

Verificar ramais IAX.

iax2 show peers

Resultado:

Name/Username    Host                 Mask             Port          Status    
1004             (Unspecified)   (D)  255.255.255.255  0             Unmonitored
1003             192.168.0.134   (D)  255.255.255.255  4569          Unmonitored
2 iax2 peers [0 online, 0 offline, 2 unmonitored]

Os resultados acima estão informando em que host e portas os ramais estão registrados.

No próximo tutorial irei demonstrar como criar uma Unidade de Resposta Audível (URA).

Até o próximo!

:wq!
Andrey Smith

comentários
  1. very nice, thank’s🙂

    Curtir

  2. Allthe disse:

    Boas,

    Necessito de criar uma extensão em asterisk, que depois de marcar xxx, o asterisk devolva uma mensagem y.

    Thanks

    Curtir

  3. Jean Sobral disse:

    Show Andrey,

    Obrigado pelo belo tutorial, Parabéns!!!
    Ancioso pelo tutorial…abraço!!!

    Curtir

  4. Sou novato no asterisk, mas com este tutorial ficou muito claro… consegui fazer funcionar de primeira…
    Muito obrigado e parabéns

    Curtir

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s