PJI4-2018-1
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
- Implantar um PABX IP integrado com serviços de telefonia fixa e móvel convencionais.
- Prover a infraestrutura de rede necessária para o adequado funcionamento deste PABX IP.
- Integrar os serviços de telefonia com outros serviços de rede.
Links interessantes
- VoIP Hacking Techniques
- Asterisk não é um SIP proxy
- FoneRNP
- SwitchVox: PBX virtual
- Net Fone da Embratel é VoIP, mas não usa SIP
- Estatísticas sobre VoIP no mundo
- Sinalização R2 (E1)
Provedores VoIP no Brasil
Resumo de comandos da CLI para o Asterisk
- 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
- Conectar à CLI do Asterisk carregado
asterisk -r rasterisk
- Comandos na CLI
- Saindo da CLI sem interromper o processo
exit
- Carrega canais SIP previamente registrados
sip reload
- Mostra canais SIP registrados
sip show peers
- Carrega plano de discagem
dialplan reload
- Mostra a extensão criada no plano de discagem
dialplan show default
- Finalizando processo no Asterisk
sudo core stop now
- Ver aplicações disponíveis no Asterisk
core show applications
- Saindo da CLI sem interromper o processo
- Iniciando Asterisk em modo Background
sudo service asterisk start
- Carregar o Asterisk em modo ForeGround
sudo asterisk -gc
16/02/2018: Apresentação da disciplina
Aula 1 |
---|
Arquivo apresentação da disciplinaApresentação da disciplina 2018-1 Projeto Integrador IVO 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.
PBX IPUm 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.
PBX IP Asterisk
Características Básicas: faz tudo que um PABX pequeno e simples faz e pouco mais
|
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. 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.
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 Campos para o 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.
sip set debug on sip reload: Reload No arquivo: sip.conf
iax2 set debug on iax2 show channels: Visualizar canais ativos do Tipo IAX
Preparar o servidor para liberar portas
Iniciando a configuração dos ramais
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:
[general]
static e writeprotect – permite salvar o plano de discagem a partir da linha de comando. Também devemos criar um contexto que já foi pré definido no ramal criado. No nosso caso se chamará default:
As aplicações mais comuns no Asterisk são:
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 discagemO 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:
ContextosOs 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] [visitantes]
ExtensõesO 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. 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)
exten => _20XX,1,Dial(SIP/${EXTEN})
Aplicações básicas do AsteriskAnswer – Atende uma chamada. 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.
8000 – numérica Máscaras _ - início de uma máscaras 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.
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
Leituras que podem ser úteis: |
06/03/2018: Aplicações e instalação de áudio em português
Aula 6 |
---|
AplicaçõesAs 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:
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:
Agora necessitamos incluir a aplicação no contexto definido no arquivo sip.conf. Devemos recordar que este contexto se chama default:
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:
|
09/03/2018: Instalação do Asterisk e Banco de Dados - Troca de Laboratório
Aula 7 |
---|
Avaliação 02
|
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 DAHDIDAHDI 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 LibpriLibPRI 1.4.15 # tar -zxvf libpri1.4.5.tar.gz entrar no diretório criado e efetuar os seguintes comandos: # make # make install MacrosMacros 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 arquivoso 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
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 RecordComo 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: 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. 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
Avaliação 3Você 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:
|
23/03/2018: Habilitando gravação de chamadas - Continuação
Aula 11 |
---|
|
27/03/2018: Criando uma URA
Aula 12 |
---|
O conceito de URAIdealizada 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 URAPara 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):
Criando arquivo de áudio para a URAPara 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: 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 URANeste 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: 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: 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: 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:
|
03/04/2018: Criando uma URA - Continuação
Aula 13 |
---|
Avaliação 4Crie uma URA com os seguintes ramais:
|
06/04/2018: Criando uma URA - Continuação
Aula 14 |
---|
|
10/04/2018: Callback
Aula 15 |
---|
CallbackCallBack é 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:
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/
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 atendimentoAs 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:
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
musicclass = default ; é classe utilizada para a música de espera strategy = ringall ; é definido o tipo de estratégia que será utilizada pelas filas.
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).
# ubuntu-server*cli> queue reload all
# ubuntu-server*cli> dialplan reload
|
17/04/2018: Planejamento do projeto final
Aula 17 |
---|
Planejamento inicial projetoEsta aula será para definir o planejamento inicial do seu projeto final.
|
20/04/2018: Entroncamento entre centrais
Aula 18 |
---|
Definindo o que é um entroncamentoAtravé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 servidoresInicialmente 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:
Ainda no arquivo sip.conf teremos que acrescentar um parâmetro no contexto general: insecure=invite,port
Na central 2 também devemos criar um ramal fora da faixa utilizada, no sip.conf:
Central 1: register => 400:123@192.168.1.205 (lembre de substituir pelo ip da central 2) Onde:
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 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: Além disso, na central 2 também devemos criar uma rota de entrada para receber esta ligação: Efetuado o reload do extensions.conf, podemos testar: 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: Fazendo o reload no arquivo extensions.conf, podemos testar:
Exercícios
|
24/04/2018: Voicemail
Aula 19 |
---|
VoicemailAs 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 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.
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
|
27/04/2018: Provedor VOIP
Aula 12 |
---|
Tecnologia VOIP – Voz sobre IPVoz 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.
Configurando um provedor VOIPNeste 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: 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:
# cat /proc/cpuinfo A saída do comando será neste formato:
# 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: Com o codec corretamente instalado, devemos partir para a configuração do arquivo sip.conf de acordo com as instruções do provedor Voip: Nosso arquivo deverá ficar desta forma: Podemos dar um sip reload e verificar se o trunk do provedor voip foi registrado: 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: O arquivo irá ficar neste formato para receber e efetuar as ligações: Podemos efetuar um teste de recebimento, discando para o número fornecido pela DirectCall: 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:
|