Mudanças entre as edições de "PJI4-2018-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 121: Linha 121:
 
O Asterisk é um software complexo e com muitos recursos. Porém sua função mais elementar, que é intermediar chamadas, pode ser entendida com base em dois elementos importantes desse tipo de PBX. Esses elementos são o '''plano de discagem''' e '''configurações de canais'''. Na terminologia do Asterisk, um canal pode ser entendido como um ramal ou tronco. Para ter o Asterisk funcionando como uma central simplificada, é suficiente configurar esses dois elementos.
 
O Asterisk é um software complexo e com muitos recursos. Porém sua função mais elementar, que é intermediar chamadas, pode ser entendida com base em dois elementos importantes desse tipo de PBX. Esses elementos são o '''plano de discagem''' e '''configurações de canais'''. Na terminologia do Asterisk, um canal pode ser entendido como um ramal ou tronco. Para ter o Asterisk funcionando como uma central simplificada, é suficiente configurar esses dois elementos.
  
=== Plano de discagem ===
 
  
O plano de discagem define como cada chamada deve ser processada. As instruções de processamento residem no arquivo de configuração ''/etc/asterisk/extensions.conf''. O fluxo de processamento de chamadas pode ser visto resumidamente abaixo:
 
 
[[imagem:Asterisk-fluxo.png|400px]]
 
 
 
Um exemplo de plano de discagem simples pode ser visto abaixo:
 
 
<syntaxhighlight lang=text>
 
[default]; o nome deste contexto ... default é o contexto predefinido do Asterisk
 
 
# Chamadas para o número 101 são feitas via SIP para o canal "maria"
 
exten=>101,1,Dial(SIP/maria)
 
same=>n,Hangup()
 
 
# Chamadas para "teste" serão atendidas com um som de beep, seguido
 
# da reprodução do arquivo de som "hello-world", em seguida outro beep e
 
# enfim se encerra a chamada.
 
exten=>teste,1,Playback(beep)
 
same=>n,Wait(1)
 
same=>n,Playback(hello-world)
 
same=>n,Wait(1)
 
same=>n,Playback(beep)
 
same=>n,Hangup
 
</syntaxhighlight>
 
 
A estrutura do plano de discagem é composta por ''extensões'' (um termo específico do Asterisk). Cada extensão identifica um número (ou usuário) que  pode ser chamado, e como essa chamada deve ser processada. A sintaxe pode ser vista abaixo:
 
 
<syntaxhighlight lang=text>
 
exten=>identificador,prioridade,aplicação
 
</syntaxhighlight>
 
 
* '''identificador''': o número ou usuário chamado
 
* '''prioridade''': a prioridade da extensão. Isso determina a ordem de execução das extensões que tratam do mesmo identificador.
 
* '''aplicação''': uma ação a ser realizada quando a extensão for processada. Por exemplo, a aplicação ''Dial'' determina que deve ser encaminhada a outro canal.
 
 
Como o processamento de uma chamada usualmente envolve uma sequência de extensões, existe uma sintaxe opcional para simplificar a declaração:
 
 
<syntaxhighlight lang=text>
 
exten=>identificador,prioridade,aplicação
 
same=>prioridade,aplicação
 
</syntaxhighlight>
 
 
*'''same''': declara uma nova extensão com mesmo identificador da extensão imediatamente anterior
 
 
Por fim, a ''prioridade'' (que define a ordem com que as extensões são processadas) declarada com o valor ''n'' equivale à prioridade da extensão imediatamente anterior incrementada em uma unidade:
 
 
<syntaxhighlight lang=text>
 
exten=>101,1,Dial(SIP/101)
 
same=>n,Hangup; a prioridade aqui terá o valor 2
 
</syntaxhighlight>
 
 
=== Canais SIP ===
 
 
Cada telefone SIP deve ter seu identificador cadastrado no Asterisk. O identificador pode tanto ser um número, análogo a um ramal, ou uma string alfanumérica. No terminologia do Asterisk, cada telefone SIP é chamado de ''canal SIP'', e deve estar declarado em /etc/asterisk/sip.conf:
 
 
<syntaxhighlight lang=text>
 
; Canal 2000 (um exemplo)
 
[2000]
 
defaultuser=maria ; o nome do usuário para fins de autenticação
 
secret=kabrum
 
type=friend ; pode efetuar e receber chamadas
 
host=dynamic ; pode conectar-se a partir de qualquer endereço IP
 
insecure=port,invite ;
 
disallow=all
 
allow=gsm ; habilita este codec para o João.
 
allow=alaw ; outro codec
 
allow=ulaw ; mais um codec
 
qualify=yes; monitora o UAC
 
 
; Canal 1000 (outro exemplo)
 
[1000]
 
defaultuser=joao ; o nome do usuário para fins de autenticação
 
secret=blabla
 
type=friend ; pode efetuar e receber chamadas
 
host=dynamic ; pode conectar-se a partir de qualquer endereço IP
 
insecure=port,invite ;
 
disallow=all
 
allow=gsm ; habilita este codec
 
allow=alaw ; outro codec
 
allow=ulaw ; mais um codec
 
qualify=yes; monitora o UAC
 
</syntaxhighlight>
 
 
Como se pode notar, a declaração de um canal SIP envolve muitos parâmetros que envolvem autenticação, controle de acesso, localização na rede, codecs e possivelmente outras capacidades. Como os valores de alguns parâmetros podem ser iguais para vários canais, o Asterisk possibilita a declaração de perfis (''templates''):
 
 
<syntaxhighlight lang=text>
 
; Perfil alunos
 
[alunos](!);  a sequência "(!)" define isto como um perfil
 
type=friend ; pode efetuar e receber chamadas
 
host=dynamic ; pode conectar-se a partir de qualquer endereço IP
 
insecure=port,invite ;
 
disallow=all
 
allow=gsm ; habilita este codec
 
allow=alaw ; outro codec
 
allow=ulaw ; mais um codec
 
qualify=yes; monitora o UAC
 
 
; Canal 2000
 
[2000](alunos); a sequência "(alunos)" copia as definições do perfil "alunos"
 
defaultuser=maria ; o nome do usuário para fins de autenticação
 
secret=kabrum
 
 
; Canal joao
 
[joao](alunos)
 
defaultuser=joao ; o nome do usuário para fins de autenticação
 
secret=blabla
 
</syntaxhighlight>
 
 
=== Experimento: comunicação entre telefones IP ou softphones por meio de um PBX IP ===
 
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji4/Zoiper_3.3_Linux_Free_32Bit_64Bit.tar.gz Instalador do softphone Zoiper]
 
 
 
Para realizar esses exercícios você deve usar o Asterisk na máquina virtual ''Grafico-2''. Para testar as chamadas, use um softphone em seu celular ou em um computador.
 
 
 
1. Criar os seguintes canais SIP: 100 e 101 (escolha usuários e senhas para autenticação)
 
 
2. Crie um plano de discagem em que todos podem fazer chamadas para todos (isso é, 100 pode chamar 101, e vice-versa).
 
 
3. Configure os softphones de forma que se registrem no PBX Asterisk, usando as contas SIP criadas previamente.
 
 
5. A partir de um softphone faça uma chamada para a conta do outro softphone. Verifique se o softphone de destino acusou o recebimento de chamada. Caso isso não tenha ocorrido, verifique seu plano de discagem. Em seguida faça uma chamada em sentido contrário.
 
 
6. Execute o comando ''rasterisk -vvv'' no computador do Asterisk.
 
 
7. Usando o comando ''sip show peers'', visualize os estados dos canais SIP conhecidos pelo Asterisk.
 
 
8. Refaça uma chamada entre os softphones, e observe o que aparece na tela do ''rasterisk''.
 
 
9. Será possível verificar que chamadas estão em andamento no Asterisk usando o ''rasterisk'' ? Pesquise como se pode fazer isso.
 
 
10. Use o ''rasterisk'' para testar chamadas. Use o comando ''console dial canal_SIP'' para chamar um canal SIP (substitua ''canal_SIP'' pelo número a ser chamado). Ao final, execute ''console hangup''.
 
 
11. Acrescente mais um canal SIP, editando o arquivo ''sip.conf''. Configure um dos softphones para usar esse novo canal.
 
 
12. Teste chamadas entre os softphones usando esse novo número.
 
 
=== Possíveis problemas ===
 
 
# Em cada softphone crie uma conta SIP, que deve ser identificada por ''ramal@IP_do_PBX'' (ex: se o PBX tiver IP 192.168.2.110, as contas de alunos podem ser 100@192.168.2.110 e 101@192.168.2.110).
 
# Após definir as contas, verifique se os telefones indicaram que elas estão disponíveis (''online''). Você pode fazer essa verificação também no próprio Asterisk. Neste caso execute o seguinte comando para acessar o console do Asterisk: <syntaxhighlight lang=bash>
 
sudo rasterisk -vvv
 
host*CLI> sip show peers
 
host*CLI> sip show peers
 
Name/username              Host            Dyn Nat ACL Port    Status   
 
101/101                    192.168.2.10      D          11270    OK (6 ms)
 
102/102                    192.168.2.210      D          63169    OK (12 ms)
 
2 sip peers [Monitored: 2 online, 0 offline Unmonitored: 0 online, 0 offline]
 
</syntaxhighlight>
 
# Se algum dos telefones não aparecer como ''OK'' no console do Asterisk, verifique se o número de ramal e a senha configuradas no telefone são os mesmos declarados em ''/etc/asterisk/sip.conf''. Outro teste que se pode fazer é acessar o console do Asterisk, e depois tentar ativar as contas SIP nos telefones (i.e. colocá-las para indisponível ou ''offline'', e depois reativá-las). O Asterisk irá mostrar algumas linhas informativas sobre os registros dos telefones..
 
# Se as contas SIP estão devidamente registradas no Asterisk, mas ainda assim as chamadas não são realizadas, o problema deve estar no plano de discagem. Neste caso, acesse o console do Asterisk e tente novamente fazer a chamada. Veja se o Asterisk informa na tela o motivo para a chamada não ser realizada. Em seguida, confira se seu plano de discagem (''/etc/asterisk/extensions.conf'') possui uma extensão que satisfaça a chamada que se deseja realizar. Isso é, se você estiver tentando chamar o ramal SIP 101@192.168.2.110, deve haver uma extensão assim: <syntaxhighlight lang=text>
 
exten=>101,1,Dial(SIP/101)
 
same=>n,Hangup
 
</syntaxhighlight>
 
 
===DICAS===
 
 
Comandos válidos no CLI do Asterisk:
 
 
#Recarregar as configurações do arquivo sip.conf: <code> sip reload</syntaxhighlight>
 
#Recarregar as configurações do arquivo extensions.conf: <code> dialplan reload</syntaxhighlight>
 
#Ver canais SIP criados: <code> sip show peers</syntaxhighlight>
 
#Gerar uma ligação via console: <code>console dial extensão@contexto</syntaxhighlight>
 
 
=== PBX baseados em Asterisk ===
 
 
Existem softwares que implementam interfaces amigáveis para uso do Asterisk. Mais que isso, tais softwares criam um modelo de utilização do Asterisk, articulando seus recursos e funcionalidades de forma prática. Alguns deles são:
 
* [https://www.freepbx.org/ FreePBX]
 
* [https://www.elastix.org/ Elastix]
 
* [http://www.snep.com.br/br/ SNEP]
 
 
 
Algum deles poderia ser adequado ao projeto ? Ou seria melhor usar o Asterisk diretamente ?
 
  
 
{{Collapse bottom | Aula 1}}
 
{{Collapse bottom | Aula 1}}

Edição das 14h56min de 20 de fevereiro de 2018

Projeto Integrador IV

Professores: Ederson Luiz de Souza Santos (ederson.luiz@ifsc.edu.br) e Mayara de Sousa (mayara.sousa@ifsc.edu.br)
Encontros: 3a feira/19:00, 6a feira/19:00
Atendimento paralelo: 3a, 4a, 5a e 6a feira 17:30 h
Coordenadoria pedagógica (Graciane): graciane@ifsc.edu.br (3381-2890, 3381-2842)

Objetivo Geral

  1. Implantar um PABX IP integrado com serviços de telefonia fixa e móvel convencionais.
  2. Prover a infraestrutura de rede necessária para o adequado funcionamento deste PABX IP.
  3. Integrar os serviços de telefonia com outros serviços de rede.

Links interessantes

Provedores VoIP no Brasil

Resumo de comandos da CLI para o Asterisk

  1. O Asterisk pode ser carregado de duas formas:
    • foreground: utilizado para depurar problemas na inicialização do Asterisk, quando ele não puder ser inicializado.
    • background: modo padrão de inicialização

  2. Conectar à CLI do Asterisk carregado
    asterisk -r
    rasterisk
    
  3. Comandos na CLI
    1. Saindo da CLI sem interromper o processo
      exit
      
    2. Carrega canais SIP previamente registrados
      sip reload
      
    3. Mostra canais SIP registrados
      sip show peers
      
    4. Carrega plano de discagem
      dialplan reload
      
    5. Mostra a extensão criada no plano de discagem
      dialplan show default
      
    6. Finalizando processo no Asterisk
      sudo core stop now
      
    7. Ver aplicações disponíveis no Asterisk
      core show applications
      
  4. Iniciando Asterisk em modo Background
    sudo service asterisk start
    
  5. Carregar o Asterisk em modo ForeGround
    sudo asterisk -gc
    

16/02/2018: Apresentação da disciplina

Aula 1


O foco do Projeto Integrador IV está na oferta de serviços ao usuário final e na convergência de serviços de telecomunicações, incluindo a integração dos serviços de telefonia fixa, móvel e VoIP. Além disso, também tem como objetivo a integração destes serviços de telecomunicações com outros serviços de rede como servidores Web, Email, Telefonia IP, administração de sistemas e usuários, compartilhamento de recursos, DNS, etc.


Na figura abaixo é apresentado um esboço do cenário que foi desenvolvido durante o Projeto Integrador III. A proposta inicial é integrar a este cenário serviços de telefonia IP e convencional. Além disso, outros serviços podem ser integrados a ambos, como e-mail, DNS, acesso à câmeras IP, etc.

Diagrama-PJI3.png


Uma vez integrados os serviços de rede e de telefonia e tendo em mente que a qualidade de serviço é um ponto sensível à aplicações de telefonia IP, espera-se desenvolver métodos de medição de rede para assegurar seu correto funcionamento.

PBX IP

Um PBX IP funciona como uma central telefônica, porém intermediando chamadas VoIP. Com isso, as chamadas são feitas de um telefone IP em direção ao PBX IP, que a encaminha ao telefone IP de destino de acordo com suas regras de discagem. A figura abaixo ilustra como funciona uma chamada VoIP típica através de um PBX IP.

Voip-call.png


Nas nossas aulas faremos uso de um PBX IP Asterisk, que é um software desenvolvido pela Digium. O Asterisk roda em computadores do tipo PC que possuem sistema operacional baseado em Linux. Sua licença é livre, o que significa que não há custo de licenciamento para utilizá-lo.

PBX IP Asterisk


Asterisk: uma solução completa de PABX baseado em software, permitindo ligar o mundo IP ao mundo da rede pública de telefonia comutada.

Características Básicas: faz tudo que um PABX pequeno e simples faz e pouco mais

  • ˆ Transferência, música de espera, siga-me, etc.
  • Conferência, correio de voz, URA, fila de chamadas, monitoramento de chamadas, integração com o Jabber (Google talk)


Asterisk-ex1.png
Exemplo de cenário de uso do Asterisk



O Asterisk é um software complexo e com muitos recursos. Porém sua função mais elementar, que é intermediar chamadas, pode ser entendida com base em dois elementos importantes desse tipo de PBX. Esses elementos são o plano de discagem e configurações de canais. Na terminologia do Asterisk, um canal pode ser entendido como um ramal ou tronco. Para ter o Asterisk funcionando como uma central simplificada, é suficiente configurar esses dois elementos.