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 1 921: Linha 1 921:
 
  # apt-get install -y apache2 php5 php5-mysql libapache2-mod-php5 php5-gd  
 
  # apt-get install -y apache2 php5 php5-mysql libapache2-mod-php5 php5-gd  
 
   
 
   
# apt-get -y installphp-net-socket libpq5 libpq-dev mysql-server mysql-client libmysqld-dev
+
# apt-get -y install php-net-socket libpq5 libpq-dev mysql-server mysql-client libmysqld-dev
  
  

Edição das 19h43min de 22 de maio 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)

Endereço encurtado: http://bit.ly/pji4-2018-1

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

Arquivo apresentação da disciplina

Apresentação da disciplina 2018-1

Projeto Integrador IV

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.


20/02/2018: Conceitos gerais, preparação do servidor e instalação do Asterisk e banco de dados

Aula 2

Telefonia IP ou VoIP: O que é?


A Comunicação de Voz em Redes IP, chamada de VoIP, consiste no uso das redes de dados que utilizam o conjunto de protocolos das redes IP (TCP/UDP/IP) para a transmissão de sinais de Voz em tempo real na forma de pacotes de dados.

A sua evolução natural levou ao aparecimento da Telefonia IP, que consiste no fornecimento de serviços de telefonia utilizando a rede IP para o estabelecimento de chamadas e comunicação de Voz.

Nessas redes são implementados protocolos adicionais de sinalização de chamadas e transporte de Voz que permitem a comunicação com qualidade próxima àquela fornecida pelas redes convencionais dos sistemas públicos de telefonia comutada ou de telefonia móvel.

Digitalização de Sinais de Voz


Nos sistemas tradicionais o sinal de Voz utiliza uma banda de 4 kHz, e é digitalizado com uma taxa de amostragem de 8 kHz para ser recuperado adequadamente (Princípio de Nyquist). Como cada amostra é representada por um byte (8 bits, com até 256 valores distintos), cada canal de Voz necessita de uma banda de 64 kbit/s (8.000 amostras x 8 bits).

Esta forma de digitalização do sinal de Voz atende a recomendação ITU-T G.711 - Pulse code modulation (PCM) of voice frequencies.

Nos sistema de transmissão de Voz sobre IP, onde a demanda por banda é crítica, torna-se necessário utilizar também algoritmos de compressão do sinal de Voz. Esses algoritmos têm papel relevante pela economia de banda que proporcionam.

O seu uso tem sido possível graças ao desenvolvimento dos processadores de sinais digitais (DSP’s), cuja capacidade de processamento tem crescido vertiginosamente.

Estas necessidades incentivaram o desenvolvimento de tecnologias mais complexas para a digitalização e compressão de Voz, e que foram registradas através de recomendações do ITU-T. Estas recomendações são apresentadas na tabela abaixo, com algumas características relevantes.

Codecs.jpg


Asterisk


O Asterisk é a implementação de uma central telefônica PBX (Private Branch eXchange) em software, criado por Mark Spencer em 1999, e distribuído pela Digium livremente seguindo a licençaGPL (GNU General Public License – GPL), ou através de código proprietário.

O nome Asterisk vem do símbolo ‘*’, muito comum no mundo da telefonia.

O Asterisk foi originalmente desenvolvido para Linux, mas atualmente podeser instalado e executado em uma grande variedade de sistemas operacionais, incluindo NetBSD, OpenBSD, FreeBSD, Mac OS X, Solaris e até mesmo Microsoft Windows, onde é conhecido por Asterisk Win32.

Características do Asterisk


O Asterisk é um software, baseado na licença GPL (GNU General Public License), que executa todas as funções de uma central telefônica convencional através das principais tecnologias de comunicação existentes no mercado, como por exemplo: linhas telefônicas analógicas, links de telefonia digital via placas de comunicação TDM (Time-Division Multplexing, ou Multiplexaçã ,o por divisão detempo), VoIP (Voice over IP, ou Voz sobre IP) através dos protocolos SIP, H.323, IAX2, MGCP, Skinny,GoogleTalk, Skype, entre outros.

Através do Asterisk é possível estabelecer uma chamada entre qualquer um desses protocolos. O Asterisk é o que chamamos de B2B User Agent, ou melhor, Back-to-Back User Agent, ele estabelece uma chamada telefônica, separando cada “perna” da chamada entre origem e destino, e monitora todo o tráfego de áudio entre esses pontos. Por isso, caso esses pontos estejam utilizando CODECs diferentes, o Asterisk consegue transcodificar o áudio sem qualquer problema. Pode-se dizer que o Asterisk possui todas as funcionalidades das chamadas centrais telefônicas convencionais, como URAs, correio de voz, conferência, distribuição automática de chamadas, entre outras, e caso seja necessário, é possível acrescentar novas funcionalidades ao sistema através do próprio plano de discagem do Asterisk, módulos customizados escritos em C, ou ainda através de scripts escritos em Asterisk Gateway Interface (AGI). *Fonte: Construindo um PBX IP na pratica (Alexandre Keller)

Codecs


Um dos componentes necessários para transmissão de voz numa rede de dados é o Áudio CODEC (Codificador-Decodificador). Este componente é o responsável por transformar a voz humana (um sinal analógico) em uma seqüência de bits (um sinal digital) para transmissão numa rede de dados, fazendo amostragens periódicas no sinal de voz. Em equipamentos do tipo gateways VoIP, esses CODECs são implementados através de um componente chamado DSP (Digital Signal Processor). A introdução dos microprocessadores no final dos anos 70 e início dos anos 80 tornou possível usar técnicas de processamento digital de sinais (Digital Signal Processing) em um range muito maior de aplicações. Durante os anos 80 a importância crescente do processamento digital de sinais levou vários fabricantes importantes (como Texas Instruments, Analog Devices e Motorola) a desenvolverem os chips DSP, ou seja, microprocessadores especializados com arquiteturas projetadas especificamente para os tipos de operações requeridas ao processamento digital de sinais. Como um microprocessador de uso geral, um DSP é um dispositivo programável, com seu próprio conjunto de instruções nativas. O uso desses chips associados a algoritmos de compressão permitiu a implementação de diversas tecnologias de CODEC’s. Exemplos de chips DSP são o DSP542 e DSP549 fabricados pela Texas Instruments e usados pela CISCO Systems em seus gateways VoIP [CISCO-CODEC1]. Cada CODEC provê certa qualidade de voz. A medida de qualidade da voz transmitida é uma resposta subjetiva de um ouvinte. Uma medida comum usada para determinar a qualidade do som produzido pelos CODECs específicos é o MOS (Mean Opinion Score). Com o uso do MOS, um amplo range de ouvintes julgam a qualidade de uma amostra de voz (correspondendo a um CODEC particular) numa escala de 1 a 5. A partir desses resultados, é calculada a média dos scores para atribuir o MOS para aquela amostra [CISCO-CODEC2]. Na tabela 1 são apresentados alguns scores MOS para os CODECs mais usados. Na Tabela 2 são descritos os scores MOS.

Codecs2.jpg

Codecs3.jpg


Instalação do Asterisk


Neste semestre iremos trabalhar com o Asterisk versão 11.1.1, o LibPRI 1.4, que é uma biblioteca Libpri será instalada para que tenhamos suporte aos canais PRI( ISDN, E1, T1 ), e o DAHDI, que é um pacote (Digium Asterisk Hardware Device Interface) nos permite carregar os drivers e configurar diversos tipos de placas de telefonia (para conectar telefones analógicos, linhas telefônicas, linhas digitais e outros). Antes de qualquer coisa, devemos atualizar o sistema via console de comando:

#apt-get update
#apt-get upgrade

Também devemos instalar algumas dependências:

# apt-get install -y make wget libssl-dev ncurses-dev libnewt-dev libxml2-dev linux-headers-generic g++ libsqlite3-dev
# apt-get install -y mysql-server libmysqld-dev

Para baixar os arquivos do Asterisk, DAHDI e LibPRI, seguem os links abaixo:

Asterisk 11.1.1
LibPRI 1.4.15
DAHDI

Campos para o banco de dados:

Arquivo banco de dados



23/02/2018: Comandos e configurações do Asterisk. Criação de ramais

Aula 3

Comandos Asterisk

Para iniciarmos a utilização do Asterisk, devemos conhecer alguns comandos que serão utilizados no decorrer da disciplina.


Tipo: SIP


Habilitar/Desabilitar Debug do SIP

sip set debug on
sip set debug off

sip reload: Reload No arquivo: sip.conf
sip show channels: Visualizar canais ativos do Tipo SIP
sip show channel: Detalhar 1 determinado canal ativo SIP
sip show inuse: Listar todos os canais/peer existentes no Asterisk
sip show peers: Visualizar os pares que registraram ou não no Asterisk usando SIP
sip show registry: Visualizar status do Registro SIP. (Quando o asterisk registra um cliente utilizando SIP)
sip show users: Visualizar Dispositivos SIP, Plano de Discagem e Senha
sip show channelstats: Visualizar estatísticas de buffer e jitter na rede e nas chamadas SIP ativas


Tipo: IAX2


Habilitar/Desabilitar Debug do IAX2:

iax2 set debug on
iax2 set debug off

iax2 show channels: Visualizar canais ativos do Tipo IAX
iax2 show netstats: Visualizar estatisticas de buffer e jitter na rede e nas chamadas IAX ativas
iax2 show peers: Visualizar os pares que registraram ou não no Asterisk usando IAX
iax2 show registry: Visualizar status do Registro SIP. (Quando o asterisk registra um cliente utilizando IAX)
iax2 show stats: Visualizar estatisticas do IAX
iax2 show users: Visualizar Dispositivos IAX, Plano de Discagem e Senha
iax show channels: Visualizar canais ativos do Tipo IAX


Tipo: Gerenciamento do Asterisk


restart now: Restart Asterisk imediatamente
restart when convenient: Aguarda inatividade no Asterisk para restartar o Asterisk em seguida
reload: Reload nas configurações
stop now: Shut down no Asterisk imediatamente
dialplan reload: Reload nos arquivos de configurações do plano de discagem extensions.conf
modules show: Lista os módulos carregados no sistema
core show uptime: Visualizar o tempo do Asterisk no Ar
core show version: Visualizar informações sobre a versão do Asterisk


Tipo: Comandos Gerais


dialplan show: visualizar informações sobre um contexto
core show queues: visualizar as filas criadas no Asterisk
soft hangup: derrubar uma chamada ativa no Asterisk
core show applications: visualizar informação sobre as aplicações disponíveis
core show application: “Aplicação”: detalhar informação sobre determinada aplicação


Preparar o servidor para liberar portas


Devemos efetuar a liberação das portas 5060 e o range de 10000 a 20000 no Iptables do linux. As portas utilizadas no asterisk são definidas no arquivo rtp.conf, localizado no diretório /etc/asterisk/, onde a porta 5060 é padrão para registro do asterisk e o range 10000 a 20000 é padrão para a troca de informações. Somente efetue a alteração das portas em necessidade específica.

Iniciando a configuração dos ramais


O asterisk possui um diretório onde ficam os arquivos de configuração, ele está localizado em /etc/asterisk. Para definirmos nossos ramais sip, o arquivo de configuração responsável é o sip.conf.


Abaixo segue um exemplo de configuração do arquivo sip.conf:


[general]
bindport=5060
bindaddr=0.0.0.0
context=default
disallow=all
allow=ulaw
allow=alaw
allow=gsm
maxexpirey=120
defaultexpirey=80


[1000]
type=friend
secret=123
host=dynamic
qualify=yes


Onde:


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, a menos que seja sobrescrito na definição da entidade.

Allow: Permite que um determinado codec seja usado.

Disallow: Proíbe um determinado codec.

Bindport: Porta que o Asterisk deve esperar por conexões de entrada SIP. O padrão é 5060.

maxexpirey: Tempo máximo para registro em segundos.

Defaultexpirey: Tempo padrão para registro em segundos.


[name]: Quando um dispositivo SIP conecta-se ao Asterisk, ele utiliza a parte username do SIP URI para encontrar o peer/user.

Type: Configura a classe de conexão, as opções são peer, user e friend.

Peer: Entidade para a qual o Asterisk envia chamadas.

User: Entidade que faz chamadas através do Asterisk.

Friend: Os dois ao mesmo tempo.

Host: Configura o endereço IP ou o nome do host. Pode-se usar também a opção ‘dynamic’ onde se espera que o host faça o registro, é a opção mais comum.

Secret: Senha usada para autenticar o peer ou user fazendo uma chamada.

Qualify: caso esteja yes, o asterisk enviará um comando regularmente para verificar se o dispositivo ainda está online.


Plano de discagem

O plano de discagem é um conjunto de instruções. A extensão executa uma ação quando uma chamada é efetuada. Sintaxe de um comando extension:


exten=> number (name), {priority|label{+|-}offset}[(alias)],application


Para criar um plano de discagem, deve-se editar o arquivo responsável, o extensions.conf. Este arquivo está localizado em /etc/asterisk. Uma parte importante neste arquivo é o contexto general:

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no


static e writeprotect – permite salvar o plano de discagem a partir da linha de comando.
Autofallthrough – quando um ramal não tiver mais nenhuma opção no seu plano de discagem o Asterisk encerra a chamada com BUSY, CONGESTION ou HANGUP das outras configurações do servidor.
Clearglobalvars – determina se as variáveis globais serão limpas e recarregadas a cada vez que ocorrer uma recarga do Asterisk feita com o comando de console.
Priorityjumping – determina se as aplicações que suportam saltar prioridades baseado no resultado da operação o farão de forma normal.

Também devemos criar um contexto que já foi pré definido no ramal criado. No nosso caso se chamará default:


[default]
exten = 1000,1,Dial(SIP/1000,30)
exten = 1000,2,Hangup()


Neste caso usamos duas aplicações, Dial e Hangup, responsáveis por discar e encerrar uma chamada, respectivamente.

As aplicações mais comuns no Asterisk são:


Answer – Atende uma chamada
PlayBack(arquivo) – Reproduz arquivo de som especificado. Os arquivos de som ficam em /var/lib/asterisk/sounds
BackGround(arquivo) – Mesma coisa, mais permite a interação com o usuário durante a execução
HangUp – Encerra uma chamada
Dial – Disca ou conecta dois canais de comunicação
Goto(contexto,extensão,prioridade) – Muda a ordem para o contexto, extensão e prioridade especificados
Gosub(contexto,extensão,prioridade) – Mesma coisa, mas salva a posição de retorno
NooP – imprime na cli do asterisk o termo


Exercício


Crie 6 ramais (1000, 1001, 1002, 1003, 1004, 1005).

Crie também um plano de discagem que permita a ligação entre todos os ramais.

27/02/2018: Plano de discagem e máscaras

Aula 4

Plano de discagem

O plano de discagem define como o Asterisk irá gerenciar as chamadas. Ele consiste de uma lista de instruções ou passos que o Asterisk deveria seguir. Essas instruções são disparadas a partir dos dígitos recebidos de um canal ou aplicação. O extensions.conf pode ser separado em quatro partes:

  • Contextos;
  • Extensões;
  • Prioridades;
  • Aplicações.


Contextos

Os contextos definem o escopo e permitem separar diferentes partes do plano de discagem, recebem o seu nome dentro de chaves ([]). No início do arquivo extensions.conf existe um contexto chamado [globals] onde as variáveis globais são definidas e podem ser usadas por todo o plano de discagem. E o contexto [general] que é utilizado para definir alguns parâmetros gerais. Os contextos estão ligados diretamente aos canais. Quando uma ligação entra no Asterisk por um canal ela é processada dentro do contexto deste canal. Ex:

[gerentes]
exten=>9000,1,Playback(gerente)

[visitantes]
exten=>9000,1,Playback(visitante)


Extensões

O plano de discagem é um conjunto de instruções. A extensão executa uma ação quando uma chamada é efetuada. Sintaxe de um comando extension:

exten=> number (name), {priority|label{+|-}offset}[(alias)],application

Exemplo:

exten => 9001,1,Dial(SIP/9001,20) ; Extensão 9001, prioridade 1, disca para o ramal 9001 pelo protocolo SIP, tempo de resposta em segundos.
Exten => 9001,2,Hangup() ; Extensão 9001, prioridade 2, efetua o desligamento.

Dentro de uma extensão, podemos ter as chamadas variáveis de canal, como abaixo:

exten =>2001,2,DIAL(SIP/${RAMAL})

Neste exemplo acima, criamos a variável “RAMAL” em tempo de execução, ou seja, na criação do Canal, ou da chamada. As variáveis de canais são as mais utilizadas normalmente, para trazer informação dos canais normalmente, como nome do canal , nome do contexto, extensão, etc. Vejamos abaixo algumas das variáveis mais usadas:

${CALLERID} Identificador da chamada (nome ou número)
${CALLERIDNAME} O nome do id. Da chamada
${CALLERIDNUM} O número do id. Da chamada.
${CHANNEL} Nome do Canal atual ou corrente.
${CONTEXT} Nome do Contexto atual ou corrente.
${DATATIME} Data e hora no formato o YYYY-MM-DD_HH:MM:SS.
${DIALPEERNUMBER} Número de que foi chamada.
${DIALSTATUS} Status da Chamada.
${EXTEN} Extensão da chamada atual ou corrente.
${HANGUPCAUSE} Causa do término da chamada
${LANGUAGE} A Linguagem Atual.
${PRIORITY} Prioridade Atual


exemplo:

exten => _20XX,1,Dial(SIP/${EXTEN})


Neste exemplo podemos ver o uso de máscara e da variável do Asterisk EXTEN. Esse é justamente o exemplo que havia falado acima, para evitar o a criação de uma infinidades de canais. Quando um ramal começando com 20 e mais dois números for solicitado, irá chamar a aplicação DIAL para discar para o ramal ( SIP/${EXTEN}), onde esta variável trará o próprio numero discado. Assim precisamos apenas de uma entrada para todos os ramais do tipo 20XX.


Aplicações básicas do Asterisk

Answer – Atende uma chamada.
PlayBack(arquivo) – Reproduz arquivo de som especificado. Os arquivos de som ficam em /var/lib/asterisk/sounds
BackGround(arquivo) – Mesma coisa, mais permite a interação com o usuário durante a execução.
HangUp – Encerra uma chamada
Dial – Disca ou conecta dois canais de comunicação
Goto(contexto,extensão,prioridade) – Muda a ordem para o contexto, extensão e prioridade especificados.
Gosub(contexto,extensão,prioridade) – Mesma coisa, mais salva a posição de retorno.
NooP – imprime na cli do asterisk o termo.

Para verificar as aplicações no asterisk, basta digitar n cli do mesmo o seguinte comando:

  # ubuntu-server*cli> core show applications

Caso queira uma explicação detalhada de uma aplicação, utilize o comando:

  # ubuntu-server*cli> core show application nome_da_aplicacao

Onde o termo nome_da_aplicacao corresponde a aplicação a qual queremos os detalhes.


Formato das extensões

8000 – numérica
Alexander – alfanumérica
4321/1234 – Numérica com callerID
_4XXX – Usando máscaras
s – padrões pré definidos

Máscaras

_ - início de uma máscaras
. - aceita n caracteres subsequentes
[13-9] – qualquer dígito dentro dos colchetes (1, de 3 até 9), mas apenas um deles
X – qualquer dígito entre 0 e 9
Z – qualquer dígito entre 1 e 9
N – qualquer dígito entre 2 e 9

Prioridades

Prioridades são passos numerados na execução de cada extensão. Cada prioridade chama uma aplicação especifica. Se os números das prioridades não forem sequenciais o Asterisk aborta a execução. A partir da versão 1.2 do Asterisk, tornou-se comum o uso da prioridade “n”, no lugar da associação manual de números, assim como a possibilidade da utilização de labels e aliases.


Exercícios

Crie uma extensão para telefones fixos e outra extensão para telefones celulares, utilizando máscaras pré definidas.

02/03/2018: Plano de discagem e máscaras - Continuação

Aula 5

Avaliação 01


  1. Deve-se criar extensões para ramais com 5 dígitos, permitindo que iniciem com 3 ou 4 e tenham sua numeração entre 30000 e 34999, e também entre 40000 e 44999 (1,5 pontos);
  2. Criar extensões para ramais com 5 dígitos iniciando em 6 ou 7 e que tenham sua numeração entre 65000 e 65999, e também entre 75000 e 75999 (1,5 pontos);
  3. Criar extensões para ramais com 3 dígitos iniciando com 9 e que tenham numeração entre 901 e 909 (1 ponto);
  4. Criar extensões para celulares com 9 dígitos mais operadora de longa distância juntamente com o zero (mais 3 dígitos). Deve-se assegurar-se que a operadora de longa distância a ser utilizada é 071 (fictício) (1,5 pontos);
  5. Criar a mesma extensão para celulares com 9 dígitos, sem operadora (1,5 pontos);
  6. Criar extensões para telefones fixos com 8 dígitos mais operadora de longa distância juntamente com o zero (mais 3 dígitos). Deve-se assegurar-se que a operadora de longa distância a ser utilizada é 071 (fictício) (1,5 pontos);
  7. Criar a mesma extensão para telefones fixos com 8 dígitos, sem operadora (1,5 pontos).


Observações:

  • Os celulares iniciam com o dígito 9 e telefones fixos com 2 ou 3.
  • Em cada extensão usar uma aplicação para escrever na CLI do Asterisk qual a ligação está sendo efetuada, o número e o nome dado ao ramal. Ex: Esta ligação está sendo efetuada de celular sem operadora de longa distância.


Leituras que podem ser úteis:

Variáveis, Macros e Máscaras

Extensions.conf

06/03/2018: Aplicações e instalação de áudio em português

Aula 6

Aplicações

As aplicações são partes fundamentais do Asterisk, elas tratam o canal de voz, tocando sons, aceitando dígitos ou encerrando uma chamada. As aplicações são chamadas com opções que afetam a sua forma de funcionamento.

Agora testaremos este ramal, iremos criar uma aplicação onde discaremos *65 no ramal registrado e o asterisk nos dirá qual é o ramal que está em uso.

Para isso, vamos editar o arquivo responsável pelos planos de discagem, o extensions.conf. Este arquivo está localizado em /etc/asterisk.

Ao abrir o arquivo, temos que definir um contexto general, onde iremos indicar alguns parâmetros básicos:


[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no


static e writeprotect – permite salvar o plano de discagem a partir da linha de comando.

Autofallthrough – quando um ramal não tiver mais nenhuma opção no seu plano de discagem o Asterisk encerra a chamada com BUSY, CONGESTION ou HANGUP das outras configurações do servidor.

Clearglobalvars – determina se as variáveis globais serão limpas e recarregadas a cada vez que ocorrer uma recarga do Asterisk feita com o comando de console.

Priorityjumping – determina se as aplicações que suportam saltar prioridades baseado no resultado da operação o farão de forma normal. Agora criaremos um contexto chamado app:


[app] exten =>*65,1,Goto(function-speakextnum,s,1)


Ao discarmos *65, este contexto encaminhará, através da função Goto (enviar para), para outro contexto, chamado function-speakextnum:


[function-speakextnum]
exten => s,1,Set(Description=”Identifica ramal”)
exten => s,2,Answer
exten => s,3,Wait(1)
exten => s,4,Playback(number&is)
exten => s,5,SayDigits(${CALLERID(num)})
exten => s,6,Wait(2)
exten => s,7,Hangup


Basicamente, este contexto terá uma descrição, utilizará os sons previamente criados no asterisk para nos dizer qual o ramal em uso e após 2 segundos desligar.

Agora necessitamos incluir a aplicação no contexto definido no arquivo sip.conf. Devemos recordar que este contexto se chama default:


[default]
include => app


Pudemos identificar que a linguagem utilizada é o inglês. O que iremos fazer é instalar o idioma português.

Para isso, devemos efetuar o download do arquivo de áudio em português, Disc-OS-Sounds-1.0-pt-BR-AULA7.tar.gz, neste link:

Sons em português

09/03/2018: Instalação do Asterisk e Banco de Dados - Troca de Laboratório

Aula 7

Avaliação 02


Esta avaliação trata-se do envio referente a primeira parte do relatório, dos assuntos vistos até o momento.
O mesmo deve ser enviado até 11/03/2018 às 23:59, através do portal SIGAA.


Conteúdo:


  1. Instalação Asterisk. (2,0)
  2. Instalação do banco de dados MySql. (2,0)
  3. Plano de discagem e máscaras. (2,0)
  4. Aplicação de reconhecimento de ramal. (2,0)
  5. Instalação de áudio em português. (2,0)


13/03/2018: Instalação do Asterisk e Banco de Dados - Troca de Laboratório

Aula 8

Apresentação da orquestra Madrigal da UFSC referente a comemorações dos 30 anos do Campus.

Termino da instalação.

16/03/2018: Instalação do DAHDI e LibPRI. Utilização de Macros. Planos de discagem em arquivos

Aula 9

Instalação do DAHDI

DAHDI
Se você não está se integrando com nenhum equipamento de telefonia tradicional e você não está planejando usar o aplicativo de discagem MeetMe, então você não precisa instalar o DAHDI ou o libpri para usar o Asterisk.

Extrair o Dahdi:


# tar -zxvf dahdilinux-complete-2.11.1+2.11.1

entrar no diretório criado e efetuar os seguintes comandos:

# make
# make install
# make config

O DAHDI (Digium Asterisk Hardware Device Interface) é um projeto para desenvolvimento de placas de telefonia e seus drivers – módulos do kernel – de padrão aberto (open hardware e open source). O pacote DAHDI é tanto um pacote de módulos para o Kernel (drivers) quanto um middleware que faz a comunicação do channel driver do Asterisk – ou FreeSWITCH – com os drivers das placas. Portanto, ao instalar o pacote DAHDI, são instalados todos os módulos das placas compatíveis com esta arquitetura e um processo (middleware) que faz a comunicação dos componentes. Resumindo, o DAHDI é reponsável por toda a comunicação entre a aplicação (channel driver) e o hardware de telefonia (placa).

Instalação do Libpri

LibPRI 1.4.15
O código fonte libpri 1.4.13 e posterior depende dos arquivos de inclusão DAHDI. Então, é preciso instalar o DAHDI antes de instalar o libpri. Extrair o Libpri:

# tar -zxvf libpri1.4.5.tar.gz

entrar no diretório criado e efetuar os seguintes comandos:

# make
# make install

Macros

Macros são sub-rotinas que são usadas mais de uma vez dentro do plano de discagem, evitando à reedificação de dados. Facilitando operações, organização, onde os códigos podem ser reutilizados. Formato:

Macro(Nome da macro, Arg1, Arg2)

Onde temos:

Macro: A chamada para criação da Macro. Nome da macro: O nome da macro que está sendo criada, e será referenciado posteriormente. Arg(n): Argumentos que serão passados para macro.

Vejamos um exemplo de macro sendo utilizado. Iremos criar uma macro chamada atendimento, onde irá atender a ligação, mostrar na tela o número originador, o nome do ramal, irá executar um playback chamada hello-world e em seguida vai gerar na tela a mensagem Áudio executado com sucesso. Após efetuar os argumentos, a macro retorna para o contexto de origem e continua executando os demais comandos (Também podemos incluir a aplicação DumpChan, que nos trará informações complementares relacionadas aos ramais e a chamada efetuada).

Exercício

Crie um plano de discagem para o número 12345 onde a extensão deverá chamar uma macro com o nome ramal555. Esta macro deverá efetuar uma chamada para o ramal 555 que deverá estar configurado em um softphone.

Criando planos de discagem em arquivos

o asterisk utiliza o arquivo extensions.conf para que possamos efetuar nossos planos de discagem, mas existe uma forma de criar estes planos em arquivos diferentes. Para isso, devemos criar um arquivo com o nome desejado e salvar com a extensão .conf, no diretório /etc/asterisk.

Mas como vinculamos o arquivo criado no plano de discagem existente no extensions.conf?

Através da aplicação #include.

Para exemplificar, criaremos um arquivo chamado rota_123.conf


Exercício

Efetue um plano de discagem para o ramal 999 utilizando um arquivo externo chamado ramal999.conf. Este arquivo externo deverá chamar uma macro que irá ligar para o ramal 555.

20/03/2018: Habilitando gravação de chamadas

Aula 10

Verificando o banco de dados e criando a macro Record

Como vimos até agora, já possuímos ramais e planos de discagem entre ramais, mas não temos uma forma de ouvir novamente o que foi dito nestas ligações. Esse é um ponto importante para várias empresas e instituições. Por enquanto o Asterisk está gerando relatórios em nossa tabela cdr, mas não está gerando arquivos .wav das ligações. Para começarmos a gravar as ligações iremos criar uma macro e utilizar a aplicação Mixmonitor. O MixMonitor é uma aplicação nativa do Asterisk utilizada para fazer a gravação das chamadas telefônicas e mixar os arquivos de áudio em tempo real. Vamos verificar no nosso banco o campo monitor e ter certeza que não está sendo gravado:

# mysql cdr -u cdr_user -p

Onde: cdr -> Banco cdr_user -> Usuario para conectar no Banco

Para verificarmos os registros, usamos o seguinte comando:

mysql> select * from cdr\G;

Teremos uma saída parecida com esta:

Bancorecord.jpg

Caso o banco de dados apresente campos em branco, basta efetuar o carregamento do módulo cdr_mysql.so através dos dois comandos abaixo:

ubuntu-server*cli> module unload cdr_mysql.so
ubuntu-server*cli> module load cdr_mysql.so

Como podemos verificar, o campo monitor está vazio, indicando que não existe arquivo de gravação. Devemos editar o arquivo extensions.conf e criar a macro record, e além disso devemos chamar a macro antes da ligação ser atendida para que efetivamente aconteça a gravação.

Extensionconfrecord.jpg

O diretório padrão no asterisk para salvar as gravações é /var/spool/asterisk/monitor/, e nele é criado automaticamente diretórios com as datas para armazenar os arquivos.

Exercícios

  1. Crie um arquivo chamado ramaisinternos.conf no diretório /etc/asterisk e neste arquivo efetue plano de discagem para os ramais 5000 a 6999, efetuando a gravação das chamadas.
  2. Crie um plano de discagem para o número 1001 onde a extensão deverá chamar uma macro com o nome telefonista. Esta macro deverá efetuar uma chamada para o ramal 1000 que deverá estar configurado em um softphone. Este plano de discagem deve ter a gravação de chamadas ativado.

Avaliação 3

Você como administrador do setor de telefonia da empresa deverá fazer com que alguns ramais não tenham suas ligações gravadas. Estes ramais serão do 3000 à 3019(gravação desabilitada).

Os ramais do 3020 ao 3100 terão suas gravações habilitadas.

Como você faria isso de forma que não polua o seu arquivo extensions.conf?

Esta tarefa irá compor a 3 nota da parte individual da disciplina. Os valores de cada etapa estão informados abaixo:


  1. Faixa de ramais com a gravação habilitada. (2,5)
  2. Faixa de ramais com a gravação desabilitada. (2,5)
  3. Otimização/organizaçao do arquivo extensions.conf. (2,5)
  4. Apresentar e defender o conteúdo criado. (2,5)


23/03/2018: Habilitando gravação de chamadas - Continuação

Aula 11


27/03/2018: Criando uma URA

Aula 12

O conceito de URA

Idealizada e desenvolvida no início da década de 1980, a URA (Unidade de Resposta Audível) é uma interface eletrônica à qual direciona o cliente a um script de atendimento pré-configurado, com base nos setores e/ou assuntos atendidos pela empresa.

O sistema funciona como um menu digital: quem liga tem à sua disposição uma série de opções (por exemplo: “falar com suporte”, “falar com o comercial”). Ao selecionar a opção a pessoa é transferida – tanto para outra gama de opções quanto para um operador referente a opção escolhida pelo usuário.

Esse tipo de serviço otimiza a filtragem das ligações, a fim de agilizar o atendimento e facilitar o contato com o cliente. Atualmente, milhares de empresas adotaram a solução, dentre elas call centers de bancos, escolas, hotéis e muitas outras.

Normalmente contrata-se empresas especializadas em gravação de áudio para URAs, mas iremos utilizar um método mais caseiro.


Instalando programas para efetuar a gravação da URA

Para termos um áudio com opções para a nossa URA, devemos instalar um programa para captura de áudio chamado Audio Recorder. Devemos inicialmente adicionar o repositório onde o aplicativo se encontra, através do comando abaixo:

# sudo apt-add-repository ppa:osmoma/audio-recorder 

Então atualizamos a lista de repositórios:

# sudo apt-get update

E por fim instalamos o aplicativo:

# sudo apt-get install audio-recorder

Após efetuada a instalação, podemos abrir o programa e alterar a opção formato para .WAV (lossless wav 44khz):

Audiorecorder.jpg


Criando arquivo de áudio para a URA

Para transformarmos texto em voz, podemos utilizar o Google tradutor, escrever o texto que queremos e ouvir a pronúncia enquanto o Audio Recorder efetua a gravação. O áudio gerado será armazenado no diretório /home/usuário/Audio, onde o usuário é o nome do usuário utilizado no login do computador. O arquivo gerado terá o formato %Y-%m-%d-%H:%M:%S, como mostrado abaixo:

Listaaudio.jpg

Mas este áudio ainda não pode ser executado no asterisk, pois está com taxa de amostragem de 44100 hz, devemos alterar para 8000 hz. Para isso iremos usar um programa chamado Sox. Sua instalação se dá pelo comando:

# apt-get install sox libsox-fmt-all

o arquivo original deve ser convertido através do comando:

# sox 2018-01-27-10:40:59.wav -r 8000 -c1 ura.wav

Por fim, devemos movê-lo para o diretório /var/lib/asterisk/sounds/pt_BR:

# mv ura.wav /var/lib/asterisk/sounds/pt_BR/ura.wav

Configurando a URA

Neste momento estaremos prontos para iniciar a criação da URA. Iremos até o diretório /etc/asterisk/ e criaremos o arquivo ura.conf, no qual iremos inserir os comandos necessários para a sua criação:

Ura.jpg

Ao ligarmos para o ramal 9000, caímos na URA, onde é feito o desvio para o contexto ura, extensão s e prioridade 1.

Já na ura, o primeiro item é o TIMEOUT, relacionado ao tempo. Nesse primeiro caso, ela limita o tempo que o usuário tem para digitar a extensão, se em 10 segundo ele não digitar, automaticamente vai ser encaminhado para extensão t, onde será tocado o arquivo vm-goodbye.

No segundo item TIMEOUT(digit) , especificamos o tempo máximo entre um dígito e outro. Obviamente em nosso caso não há necessidade, pois as extensões têm apenas um digito, mas caso houvesse mais, seria o tempo padrão de 2 segundos.

A ura ira atender em Answer, e em seguida iniciará tocar o que está especificado em Background, que é justamente o menu gravado anteriormente.

A opção WaitExten tem por finalidade aguardar a digitação referente ao ramal que deve ser chamado, durante o tempo especificado.

Extensões 1 e 2 encaminham a ligação para seus respectivos ramais.

A extensão “i”, é utilizado quando é digitado um ramal inexistente, neste caso será utilizada o arquivo invalid para tocar, para informar ao usuário que o ramal é invalido, em seguida é novamente utilizado o Goto para desviar a ligação para o começo da ura, no label repete.

E por fim a extensão “t”, utilizado com os primeiros itens de TIMEOUT, desliga a chamada.

Devemos alterar o arquivo extensions.conf, incluído o contexto ura e adicionando um plano de discagem para o número fictício 9000, simulando nosso número principal:

Gotoura.jpg

Devemos também alterar o parâmetro autofallthrough para no, o que permite o uso de tempo, com TIMEOUT, para digitação dos dígitos na URA.

Outro ponto importante é incluir no arquivo sip.conf a linha dtmfmode=rfc2833, que é o padrão mais comum na digitação da maioria dos telefones.

Devemos ficar atentos na seguinte situação: enviamos a ligação diretamente para o ramal, através do comando exten = 1,1,Dial(SIP/1000) sem passar por um contexto, fazendo com que a ligação não tivesse gravação:

Gravacao.jpg

Para resolver este problema, vamos substituir a aplicação Dial pela aplicação GoTo, enviando para o contexto default no ramal desejado e sua prioridade, o que fará passar a gravar a ligação. Neste caso podemos dispensar a aplicação HangUp, pois a aplicação GoTo, não retorna para o contexto de origem:

Gotoramal.jpg


03/04/2018: Criando uma URA - Continuação

Aula 13

Avaliação 4

Crie uma URA com os seguintes ramais:

  1. Suporte Técnico: Este ramal deverá direcionar para uma ramal de Suporte técnico em Hardware e outro ramal de Suporte técnico em software. (2 pontos)
  2. Comercial. (1 pontos)
  3. Vendas: Deverá existir uma ramal para vendas de equipamentos e um ramal para vendas de serviços e softwares. (2 pontos)
  4. Administrativo. (1 pontos)
  5. Caso a pessoa não digite nada, a chamada deverá ser direcionada para a telefonista. (2 pontos)
  6. Deverá existir um áudio para orientar a pessoa que estiver ligando para o número que contém a URA e as subURAs. (2 pontos)

06/04/2018: Criando uma URA - Continuação

Aula 14


10/04/2018: Callback

Aula 15

Callback

CallBack é o ato de retornar a ligação de alguém que fez contato com sua central de atendimento. Na grande maioria dos casos, o Call Back é usado para ligar àquelas pessoas que abandonaram suas chamadas enquanto esperavam na fila. Também podemos adequar o callback em situações onde a empresa possui valores mais acessíveis para determinadas ligações de seus colaboradores.

Ex: um colaborador está fora da empresa, possui um número da operadora 1 mas necessita ligar para a operadora 2. Se a empresa possuir desconto ou gratuidade dentro do seu plano para ligar na operadora 2, seria interessante o colaborador se utilizar do callback.

Neste caso ele ligaria para um número pré determinado como callback, o asterisk armazenaria o número que discou e retornaria a ligação, permitindo que o colaborador, após atender a ligação, obtivesse tom de discagem e disque o número ao qual quer efetuar a ligação. Neste caso o asterisk completaria a ligação utilizando uma rota de saída determinada.

No nosso exemplo, iremos efetuar o callback através de ramais internos, mas poderia ser utilizado uma linha externa (analógica, DDR, Voip). Inicialmente iremos editar o arquivo extensions.conf e incluiremos a macro callback:


Callback1.jpg


O que cada linha desta macro irá fazer:


1ª Linha: Setando uma variável com o caminho do arquivo .call

2ª Linha: Canal para saída de ligação + o número para qual discar de volta: ${CALLERID(num)

3ª Linha: Contexto no qual o ramal responsável por efetuar a ligação está.

4º Linha: Extension -> Ramal que receberá a chamada.

5ª Linha: Callerid -> Número para qual discar.

6ª Linha: MaxRetries -> Máximo de tentativas de ligação antes de remover os arquivos .call

7ª Linha: RetryTime -> Segundos entre as tentativas, quando um telefone não está disponível.

8ª Linha: WaitTime -> Segundos para aguardar uma resposta.

9ª Linha: Aguarda 5 segundos.

10ª Linha: Movendo os arquivos .call criados para /var/spool/asterisk/outgoing/


Devemos criar o contexto de saída das ligações:


Callback2.jpg


E disponibilizar um número para receber as ligações e encaminhar para o callback:


Callback3.jpg


O nosso extension.conf irá ficar neste formato:


Callback4.jpg

Como podemos observar, usando o ramal 1000 discamos para o número de atendimento do nosso callback, o ramal 8000. Fomos direcionados para a macro callback, que armazenou nosso número, desligou a chamada e nos retornou, possibilitando discarmos. Logo em seguida a chamada para o número discado foi efetuada.


13/04/2018: Filas de Atendimento

Aula 16

Filas de atendimento

As filas de atendimento ou fila de espera são configurações que permitem ao usuário que estiver efetuando uma ligação para um número que possua esta funcionalidade consiga aguardar um atendimento sem necessitar escolher um único ramal, como em uma ura e se deparar com o ramal ocupado. Isso ocasiona um dinamismo maior, pois permite, por exemplo, fazer com que vários ramais toquem ao mesmo tempo, atendendo mais rapidamente o usuário.

O arquivo responsável pela configuração das filas é o queues.conf, localizado em /etc/asterisk/.

Vamos conhecer um pouco melhor a estrutura deste arquivo:

Filaasterisk.jpg


Parâmetros Gerais do arquivo


persistentmembers = yes ; se usamos agentes dinâmicos suas configurações estarão no banco de dados do Asterisk. Desta forma se o Asterisk for reiniciado cada agente será colocado na sua fila respectivamente.

keepstats = no ; mantém as estatísticas das filas durante um reload do Asterisk.

autofill = yes ; conforme for tendo disponibilidade de operadores, as chamadas em espera serão distribuidas.

monitor-type = MixMonitor ; se vamos gravar as conversações, com esse parâmetro os arquivos de áudio dos canais serão mesclados em um só.

shared_lastcall=yes ; no caso dos agentes pertencerem a mais de uma fila e o parâmetro estiver como yes os tempos de espera entre as filas distintas se repeitaram.


Parâmetros da Fila


[nome da fila] ; é o nome da fila

musicclass = default ; é classe utilizada para a música de espera

strategy = ringall ; é definido o tipo de estratégia que será utilizada pelas filas.


As opções são:

Leastrecent: Atribui a chamada para o agente que está a mais tempo sem atender uma chamada.

Fewestcalls: Atribui a chamada para o agente que menos atendeu chamadas.

Random: Atribui a chamada aleatoriamente para qualquer agente disponível.

Ringall: Chama todos os agentes de uma única vez e os primeiros a escolher é que irão atender as chamadas.

RRMemory: Distribui as chamadas entre os agente e lembra o ultimo agente que tentou chamar.

Linear: Distribui as chamadas de acordo com as configurações desse arquivo.

Wrandom: Atribui a chamada aleatoriamente usando uma métrica baseada em penalidades.

timeout = 15 ; é o tempo em segundos que será passada a próxima chamada para o agente se essa não for considerada contestada pelo mesmo.

retry = 5 ; é o tempo em segundos antes de voltar a chamar os agentes.

weight=0 ; cada fila pode ter um peso. Filas de maior valor terão prioridade sobre as de menor valor.

autopause=no ; Se um agente não responder a uma chamada será colocada em espera.

maxlen = 0 ; com este parâmetro define o número máximo de usuários que podem entrar na fila (0 = sem limite).


ao final, nosso arquivo queues.conf irá ficar assim:

Queuesconf.jpg


E também editar o arquivo extensions.conf, definindo o ramal 7000 para nossa fila de atendimento:

Extensionsfila.jpg


Na CLI do Asterisk efetuamos o reload do dialplan e do queue:

# ubuntu-server*cli> queue reload all


# ubuntu-server*cli> dialplan reload


Podemos verificar as filas configuradas e ramais disponíveis através do comando queue show:


Queuesshow.jpg


17/04/2018: Planejamento do projeto final

Aula 17

Planejamento inicial projeto

Esta aula será para definir o planejamento inicial do seu projeto final.


20/04/2018: Entroncamento entre centrais

Aula 18

Definindo o que é um entroncamento

Através do uso do Asterisk como ferramenta de comunicação interligando filias, empresas, temos em um primeiro momento um ganho substancial a curto/médio prazo financeiro. Médio prazo , pois exige um investimento financeiro para que a solução funcione, seja a interligação com o PABX convencional com placas E1 a mão de obra qualificada, para fazer funcionar a solução. Sem falarmos ainda no custo dos aparelhos de telefones IP ou ainda um Atas da vida.

Isso será dissolvido com o tempo, já a o custo da ligação será quase zero, sendo embutida no link de internet.

Mas os benefícios não acabam ai, quando falamos das configurações de Uras, filas de esperas, bilhetagem, controles, etc. Os ganhos ai vão bem além, e continuam subindo à medida que é usado durante anos.

Vale salientar que esta solução não se limita a ligação entre dois servidores, podemos interligar diversos, de acordo com a nossa necessidade.

Neste caso iremos utilizar o entroncamento utilizando a tecnologia SIP, registrando um ramal para efetuar e receber ligações entre as centrais.

Também teremos que garantir que a porta 5060 esteja liberada entre a origem e o destino e também o range 10000 – 20000.


Configurando os servidores

Inicialmente teremos que criar um ramal fora da faixa utilizada na central 1 e uma senha para enviar à central 2 no arquivo sip.conf. Estes ramais entre as centrais não podem ser conflitantes (ter a mesma máscara).

A configuração do ramal do arquivo sip.conf na central 1 ficará assim:


Entroncamento2.jpg

Ainda no arquivo sip.conf teremos que acrescentar um parâmetro no contexto general:

insecure=invite,port


este parâmetro permite ligar sem estar autenticado, evitando um erro de proxy no Asterisk.

Na central 2 também devemos criar um ramal fora da faixa utilizada, no sip.conf:


Entroncamento3.jpg


Após a criação dos ramais nas duas centrais, devemos efetuar o registro do ramal 300 na central 2 e o registro do ramal 400 na central 1. isso é efetuado também no arquivo sip.conf, abaixo do contexto general.

Central 1:

register => 400:123@192.168.1.205 (lembre de substituir pelo ip da central 2)

Onde:

  • 400 é o ramal;
  • 123 é a senha utilizada;
  • 192.168.1.205 é o IP da central 2.

O processo na Central 2 é o mesmo:

register => 300:123@192.168.1.207 (lembre de substituir pelo ip da central 1)

Após isso basta dar um reload do arquivo sip.conf na CLI do Asterisk e verificar o registro do ramal:

# ubuntu-server*cli> sip reload
# ubuntu-server*cli> sip show registry
Entroncamento4.jpg

Com o registro efetuado, devemos criar a rota de saída na Central 1 para a Central 2 pelo ramal 300, no arquivo extensions.conf:

Entroncamento5.jpg

Além disso, na central 2 também devemos criar uma rota de entrada para receber esta ligação:

Entroncamento6.jpg

Efetuado o reload do extensions.conf, podemos testar:

Entroncamento7.jpg

Mas neste momento estamos efetuando a ligação da Central 1 para a Central 2. Caso quisermos proceder a ligação no sentido contrário, da Central 2 para a Central 1, devemos criar a rota de saída na Central 2, efetuando uma pequena alteração na rota no arquivo extensions.conf:

Entroncamento8.jpg

Fazendo o reload no arquivo extensions.conf, podemos testar:

Entroncamento9.jpg


Exercícios



Efetue o entroncamento visto nesta aula com todas as centrais disponíveis no laboratório

24/04/2018: Entroncamento entre centrais - Continuação

Aula 19


27/04/2018: Voicemail

Aula 20

Voicemail

As opções de correio de voz e as caixas de correio são configuradas no arquivo de configuração do voicemail.conf. Este arquivo tem três seções principais:

A seção [geral]

Perto do topo do voicemail.conf , você encontrará a seção [general] . Esta seção do arquivo de configuração controla os aspectos gerais do sistema de correio de voz, como o número máximo de mensagens por caixa de correio, o comprimento máximo de uma mensagem de correio de voz e assim por diante. Sinta-se à vontade para ver o exemplo do arquivo voicemail.conf para obter mais detalhes sobre as várias configurações.

A seção [zonemessages]

A seção [zonemessages] é usada para definir vários fusos horários ao redor do mundo. Cada caixa de correio pode ser atribuída a um fuso horário específico, para que as datas sejam anunciadas em relação à hora local. Os fusos horários especificados nesta seção também controlam o modo como as horas e as datas são anunciadas, como a leitura da hora do dia no formato de 24 horas.

Contextos de correio de voz

Após as seções [general] e [zonemessages] , qualquer outra seção entre colchetes é um contexto de correio de voz. Dentro de cada contexto, você pode definir uma ou mais caixas de correio. Para definir uma caixa de correio, definimos um número de caixa postal, um PIN, o nome do proprietário da caixa de correio, o endereço de email principal, um endereço de email secundário e uma lista de opções de caixa de correio (separadas pelo caractere pipe), conforme mostrado abaixo:

mailbox=>pin,full name,email address,short email address,mailbox options


Instalando o SSMTP para envio dos e-mails

Voce deve instalar o aplicativo ssmtp, através do comando:

# apt-get install ssmtp

Editar o arquivo ssmtp.conf, que fica /etc/ssmtp:

Ssmtp.conf.jpg


Também deve editar o arquivo revaliases, em /etc/ssmtp, inserindo a seguinte linha:

root:seuemail@gmail.com:smtp.gmail.com:587


Permitindo acesso não seguro via Gmail

Vá para https://support.google.com/accounts/answer/6009563 (Intitulado: "Erro incorreto da senha"). Esta página diz Existem vários motivos pelos quais você pode ver um erro" Senha incorreta "(também conhecido como 534-5.7.14) ao fazer login no Google usando aplicativos de terceiros. Em alguns casos, mesmo se você digitar sua senha corretamente.

Para testar via linha de comando:

ssmtp email.address@seudominio.com
To:emailquerecebera@seudominio.com
From:emailconfiguradoparaenviar@seudominio.com
Subjetc:Seu cabeçalho
seu texto

Depois disso, aperte ctrl + d para enviar

Configurando o arquivo voicemail.conf

O Asterisk conta com um serviço de caixas postais (voicemail) fornecido pela aplicação Comedian Mail. O serviço é configurado através do arquivo /etc/asterisk/voicemail.conf, que possui uma série de possíveis parâmetros, conforme comentado no arquivo de configuração padrão.

Voicemailconf.jpg

Zonemessages.jpg

  • O parâmetro format configura os formatos que serão usados para armazenar as mensagens. O formato wav tem uma qualidade melhor e o formato wav49 é uma versão comprimida, ideal para envio por e-mail;
  • serveremail é o endereço que aparece como remetente dos e-mails enviados pelo servidor;
  • attach configura se deve ou não ser encaminhado no e-mail o arquivo de áudio com a mensagem;
  • skipms configura o tempo (em milissegundos) que será utilizado para avançar ou retroceder uma mensagem quando as teclas * ou # forem pressionadas;
  • maxsilence é o tempo máximo (em segundos) que o sistema deve aguardar antes de desligar a gravação da mensagem, quando o usuário ficar em silêncio;
  • silencethreshold é o limiar utilizado para considerar o silêncio. Os valores válidos estão entre 0 e 32767;
  • maxlogins determina quantas vezes o usuário pode errar a senha antes do sistema desligar a ligação. Isso dificulta os ataques de força bruta a fim de acessar uma caixa postal;
  • charset define a codificação de caracteres que será utilizada para compor os e-mails a serem enviados.
  • emaildateformat e pagerdateformat definem o formato de data que será utilizado nas notificações por e-mail e pager;
  • sendvoicemail permite enviar mensagens de voz para outros usuários a partir do sistema de correio de voz;
  • mailcmd especifica o comando que será utilizado para enviar os e-mails;
  • emailsubject e emailbody definem o cabeçalho e o corpo dos e-mails que serão enviados.
  • A seção [zonemessages] tem o objetivo de permitir o tratamento das mensagens considerando os diferentes timezones, permitindo tocá-las para os usuários com as datas corretas. Os valores mostrados são os padrões do Asterisk. Para maiores informações, pode-se consultar o arquivo de configuração padrão.

A sessão default irá conter os ramais que terão a funcionalidade ativada, juntamente com a senha, descrição e e-mail:

Voicemailconf2.jpg


Além da configuração do arquivo /etc/asterisk/voicemail.conf, é necessário programar o dialplan para utilizar as caixas postais em caso de não disponibilidade do usuário. Uma possibilidade é usar o seguinte bloco para a definição de um ramal (arquivo extensions.conf, na seção default):

Voicemailconf3.jpg


Também devemos chamar a aplicação VoiceMailMain nos ramais que irão usar esta funcionalidade:

Voicemailconf4.jpg


No arquivo sip.conf definimos o mailbox, juntamente com a descrição do ramal:

Voicemailconf5.jpg


Entramos na CLI do asterisk e efetuamos o reload do extensions.conf, sip.conf e voicemail.conf:

ubuntu-server*cli> dialplan reload
ubuntu-server*cli> sip reload
ubuntu-server*cli> voicemail reload

Para acessarmos a caixa postal, basta digitar 5555, que foi definido na aplicação VoiceMailMain, digitar o ramal desejado e em seguida a senha.

O diretório onde se encontram as gravações do Voicemail é /var/spool/asterisk/voicemail

04/05/2018: Provedor VOIP

Aula 21

Tecnologia VOIP – Voz sobre IP

Voz sobre IP, também conhecida como VoIP (Voice over Internet Protocol), é uma tecnologia que permite o tráfego de voz pelas redes de computadores, tráfego até então só possibilitado pela rede de telefonia tradicional. Com a VoIP, é possível efetuar ligações telefônicas entre computadores, telefones comuns, telefones IP e celulares.

A VoIP também pode ser utilizada em centrais de PABX, que por sua vez podem ser substituídas por servidores de PABX IP.

Essa tecnologia foi desenvolvida ao longo da década de 90. Padrões para protocolos de funcionamento a serem usados na VoIP foram criados pela International Telecommunication Union (ITU) e pela Internet Engineering Task Force (IETF). A VoIP nasceu de duas vertentes: a digitalização do tráfego entre as centrais telefônicas e a Internet, possibilitando custos menores em ligações de longa distância.

Na efetuação de uma ligação telefônica utilizando VoIP, há a conversão do sinal analógico de voz para dados, essa conversão é necessária pois os dados são sinais digitais que trafegam numa rede IP. As redes locais e remotas de computadores são redes IP, um ótimo exemplo é a própria Internet. E quando a informação é entregue ao destino, o sinal digital é novamente convertido em sinal analógico para que possa ser compreendido.

Portanto a ideia básica é estabelecer uma comunicação entre origem e destino através de uma rede IP, e trocar pacotes de dados em tempo real com a informação de áudio (voz), de forma bidirecional.


Voip1.jpg

Configurando um provedor VOIP

Neste tópico estaremos efetuando a configuração de um provedor Voip em nosso asterisk. Para isso iremos utilizar do serviço da Directcall, que possibilita o cadastramento de uma conta de teste, onde teremos alguns minutos gratuitos.

De início, devemos acessar o endereço http://teste.directcallsoft.com/, onde estaremos efetuando o cadastro. Neste site devemos preencher com dados pessoais, e o campo o teste será realizado deve ser preenchida com a opção adaptador sip 2 linhas.

Ao efetuar o cadastro, você receberá no e-mail informado um link para gerar uma senha via sms, e após receberá outro e-mail com informações para continuar a configuração.

Nos é informado que necessitamos do codec g729 para funcionamento da linha de teste. Por padrão, este codec não vem instalado no asterisk, então vamos efetuar o download do arquivo no link:

Codec g729

Agora vamos descompactar o arquivo:

# tar -zxvf codecs-11.tar.gz

Um diretório chamado CODECS será criado. Ao entrarmos vamos verificar que existem 5 arquivos:

Codecg729pasta.jpg


É importante salientar que devemos instalar o codec adequado em relação ao processador utilizado. Em caso de instalação do codec não correspondente, o asterisk deixa de funcionar. Para verificarmos o nosso processador, utilizamos o comando:

# cat /proc/cpuinfo

A saída do comando será neste formato:

Cpuinfo.jpg


O processador utilizado é compatível com sse2, sse3 e sse4, então utilizaremos o arquivo codec_g729-ast110-gcc4-glibc-x86_64-core2-sse4.so. Agora devemos renomear este arquivo para codec_g729.so:

# mv codec_g729-ast110-gcc4-glibc-x86_64-core2-sse4.so codec_g729.so

Agora copiamos o arquivo para /usr/lib64/asterisk/modules:

# cp codec_g729.so /usr/lib64/asterisk/modules/

Devemos alterar a permissão para 755:

# chmod 755 codec_g729.so

Devemos efetuar o carregamento deste codec no asterisk:

# asterisk -vvvr
ubuntu-server*cli> module load codec_g729.so

Agora podemos verificar se o codec está carregado:

ubuntu-server*cli> core show translation

A saída deve retornar os codecs ativos no asterisk, incluindo o g729:

Coreshowtranslation.jpg

Com o codec corretamente instalado, devemos partir para a configuração do arquivo sip.conf de acordo com as instruções do provedor Voip:

Sipconfvoip.jpg

Nosso arquivo deverá ficar desta forma:

Sipconfvoip2.jpg

Podemos dar um sip reload e verificar se o trunk do provedor voip foi registrado:

Registervoip.jpg

Mas ainda não conseguimos utilizar esta linha Voip. Devemos fazer alterações no arquivo extensions.conf para recebimento e efetuar as chamadas na linha fornecida:

Extensionsconfvoip.jpg

O arquivo irá ficar neste formato para receber e efetuar as ligações:

Extensionsconfvoip2.jpg

Podemos efetuar um teste de recebimento, discando para o número fornecido pela DirectCall:

Chamadavoip.jpg

Funcionando!

Mas e para efetuar as chamadas? De acordo com o manual, devemos colocar o código do país e código de área antes do número.

Como podemos ver, criamos uma máscara que aceita qualquer dígito em qualquer quantidade (isso só deve ser efetuado em testes), incluindo antes da extensão discada o código do país.

Podemos efetuar uma ligação para verificar se será efetuada:

Chamadavoip2.jpg

08/05/2018: Asterisk NOW

Aula 22

Avaliação do Docente


Asterisk NOW

O Asterisk NOW pode ser resumido como uma distribuição Linux trazendo por padrão todos os pacotes e configurações necessárias para se ter um servidor Asterisk em plena funcionalidade. Mas não é somente isso. O AsteriskNow é na verdade uma solução VOIP ideal para quem deseja ter um PBX funcional e completo, mas não se sente confiante o suficiente para enfrentar o asterisk e suas linhas de comando. Através de uma interface gráfica amigável o AsteriskNow trás todos os componentes necessários para o seu ideal funcionamento bem como uma simples instalação para principiantes, descartando possíveis incrementos que poderiam, de alguma forma, depreciar a segurança de seu ambiente.

Instalando o Asterisk NOW

O arquivo de instalação pode ser obtido através do site https://www.asterisk.org/downloads/asterisknow.

Para a instalação estaremos utilizando uma máquina virtual com as seguintes configurações:

  • 10 GB de disco rígido;
  • 2048 MB de RAM;
  • 2 Processadores;
  • Placa de rede em modo bridge.

A primeira etapa é dar o nome e escolher o tipo de sistema operacional, do tipo Linux e Other Linux (64-bit):

Asterisknow1.jpg

Quantidade de memória RAM (2048):

Asterisknow2.jpg

Tamanho do disco (10 GB):

Asterisknow3.jpg

Quantidade de processadores (2):

Asterisknow4.jpg

Rede em modo bridge:

Asterisknow5.jpg

Ao iniciar a máquina virtual, a primeira escolha que fazemos é a versão a ser usada. Iremos escolher a versão 13 do Asterisk, Full Install:

Asterisknow6.jpg

Em seguida configuramos a rede, escolhendo se deixamos habilitado o IPv4 e IPv6 e se utilizaremos DHCP ou configuração manual:

Asterisknow7.jpg

A próxima etapa é escolher o local do time zone e se utilizará UTC:

Asterisknow8.jpg

Na sequencia definimos a senha para o root:

Asterisknow9.jpg

Efetuada a instalação, devemos fazer o login com o usuário root e a senha escolhida:

Asterisknow10.jpg

Esta instalação permite utilizarmos o Asterisk na linha de comando, caso necessário, mas vale salientar que é uma versão personalizada. Mas seu real propósito é permitir o acesso via Web, e para isso basta acessar o IP determinado na hora da instalação em um navegador de sua preferência:

Asterisknow11.jpg

Neste primeiro acesso devemos definir um usuário inicial que terá poderes administrativos (com todos os tipos de permissões). No caso deste exemplo utilizaremos o usuário admin com senha admin e e-mail fictício admin@localhost.com.

Logo após a criação do usuário, entramos na tela inicial do AsteriskNOW:

Asterisknow12.jpg

Lembre-se de Habilitar o Firewall do Asterisk NOW, para poder ter acesso SSH à interface. Basta clicar no ícone Configuração do FreePBX e acessar menu Conectividade → Firewall → Habilitar. Clique em Salvar e em seguida clique no botão Reiniciar.

A opção Administração do FreePBX trará opções referentes a configuração do servidor AsteriskNOW (configurações gerais, rotas, etc).

Ramais

O Módulo de Ramais é usado para configurar cada ramal em seu sistema. Neste módulo, você configurará o número do ramal, o nome do ramal, a senha, as configurações de correio de voz para ramal e outras opções.

Para configurar o módulo de Ramais deve-se acessar Administração do FreePBX e posteriormente o menu superior AplicaçõesRamais.

Adicionar Ramal

Para adicionar um novo ramal clique no botão +Adicionar Ramal+Adicionar Nova PJSIP Extensão.

Toda a interface possui ao lado de cada campo um ponto de interrogação(?), que ao passar o mouse sobre ele a interface mostra uma uma breve descrição do respectivo campo.

Para realizarmos os primeiros testes apenas serão configurados os seguintes campos de cada ramal:

Exemplo:

Ramal do Usuário: 5000
Nome de Exibição: Maria
Senha: 123

Clique no botão EnviarAplicar Config.

Após realizar a configuração do novo ramal em um softphone você poderá visualizar se ele esta registrado através da interface gráfica, no menu RelatóriosInfo AsteriskPares.

Rotas de Saída

O Módulo de Rotas de Saída é usado para informar ao seu sistema quais telefones/ramais têm permissão para ligar e através de qual Tronco/linha a chamada será completada. Tendo vários troncos você pode ter maior controle do custo através do roteamento de chamadas sobre o tronco menos oneroso para uma chamada em particular.

Regras de Discagem podem ser usados para retirar os dígitos principais antes de passá-los para um tronco. Isso é mais útil se você usar um código de discagem específico para acessar uma rota específica. Por exemplo, “9” para acessar uma linha externa.

Regras de discagem de saída funcionam em conjunto com regras de discagem de tronco. As regras de discagem de tronco são APENAS usadas para adicionar números ou subtrair números do número que está sendo enviado para o tronco. As regras de discagem de tronco nunca são usadas para permitir ou restringir números que podem ser discados.

Quando você cria uma rota no Asterisk Now ele automaticamente já inclui no plano de discagem!

Para configurar o módulo de Rotas de Saída deve-se acessar menu superior ConectividadeRotas de Saída.

Adicionar Rota de Saída

Para adicionar uma Rota de Saída clique no botão +Adicionar Rota de Saída.

Na aba Padrões de Discagem você cria a(s) regra(s) de discagem para essa rota.

PadraoDiscagem.jpg

Prepend: Será adicionado ao início de uma chamada bem-sucedida. Se o número discado corresponder aos padrões especificados pelas colunas subsequentes, isso será pré-anexado à sequência antes de enviá-lo aos troncos.

Prefixo: É o prefixo a ser removido em uma chamada bem-sucedida. O número discado é comparado a este campo e às colunas subsequentes para uma correspondência (prefixo + padrão de correspondência). Em uma correspondência, esse prefixo é removido (retirado) do número discado antes de enviar a sequência para os troncos.

Padrão de correspondência: O número discado será comparado com o prefixo + este padrão de correspondência. Em uma chamada, a parte do padrão de correspondência do número discado será enviada para os troncos.

CallerID: Se o identificador de chamadas for fornecido, o número discado corresponderá apenas ao prefixo + padrão de correspondência se o identificador de chamadas transmitido corresponder a este. Quando as extensões fazem chamadas de saída, o ID do chamador será o número do ramal e NÃO o CID de saída. As sequências de correspondência especiais acima podem ser usadas para correspondência de identificador de chamadas semelhante a outras correspondências de números.

Veja alguns exemplos em: https://wiki.freepbx.org/display/FPG/Outbound+Routes+Configuration+Examples

Links Interessantes

Exercício

Crie 5 ramais com a faixa destinada para seu usuário;
Crie ramais para o seu celular;
Crie ramais para telefones fixos;
Crie Rotas de Saída e interligue todas estes ramais.


11/05/2018: Asterisk NOW

Aula 23

Avaliação 5

Conteúdos a serem avaliados:

		                           				T	P	N
1. Instalação do Asterisk NOW						4,0	2,0	0,0
2. Criação de 4 ramais dentro da faixa especificada para seu projeto	1,0	0,5	0,0
3. Criação de um ramal com máscara de telefone celular			1,0	0,5	0,0
4. Criação de um ramal com máscara de telefone fixo			1,0	0,5	0,0
5. Criação de planos de discagem pertinentes				1,0	0,5	0,0
6. Configuração do provedor VoiP					2,0	1,0	0,0

15/05/2018: Funções Típicas do PABX

Aula 24

Nesta aula exploraremos as funções típicas configuradas em um PABX e como elas são implantadas no Asterisk. Não basta apenas discar e receber chamadas no seu Asterisk.
Para que um sistema seja aceito pelos usuários diversas funcionalidades precisam ser implantadas.

Suporte aos Recursos

No protocolo SIP, o telefone reina. Asterisk suporta diversos tipos de telefones. Algumas funcionalidades podem ser configuradas no dispositivo SIP, outras no servidor Asterisk. É interessante a padronização do tipo de telefone usado dentro de uma empresa, para que desta maneira seja possível criar um manual único de como utilizar as funções disponíveis.

Sendo assim, alguns recursos são disponibilizados pelo telefone e outros pelo Asterisk. Como exemplo, podemos tomar a transferência de chamadas, alguns telefones suportam esse recurso nativamente, equanto em outros é necessário utilizar o Asterisk para desempenhar essa tarefa.

Recursos.png

Música em Espera

Prepara seu plano de discagem para testar a música em espera: Edite o arquivo /etc/asterisk/extensions.conf e adicione a configuração abaixo dentro do contexto [default]:

exten => 9100,1,Answer()
exten => 9100,n,MusicOnHold(default,30)

Obs.: não esqueça de digitar dialplan reload na console do Asterisk para ativar as alterações realizadas.

Tetes a música em espera padrão discando para o ramal 9100.

Transferência de Chamadas

A transferência de chamadas é um dos recursos essenciais a qualquer PABX. O Asterisk disponibiliza a transferência de chamadas internamente. Por outro lado vários telefones disponibilizam uma transferência baseada no protocolo SIP propriamente dito. Isto pode gerar bastante confusão na hora de ensinar os usuários como fazer uma transferência. A transferência disponibilizada no telefone, normalmente é feita através de um botão específico, normalmente o transfer.

Transferência as cegas

O arquivo extension.conf deverá ser configurado; Para a transferência as cegas ser habilitada deve-se na aplicação DIAL() adicionar o parâmetro"tT"; Pressione "#" durante uma ligação; Digite o ramal para qual deseja transferir; Encerre a ligação; Caso a ligação não seja atendida pelo ramal de destino, o telefone tocará denovo.

Transferência Assistida

Habilita no features.conf. (desabilitada por padrão) Entre no arquivo features.conf e retire o comentário das seguinte linhas:

transferdigittimeout => 5
atxfer => *2

Obs.: não esqueça de digitar reload na console do Asterisk para ativar as alterações realizadas.

Digite *2 para começar a transferência; Disque para o ramal de destino; Converse com o ramal de destino; Encerre a ligação; A transferência é feita.

Estacionamento de Chamadas

É usado para estacionar uma chamada. Isto auxilia quando você está atendendo em um telefone fora da sua sala. Estaciona a chamada em uma determinada extensão e quando se move de volta a sua sala digita a extensão onde a chamada está estacionada.

Por default a extensão 700 é usada para estacionar uma chamada. No meio de uma conversa, pressione # para iniciar uma transferência, então disque 700. O Asterisk irá agora anunciar a extensão do estacionamento, mais provavelmente 701 ou 702. Desligue, e o originador da chamada será colocado em espera na extensão anunciada. Vá para um telefone diferente e disque 701 (a extensão anunciada) e então você pode continuar conversando. Se o originador ficar estacionada por mais tempo que o limite então o Asterisk irá tocar a extensão discada originalmente.

Captura de Chamada

A captura permite que você puxe um chamado de um colega no mesmo grupo de chamadas. Isto evita que você tenha de levantar para atender um telefone do seu vizinho que não para de tocar. Discando *8 você pode capturar uma chamada no seu grupo de chamadas. Este recurso pode ser alterado via arquivo features.conf.

Configure o grupo à que seus ramais pertencem dentro de um dos seguintes arquivos sip.conf (obrigatório).

[1000]
callgroup=1
pickupgroup=1,2

Configure o arquivo features.conf

pickupexten=*8; Configura a extensão de captura. O padrão é *8


18/05/2018: Funções Típicas do PABX - Continuação

Aula 25

Sala de Conferência

Permite que vários usuários falem em conjunto. É implementado como sala de conferência, você escolhe um ramal para ser a sala de conferência e todos os que discarem para lá estão imediatamente conectados. Tem várias opções como senha, por exemplo.

Para habilitar a sala de conferência faz-se necessário configurar 2 arquivos extensions.conf e o aquivo confbridge.conf.

No arquivo extensions.conf adicione ao contexto Default:

;Conferência - Usuário
exten => 666,1,Progress()
exten => 666,2,Wait(1)
exten => 666,3,ConfBridge(1,default_bridge,default_user)
;Conferência - Administrador
exten => 777,1,Progress()
exten => 777,2,Wait(1)
exten => 777,3,ConfBridge(1,default_bridge,admin_user)


No arquivo confbridge.conf descomente as seguintes linhas do arquivo:

[default_user]
type=user
pin=1234
wait_marked=yes
end_marked=yes
music_on_hold_when_empty=yes
announce_user_count=yes 
[default_bridge]
type=bridge
max_members=10

Adicione no arquivo confbridge.conf:

[admin_user]
type=user
pin=5555
marked=yes
admin=yes
music_on_hold_when_empty=yes
announce_user_count=yes

Note que foram criados 2 usuários, sendo o primeiro o administrador da sala e um segundo, default_user, o usuário do tipo convidado que escutará música até que o moderador entre na sala.

Teste de conferência

Após configurar dois softphones, tente efetuar duas ligações para os ramais 666 e outra para o ramal 777. Note que o administrador, ao discar para o ramal 777, deverá digitar o PIN 5555#, enquanto o convidado deverá discar 666 e o PIN 1234#.

22/05/2018: Monitorando o servidor

Aula 26

Zabbix

Zabbix foi criado por Alexei Vladishev, e atualmente é desenvolvido ativamente e suportado pela Zabbix SIA.

Zabbix é uma solução open source de monitoração para empresas. Zabbix é um software que monitora varios parametros de rede de computadores e saúde e integridade de servidores.

Zabbix usa um mecanismo de notificação flexível tha permite os usuários configurarem alerta de e-mail baseado em praticamente qualquer evento.

Isto permite uma rápida reação para problemas em servidores. Zabbix oferece Zabbix é um software que monitora vários parâmetros de uma rede; a saúde e a integridade dos servidores.

O Zabbix usa um mecanismo de notificação flexível que permite aos usuários configurar e-mail alertas baseados em praticamente todos os eventos.

Isto permite uma reação rápida aos problemas do servidor. Zabbix oferece relatórios e visualização de dados com excelentes características baseado nos dados armazenados.

Isso faz do Zabbix ideal para o planejamento de capacidade.

Zabbix suporta polling e trapping. Todos os relatórios Zabbix e estatísticas, bem como os parâmetros de configuração, são acessados através de uma ferramenta Web que é o front-end do produto.

Uma ferramenta web assegura que o status da rede e da saúde dos servidores pode ser avaliado a partir de qualquer localização.

Devidamente configurado, Zabbix pode desempenhar um papel importante no controle da infra-estrutura de TI. Isto é igualmente verdadeiro para as pequenas organizações com poucos servidores e para as grandes empresas com muitos servidores.

O Zabbix é gratuito e é desenvolvido e distribuído de acordo com a GPL General Public License versão 2.

Isso significa que seu código-fonte é distribuído gratuitamente e está disponível para o público em geral.

O suporte comercial está disponível e é fornecido pela Zabbix Company.


Requisitos mínimos para instalação

Os requisitos de hardware mínimos para instalação do Zabbix são:

  • 128 MB de RAM;
  • 256 MB de espaço em disco;
  • Processador Pentium II.


Lembrando que estes requisitos irão aumentar de acordo com a quantidade de hosts e serviços monitorados pelo Zabbix.

No que diz respeito a requisitos de software são necessários:

  • Apache 1.3.12;
  • PHP 5.4.0;
  • PHP GD 2.0;
  • libXML 2.6.15;
  • Extensões PHP (bcmath, ctype, xmlreader, xmlwriter, session, sockets, mbstring, gettext, ibm_db2*, mysqli*, oci8*, pgsql*, sqlite3*);
  • MySQL* 5.0.3;
  • Oracle* 10g;
  • PostgreSQL* 8.1;
  • SQLite* 3.3.5;
  • IBM DB2* 9.7.

(* Devese escolher um BD para instalação)


Pacotes opcionais:

  • OpenIPMI - Monitoramento via IPMI;
  • libssh2 - Verificação direta via SSH;
  • fping - Monitoramento simples;
  • libcurl - Monitoramento Web;
  • libiksemel -nSuporte a envio de alertas via mensageiro instantâneo;
  • libxml2 - Monitoramento Vmware;
  • net-snmp - Monitoramento via SNMP.


Instalação

A instalação do Zabbix é suportada em ambientes Linux e Unix. No ambiente Windows só é suportado o agente. Inicialmente devemos incluir alguns repositórios no arquivo sources.list, então iremos excluir o conteúdo e adicionar as linhas abaixo:

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://br.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://br.archive.ubuntu.com/ubuntu/ trusty universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty universe
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://br.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://br.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://br.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse 

deb http://br.archive.ubuntu.com/ubuntu/ trusty-security main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-security main restricted
deb http://br.archive.ubuntu.com/ubuntu/ trusty-security universe
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-security universe
deb http://br.archive.ubuntu.com/ubuntu/ trusty-security multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ trusty-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the 


Após incluir, devemos atualizar os repositórios:

# apt-get update


Antes da instalação do Zabbix, devemos instalar as dependências necessárias:

# apt-get -y install build-essential snmp vim libssh2-1-dev libssh2-1 
# apt-get -y install libopenipmi-dev libsnmp-dev wget libcurl4-gnutls-dev fping 
# apt-get -y install libxml2 libxml2-dev curl libcurl3-gnutls libcurl3-gnutls-dev 
# apt-get -y install libiksemel-dev libiksemel-utils libiksemel3

# apt-get -y install python-software-properties

# add-apt-repository -y ppa:webupd8team/java

# apt-get update

# apt-get -y install oracle-java8-installer oracle-java8-set-default

# apt-get install -y apache2 php5 php5-mysql libapache2-mod-php5 php5-gd 

# apt-get -y install php-net-socket libpq5 libpq-dev mysql-server mysql-client libmysqld-dev


OBS.: Durante a instalação do MySQL será pedido para você informar a senha de root do MySQL. Informe a senha e não esqueça dela, pois será útil mais adiante.

Caso o seu Apache apresente o erro Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message, devemos efetuar aseguinte configuração:

# vim /etc/apache2/conf-available/servername.conf (este comando irá criar o arquivo servername.conf).


Incluir no arquivo a seguinte linha:

ServerName localhost


Aplicar os comandos a seguir:

# a2enconf servername

# service apache2 reload

O repositório de download da versão utilizada está no link a seguir:

http://repo.zabbix.com/zabbix/3.5/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.5-1%2Btrusty_all.deb


Podemos baixar utilizando o comando:

# wget http://repo.zabbix.com/zabbix/3.5/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.5-1%2Btrusty_all.deb

Este arquivo contém o repositório do Zabbix, que será incluído em /etc/apt/source.list.d/.

Para instalar, executamos o comando:

# dpkg -i Nome_do_pacote.deb


Posteriormente devemos carregar a lista via comando:

# apt-get update


Estamos prontos para efetuar a instalação do Zabbix no servidor:

# apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-get


Caso hava alguma dependência restante, será incluuída na instalação.

Partimos para a configuração do Mysql. Vamos acessar com o usuário root:

# mysql -uroot -p


Então criamos a base de dados onde o Zabbix irá aramazenar as informações, com os parametros necessários para podermos utilizar caracteres especiais:

mysql> create database zabbix character set utf8 collate utf8_bin;


Também daremos acesso ao usuário zabbix, com a senha zabbix na base criada:

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';


Podemos sair da console do Mysql:

mysql> quit;


Neste momento devemos popular nossa base de dados do Zabbix, ou seja, dar a carga inicial para que a base possa ser utilizada:

# cd /usr/share/doc/zabbix-server-mysql

# zcat create.sql.gz | mysql -uzabbix -p zabbix (será pedido a senha do usuário zabbix).


Podemos verificar se a tabela foi criada:

# mysql -uzabbix -p

mysql> show databases;
mysql> use zabbix;

mysql> show tables;


Devemos agora efetuar algumas alterações para que o serviço do Zabbix seja iniciado corretamente. Alteramos o arquivo zabbix_server.conf e definir os parâmetros de acesso ao banco de dados:

# vim /etc/zabbix/zabbix_server.conf


Adicionamos o seguinte conteúdo (procure os parâmetros no arquivo e descomente e altere o que for necessário):

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix


e podemos iniciar o serviço do Zabbix server:

# service zabbix-server start


O PHP no apache também deve ser configurado. Para isso iremos efetuar alterações no arquivo zabbix.conf que está em /etc/apache2/conf-available/:

# vim /etc/apache2/conf-available/zabbix.conf


Iremos descomentar a linha onde existe o seguinte texto:

php_value date.timezone Europe/Riga


Alterando para:

php_value date.timezone America/Sao_Paulo


Caso você tenha dúvidas qual timezone setar nesta linha, utilize o comando a seguir:

# timedatectl list-timezones | grep America


Utilize o que mais se adequa a sua região.


Após efetuar as configurações, reiniciamos o Apache:

# service apache2 restart


Neste ponto podemos acessar a interface web do Zabbix para prosseguir com a instalação. Para isso vamos utilizar o navegador de sua preferência e digitar http://<host>/zabbix (troque o <host> pelo ip do servidor).

Zabbix1.jpg

Basta clicar em next step e verificar se está marcando como tudo ok.

No segundo passo devemos colocar a senha definida no usuário zabbix do banco de dados.

No terceiro passo definimos os detalhes do servidor. Vamos incluir o nome do servidor. Paraeste caso vamos definir pji4.

Vai ser mostrado o detalhamento das escolhas que efetuamos e podemos concluir, caso tudo esteja de acordo.

Será apresentado uma tela de login, para acessarmos o servidor. O usuário padrão é Admin (primeira letra maiúscula) e a senha zabbix.

Ao efetuar o login, podemos alterar o idioma para português. Para tanto, vá em Administration, Users. Clique no usuário Admin e selecione o idioma Portuguese (pt_BR). Clique em Update e posteriormente em Apply.

Zabbix2.jpg

Iremos ativar o nosso primeiro host a ser monitorado, o próprio servidor. Devemos ir em Configuração, Hosts, e lá veremos o nosso servidor, com o status inativo. Para ativarmos, basta clicarmos em Inativo. Será perguntado se realmente queremos ativar, damos um ok.

Zabbix3.jpg


Criando grupos de hosts e templates

Podemos resumir a definição de host como sendo qualquer elemento de sua rede que possua um IP e tenha capacidade de comunicação com o Zabbix, seja através de coletas ativas ou passivas. Exemplos comuns de hosts são: (servidores, estações de trabalho, switches, roteadores, etc).

Criar os hosts é uma das primeiras tarefas de monitoração no Zabbix. Por exemplo, se você deseja monitorar alguns parâmetros em um servidor “X”, você precisa primeiramente criar um host chamado, digamos: “Servidor X” e adicionar itens a serem monitorados nele.

Os hosts são organizados dentro de grupos de hosts e todo host deverá participar de, no mínimo, um grupo.

Já um template é um conjunto de entidades que pode ser associadas de forma fácil e conveniente a vários hosts.

As entidades podem ser:

  • Itens
  • Triggers
  • Gráficos
  • Aplicações
  • Telas (desde o Zabbix 2.0)
  • Regras de autobusca (LLD) (desde o Zabbix 2.0)
  • Cenários web (desde o Zabbix 2.2)

Como na vida real vários hosts são idênticos (sob a ótica de monitoração) ou muito similares, é natural que exista um conjunto de entidades (itens, triggers, gráficos,…) que você vai criar em um host, mas servirá também para vários outros.

É claro que você pode copiar as entidades entre os hosts, mas isso gera um bocado de trabalho manual.

Com o uso de templates tal processo é simplificado ao simplesmente associar um host a um template, com isso o Zabbix já irá copiar todo o perfil de monitoração necessário para o host.

Os templates também podem ser usados (e normalmente o são) para agrupar conjuntos comuns de monitoração para aplicações ou serviços específicos (tal qual o Apache, MySQL, PostgreSQL, Postfix…) e são associados de forma cumulativa nos hosts.

Outro benefício do uso de templates é que se for necessária a modificação de um determinado perfil de monitoração (por exemplo adicionar uma nova métrica de monitoração em todos os servidores Apache) isso poderá ser feito no nível do template que todos os hosts associados serão alterados em conjunto.

Assim, o uso de templates é um excelente recurso para reduzir a sobrecarca de trabalho e garantir ambientes monitorados de forma padronizada.

O Zabbix já possui alguns grupos de hosts e templates previamente criados. Para localizá-los, vá em Configuração, Grupo de hosts.

Zabbix4.jpg


Para criarmos um novo grupo de hosts, clique em Criar grupos de hosts e definimos o nome do grupo. No nosso caso iremos definir o nome como pji4.

Zabbix5-0.jpg


Agora iremos criar um novo template. Clique em Templates, Criar templates e defina o nome do template. Neste caso, iremos dar o nome de template_pji4 e o nome visível de Template pji4. Devemos definir o grupo, pois é um campo obrigatório. Clique em Selecionar e escolha a opção Templates.

Zabbix6.jpg


Após a criação do template pji4, podemos associar outros templates a esse novo template. Iremos associar o Template OS Linux. Clique no Template pji4, vá na opção Associado aos templates, clique em Selecionar e encontre o Template OS Linux.


Criando um host

Para adicionarmos um host, devemos ir em Configuração, Hosts e clicar em Criar Host. Vamos definir o nome do host, que será Servidor Asterisk, vamos associar ao grupo pji4 e incluiremos o template criado anteriormente, Template pji4.


Criando itens

Os itens são a forma que o Zabbix utiliza para receber dados de um host.

Uma vez que você configure um host, você precisará adicionar itens para iniciar a coleta de dados.

Um item é uma métrica individual. Uma forma de adicionar rapidamente vários itens é criar templates com itens pré-definidos e associar o host ao template.

Para otimizar a performance do ambiente é recomendável que testes em itens de templates utilizados por muitos hosts não sejam feitos diretamente.

Recomendamos que o template seja clonado e testado contra um host individual antes da modificação ser feita diretamente em um template que seja utilizado por muitos hosts.

A cada item você pode definir o tipo de dado que será coletado do host.

Por isso você precisa utilizar uma chave de item. Então um item com a chave system.cpu.load irá coletar informação sobre a carga do processador, enquanto um item com a chave net.if.in coletará informação sobre o tráfego de entrada.

Para definir parâmetros específicos da chave, você deverá incluí-los entre colchetes.

Então a chave system.cpu.load[avg5] retornará informação sorbe a carga média do processador nos últimos 5 minutos, enquanto net.if.in[eth0]retornará o tráfego de entrada apenas da interface 'eth0'.


Para criarmos um item, iremos em Configuração, Hosts, Itens, Criar item.

Caso criarmos um item sem um template definido, será utilizado somente no Host em questão.

Definimos o nome do item, Carga Sistema, o tipo será Agente zabbix, no campo chave irá aparecer alguns itens de acordo com a seleção efetuada anteriormente.

Vamos monitorar a carga da cpu, escolhendo system.cpu.load.

O campo entre chaves é opcional, então, neste momento iremos apagar o conteúdo.

O tipo de informação será Numérico (fracionário), pois se trata do campo load gerado no comando Top.

No campo Nova aplicação iremos colocar Performance.

Vamos criar um novo item, chamado Utilização de CPU, o tipo será Agente zabbix, no campo chave irá aparecer alguns itens de acordo com a seleção efetuada anteriormente.

Vamos monitorar a carga da cpu, escolhendo system.cpu.util.

No campo Nova aplicação iremos colocar Performance.