PJI4-2018-2

De MediaWiki do Campus São José
Revisão de 16h01min de 31 de agosto de 2018 por Ederson.luiz (discussão | contribs) (31/08/2018: Callback)
Ir para: navegação, pesquisa

Índice

Projeto Integrador IV

Professores: Ederson Luiz de Souza Santos (ederson.luiz@ifsc.edu.br) e Mayara de Sousa (mayara.sousa@ifsc.edu.br)
Encontros: 2a feira/19:00, 6a feira/19:00
Atendimento paralelo: 2a, 3a, 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-2

PPC Curso Técnico Subsequente de Telecomunicações


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
    

27/07/2018: Apresentação da disciplina

Aula 1

Arquivo apresentação da disciplina

Apresentação da disciplina 2018-2

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.


30/07/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


Instalando Sistema Operacional

Sistemas operacionais baseados em Linux já foram complicados de usar, ao menos quando comparados ao Windows, mas avanços recentes têm deixado a plataforma mais amigável. No Linux, você vai encontrar alguns programas com os quais está acostumado, como Firefox, Chrome e outros. A maioria, entretanto, não está disponível porque o Linux possui uma comunidade de desenvolvedores que cria, gratuitamente, programas equivalentes para o OS. Não há Photoshop, por exemplo, mas há o GIMP. Não há Microsoft Office, mas há o LibreOffice. Não há Lightroom, mas há o Darktable. Alguns dos programas não são tão bons quanto os disponíveis para Windows, mas por outro lado alguns são até melhores. Cabe a você experimentar. Você não vai precisar digitar nenhum comando complexo ou adquirir conhecimento avançado prévio para fazer isso, mas o processo é longo e varia um pouquinho de computador para computador. É possível que você mexa com certas coisas que nunca viu. Este processo (e o sistema Ubuntu) é utilizado por milhões de pessoas no mundo.

Iremos utilizar um software de virtualização chamado Virtualbox. o Virtualbox é fornecido pela Oracle, de forma gratuita. Caso você queira instalar o Virtualbox no seu computador, pode baixar deste site. Lembre-se de baixar a versão adequada para o seu sistema operacional, juntamente com o Extension Pack (software adicional para suporte a diversos dispositivos do seu computador).

Para a criação da máquina virtual, deixaremos com a seguinte configuração:

  • 1500 MB de Ram;
  • 30 GB de espaço em disco;
  • 2 processadores;
  • 32 MB de memória de vídeo;
  • Habilitar aceleração 3D;
  • Placa de rede em modo bridge.
Virtualbox.jpg

A versão do sistema operacional que utilizaremos é o Ubuntu Mate 14.

Ao iniciar a instalação, a primeira etapa é a escolha do idioma e se queremos somente experimentar o Ubuntu ou instalar.

a próxima etapa nos dá algumas orientações e também permite escolhermos se queremos baixar atualizações e instalar programas de terceiros.

Logo após, teremos que escolher entre a opção de apagar o disco inteiro de forma automatizada pelo instalador ou marcar a opção avançada. Neste momento iremos utilizar a opção de apagar o disco inteiro, pois estaremos entrando nos detalhes de particionamento, sistema de arquivos e tipos de partição em outra aula.

Também escolhemos o local onde estamos.

Devemos definir o layout do teclado.

E por fim, escolhemos o nome, nome do computador, nome de usuário e senha.

Agora é só aguardar...

Ubuntumateinstanlado.jpg

Terminada a instalação do sistema operacional, devemos instalar alguns pacotes necessários para que a nossa máquina virtual possa ser utilizada em modo de tela cheia. Para tanto iremos utilizar o terminal do mate e digitar os comandos a seguir:

  • sudo apt-get update
  • sudo apt-get install build-essential module-assistant dkms
  • sudo m-a prepare

Após esta instalação, podemos clicar em Dispositivos, e ir na opção Inserir imagem de CD dos adicionais para convidado e executar a aplicação que irá abrir.


Instalação do Asterisk


Neste semestre iremos trabalhar com o Asterisk versão 13.22.0, o LibPRI 1.6.0, 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 uuid-dev libjansson-dev
# apt-get install -y mysql-server libmysqld-dev

Para baixar os arquivos do Asterisk, DAHDI e LibPRI, seguem os links abaixo (os comandos para a instalação completa do Asterisk, Libpri, Dahdi e banco de dados serão repassados em aula):

Asterisk 13.22.0
LibPRI 1.6.0
DAHDI

Campos para o banco de dados:

Arquivo banco de dados



03/08/2018: Término da Instalação, Configurando conta Google (Google drive e Google Documents) e criando Relatório

Aula 3

Configurando a conta Google

Para a criação do relatório, que será utilizado no decorrer do semestre e deve ser entregue ao término da primeira etapa da disciplina, iremos utilizar ferramentas online. Para tanto, faremos uso de uma conta do Google e das ferramentas Google Drive e Google Documents.

Caso não tenha uma conta Google, deve criar a mesma. Pode usar este link.

Depois de criada a conta, acesse o Google Drive:

Googledrive.jpg

Vamos garantir que sua conta fique com o idioma em português. Para isso, clique no botão Configurações e vá na opção Configurações:

Googledriveconf.jpg

Vá em Idioma e Alterar configurações de idioma.

Clique no lápis ao lado do Idioma, mesmo que esteja em Português, escolha novamente o idioma e clique em selecionar. Caso apareça uma mensagem abaixo avisando que nem todas as ferramentas estão no idioma escolhido, clique para atualizar em todas.

Googledriveconf2.jpg

Dentro do Google Drive, crie uma pasta com o nome PJI 4.

Entre na pasta, clique com o botão direito e escolha a opção Documentos Google.

Googledrive2.jpg

No topo da página que irá se abrir, coloque o nome do documento. Deverá se chamar Relatório PJI4 - Nome completo do aluno.

Googledrive3.jpg

Procure no Google um logo do IFSC, para ser colocada no cabeçalho do documento.

Clique duas vezes no cabeçalho, marque a opção Cabeçalho/Rodapé diferente na primeira página e cole a imagem escolhida logo em seguida.

Clique fora do cabeçalho, troque a fonte para Arial, tamanho 24, negrito, centralizado e espaçamento entre linhas de 1,5.

Aperte 4 vezes o enter e digite Projeto Integrador IV.

Aperte 3 vezes o enter e digite Curso Técnico Subsequente de Telecomunicações.

Aperte uma vez o enter e altere a fonte para Arial, tamanho 12.

Aperte 4 vezes o enter e digite Professores: Ederson Luiz de Souza Santos e Mayara de Sousa

Aperte o enter e digite Aluno: Nome completo

Aperte o enter é chegar a última linha da página e digite São José, 2018

A página deve ficar como na imagem:

Googledrive4.jpg


Agora iremos criar uma quebra de página. Ela serve para não desconfigurar as páginas seguintes caso mudemos algum espaçamento nas páginas anteriores. Para isso aperte as teclas Ctrl + enter.

Esta página ficará disponível para o sumário, que será gerado automaticamente.

Aperte Novamente Ctrl + enter.

Altere a fonte para Arial, tamanho 12, negrito e alinhado a esquerda.

Digite INTRODUÇÃO, com todas as letras maiúsculas. Este será nosso título 1. Neste ponto, iremos utilizar uma função chamada de Estilos. Clique na caixa Estilos, vá em Título 1, clique na seta ao lado dela e clique na opção Atualizar título para corresponder. Esta opção irá definir o Título 1 com as configurações de texto que acabamos de definir. Os próximos títulos que estiverem no mesmo nivel hierárquico utilizaremos esta função.

Googledrive5.jpg

Aperte duas vezes o enter.

Digite algum texto, só para ter como referência. Altere a fonte para Arial, tamanho 12, sem negrito, alinhamento justificado e recuo da primeira linha em 1,25 cm.

Selecione o texto e vá em Estilos, texto normal, clique na seta ao lado e escolha a opção Atualizar texto normal para corresponder. Irá definir como o texto deverá ficar.

Googledrive6.jpg

Aperte Ctrl + enter.

Digite DESENVOLVIMENTO e posteriormente aplique o estilo Título 1. Veja que ficou igual a INTRODUÇÃO.

Aperte duas vezes o enter e digite algum texto para referência. Aplique o estilo Texto Normal.

Aperte duas vezes o enter e digite SUBTÍTULO 1 em maiúsculo. A fonte deve ser Arial, tamanho 12, sem negrito, sem recuo de primeira linha e alinhamento justificado.

Selecione o SUBTÍTULO 1 e vá em Estilos, Título 2 e Atualizar título 2 para corresponder.

Googledrive7.jpg

Aperte duas vezes o enter e digite algum texto de referência. Aplique o estilo Texto normal.

Aperte duas vezes o enter e digite Subtítulo 1.1. A fonte deve ser Arial, tamanho 12, sem negrito, sem recuo de primeira linha e alinhamento justificado.

Selecione o Subtítulo 1.1 e vá em Estilos, Título 3 e Atualizar título 3 para corresponder.

Googledrive8.jpg

Aperte duas vezes o enter e digite algum texto de referência. Aplique o estilo Texto normal.

Aperte duas vezes o enter e digite Subtítulo 1.1.1 A fonte deve ser Arial, tamanho 12, sem negrito, sem recuo de primeira linha e alinhamento justificado.

Selecione o Subtítulo 1.1.1 e vá em Estilos, Título 4 e Atualizar título 4 para corresponder.

Googledrive9.jpg

Aperte Ctrl + enter.

Digite CONCLUSÃO e posteriormente aplique o estilo Título 1. Veja que ficou igual a INTRODUÇÃO.

Clique duas vezes no cabeçalho, vá em Inserir, Cabeçalho e número da página, Número da página e clique no segundo botão da primeira fileira. Alinhe o número da página a direita e aperte uma vez o enter para o número descer um pouco.

Googledrive10.jpg

Agora retorne a segunda página, onde iria ficar o nosso sumário. Deixe o cursor na primeira linha. Clique em Inserir, Sumário, Com número de página.

Googledrive11.jpg

Pronto!!! Agora você possui um modelo de como o Relatório deverá ficar, com as configurações ajustadas.

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

Aula 4

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.

10/08/2018: Plano de discagem e máscaras

Aula 5

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.


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

13/08/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, neste link:

Baixe os arquivos de som:

# wget -O core.zip https://www.asterisksounds.org/pt-br/download/asterisk-sounds-core-pt-BR-sln16.zip
# wget -O extra.zip https://www.asterisksounds.org/pt-br/download/asterisk-sounds-extra-pt-BR-sln16.zip


Arquivo Convert deve conter os comandos abaixo:

#!/bin/bash
for a in $(find . -name '*.sln16'); do
sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t gsm -r 8k `echo $a|sed "s/.sln16/.gsm/"`;\
sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e a-law `echo $a|sed "s/.sln16/.alaw/"`;\
sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e mu-law `echo $a|sed "s/.sln16/.ulaw/"`;\
done



17/08/2018: Utilização de Macros. Planos de discagem em arquivos externos

Aula 7

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 externos

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/08/2018: Habilitando gravação de chamadas

Aula 8

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

[macro-record]
exten => s,1,NoOP(${CALLERID(num)})
exten => s,n,Set(ARG1=${CALLERID(num)})
exten => s,n,Set(CALLFILENAME=CHANNEL-${ARG1}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n,Set(TIME=${STRFTIME(${EPOCH},,%Y%m%d)})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/${TIME}/${CALLFILENAME}${TRANSFER}.wav49,${BRIDGE}a)
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,Set(CDR(monitor)=${CALLFILENAME}${TRANSFER}.WAV)


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 2

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 2 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)



Avaliação 3

Deve ser entregue o relatório parcial, via Sigaa, com todo o conteúdo visto até o momento. Serão avaliados os seguintes itens:

  1. Conteúdo;
  2. Organização;
  3. Metodologia (formatação do conteúdo de acordo com o que foi passado em aula).

O relatório deve ser entregue até as 23:59 de 20/08/2018.


24/08/2018: Criando uma URA

Aula 9

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

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


Exercício

  1. Crie uma URA com os seguintes ramais:
  • 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;
  • Comercial;
  • Vendas: Deverá existir uma ramal para vendas de equipamentos e um ramal para vendas de serviços e softwares;
  • Administrativo.
  • Caso a pessoa não digite nada, a chamada deverá ser direcionada para a telefonista.

Deverá existir um áudio para orientar a pessoa que estiver ligando para o número que contém a URA e as subURAs.

27/08/2018: Criando uma URA - Continuação

Aula 10

Continuação da aula do dia 24/08/2018.

31/08/2018: Callback

Aula 11

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.


Exercício

  1. Crie uma rotina de Callback que o usuário ligue para o número 9900 para que a função seja ativada.
  2. O número que irá responder deve ser o 9901.
  3. O Callback deve ser protegido por senha.
  4. Após a digitação da senha, deve ser tocada uma mensagem Por favor entre com o numero a ser discado (procure opções em /var/lib/asterisk/sounds/pt-br usando o comando play).

Links úteis

Aplicação Authenticate