Mudanças entre as edições de "PJI4-2019-1"
(59 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 325: | Linha 325: | ||
<div style="text-align: center;">[[Arquivo:virtualbox.jpg]]</div><br/> | <div style="text-align: center;">[[Arquivo:virtualbox.jpg]]</div><br/> | ||
− | A versão do sistema operacional que utilizaremos é o Ubuntu Mate | + | A versão do sistema operacional que utilizaremos é o Ubuntu Mate 16.04. |
Ao iniciar a instalação, a primeira etapa é a escolha do idioma e se queremos somente experimentar o Ubuntu ou instalar. | Ao iniciar a instalação, a primeira etapa é a escolha do idioma e se queremos somente experimentar o Ubuntu ou instalar. | ||
Linha 350: | Linha 350: | ||
Após esta instalação, podemos clicar em <b>Dispositivos</b>, e ir na opção <b>Inserir imagem de CD dos adicionais para convidado</b> e executar a aplicação que irá abrir. | Após esta instalação, podemos clicar em <b>Dispositivos</b>, e ir na opção <b>Inserir imagem de CD dos adicionais para convidado</b> e executar a aplicação que irá abrir. | ||
− | |||
===<b>Instalação do Asterisk</b>=== | ===<b>Instalação do Asterisk</b>=== | ||
Linha 1 110: | Linha 1 109: | ||
− | Ao finalizar a avaliação, compacte todos os arquivos utilizados(sip.conf, extensions.conf, arquivos de áudios utilizados na URA e demais arquivos que venha a utilizar) para desenvolver a avaliação. Após a compactação, envie este arquivo via sigaa. '''A tarefa ficará aberta até o dia 03/04/2019 as 22h'''. | + | Ao finalizar a avaliação, compacte todos os arquivos utilizados(relatório.pdf, sip.conf, extensions.conf, arquivos de áudios utilizados na URA e demais arquivos que venha a utilizar) para desenvolver a avaliação. Após a compactação, envie este arquivo via sigaa. '''A tarefa ficará aberta até o dia 03/04/2019 as 22h'''. |
Linha 1 123: | Linha 1 122: | ||
</font> | </font> | ||
{{Collapse bottom | Aula 14}} | {{Collapse bottom | Aula 14}} | ||
+ | |||
+ | =08/04/2019: Callback= | ||
+ | |||
+ | {{Collapse top | Aula 15}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:callback1.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | 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: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:callback2.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | E disponibilizar um número para receber as ligações e encaminhar para o callback: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:callback3.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | O nosso extension.conf irá ficar neste formato: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:callback4.jpg]]</div><br/> | ||
+ | |||
+ | 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=== | ||
+ | |||
+ | # Crie uma rotina de Callback que o usuário ligue para o número 9900 para que a função seja ativada. | ||
+ | # O número que irá responder deve ser o 9901. | ||
+ | # O Callback deve ser protegido por senha. | ||
+ | # 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'''). | ||
+ | # Incorpore o Callback na URA que você fez na aula anterior, fazendo com que a pessoa digite um número dentro da URA para chamar o Callback. | ||
+ | |||
+ | ===Links úteis=== | ||
+ | |||
+ | [https://www.asteriskguru.com/tutorials/authenticate.html Aplicação Authenticate] | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 14}} | ||
+ | |||
+ | =15/04/2019: Filas de Atendimento= | ||
+ | |||
+ | {{Collapse top | Aula 16}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:filaasterisk.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | '''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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:queuesconf.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | E também editar o arquivo extensions.conf, definindo o ramal 7000 para nossa fila de atendimento: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:extensionsfila.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | 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: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:queuesshow.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | ===Exercício=== | ||
+ | |||
+ | # Crie duas filas de atendimento, com pesos diferentes; | ||
+ | # Cada fila deverá ter 2 ramais; | ||
+ | # Deverá existir um ramal em comum nas duas filas. | ||
+ | # Configure as filas para que possam ser direcionadas através da URA(efetuada nas aulas anteriores). | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 16}} | ||
+ | |||
+ | =17/04/2019: Voicemail= | ||
+ | |||
+ | {{Collapse top | Aula 17}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:ssmtp.conf.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | 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 | ||
+ | Subject: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. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:voicemailconf.jpg]]</div><br/> | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zonemessages.jpg]]</div><br/> | ||
+ | |||
+ | * 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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:voicemailconf2.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | 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): | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:voicemailconf3.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | Também devemos chamar a aplicação VoiceMailMain nos ramais que irão usar esta funcionalidade: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:voicemailconf4.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | No arquivo sip.conf definimos o mailbox, juntamente com a descrição do ramal: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:voicemailconf5.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | 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> 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 | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 17}} | ||
+ | |||
+ | =22/04/2019: Funções Típicas do PABX= | ||
+ | |||
+ | {{Collapse top | Aula 18}} | ||
+ | <font size="3"> | ||
+ | |||
+ | 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.<br/>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. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:recursos.png]]</div><br/> | ||
+ | |||
+ | ===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. | ||
+ | |||
+ | O arquivo responsável pelas configuração do estacionamento de chamadas é o res_parking.conf e esta localizado em /etc/asterisk. | ||
+ | |||
+ | |||
+ | 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. | ||
+ | |||
+ | <!--contexto=default - deverá ser editado no arquivo. --> | ||
+ | |||
+ | ===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 | ||
+ | |||
+ | |||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 18}} | ||
+ | |||
+ | =24/04/2019: Funções Típicas do PABX - Continuação= | ||
+ | |||
+ | {{Collapse top | Aula 19}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ==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#. | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 19}} | ||
+ | |||
+ | =29/04/2019: Provedor VOIP= | ||
+ | |||
+ | {{Collapse top | Aula 20}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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. | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:voip1.jpg]]</div><br/> | ||
+ | |||
+ | ===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 (verificar a versão do Asterisk e versão do processador): | ||
+ | |||
+ | [http://asterisk.hosting.lv/ Codec g729] | ||
+ | |||
+ | |||
+ | É 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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:cpuinfo.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | O processador utilizado é compatível com sse2, sse3 e sse4, então utilizaremos o arquivo codec_g729-ast130-gcc4-glibc2.2-x86_64-core2-sse4.so. Agora devemos renomear este arquivo para codec_g729.so: | ||
+ | |||
+ | # mv codec_g729-ast130-gcc4-glibc2.2-x86_64-core2-sse4.so codec_g729.so | ||
+ | |||
+ | Agora copiamos o arquivo para /usr/lib64/asterisk/modules: | ||
+ | |||
+ | # cp codec_g729.so /usr/lib/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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:coreshowtranslation.jpg]]</div><br/> | ||
+ | |||
+ | Com o codec corretamente instalado, devemos partir para a configuração do arquivo sip.conf de acordo com as instruções do provedor Voip: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:sipconfvoip.jpg]]</div><br/> | ||
+ | |||
+ | Nosso arquivo deverá ficar desta forma: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:sipconfvoip2.jpg]]</div><br/> | ||
+ | |||
+ | Podemos dar um sip reload e verificar se o trunk do provedor voip foi registrado: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:registervoip.jpg]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:extensionsconfvoip.jpg]]</div><br/> | ||
+ | |||
+ | O arquivo irá ficar neste formato para receber e efetuar as ligações: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:extensionsconfvoip2.jpg]]</div><br/> | ||
+ | |||
+ | Podemos efetuar um teste de recebimento, discando para o número fornecido pela DirectCall: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:chamadavoip.jpg]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:chamadavoip2.jpg]]</div><br/> | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 20}} | ||
+ | |||
+ | =06/05/2019: Entroncamento entre centrais= | ||
+ | |||
+ | {{Collapse top | Aula 21}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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). No caso, a central 1 tem ramais na faixa 1000, e a central 2 tem ramais na faixa 2000 | ||
+ | |||
+ | A configuração do ramal do arquivo sip.conf na central 1 ficará assim: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:entroncamento2.jpg]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:entroncamento3.jpg]]</div><br/> | ||
+ | |||
+ | |||
+ | 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 | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:entroncamento4.jpg]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | exten => _2XXX,1,Noop(LigacaoEntreServidores 1 e 2) | ||
+ | exten => _2XXX,n,Macro(record) | ||
+ | exten => _2XXX,n,Dial(SIP/300/${EXTEN},30) | ||
+ | exten => _2XXX,n,Hangup() | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Além disso, na central 2 também devemos criar uma rota de entrada para receber esta ligação: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:entroncamento6.jpg]]</div><br/> | ||
+ | |||
+ | Efetuado o reload do extensions.conf, podemos testar: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:entroncamento7.jpg]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | exten => _1XXX,1,Noop(LigacaoEntreServidores 2 e 1) | ||
+ | exten => _1XXX,n,Macro(record) | ||
+ | exten => _1XXX,n,Dial(SIP/400/${EXTEN},30) | ||
+ | exten => _1XXX,n,Hangup() | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Fazendo o reload no arquivo extensions.conf, podemos testar: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:entroncamento9.jpg]]</div><br/> | ||
+ | |||
+ | ===Exercícios=== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | Efetue o entroncamento visto nesta aula com pelo menos uma central disponível no laboratório. | ||
+ | |||
+ | </font> | ||
+ | |||
+ | {{Collapse bottom | Aula 21}} | ||
+ | |||
+ | =13/05/2019: Asterisk NOW= | ||
+ | |||
+ | {{Collapse top | Aula 22}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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 https://www.asterisk.org/downloads/asterisknow]. | ||
+ | |||
+ | Para a instalação estaremos utilizando uma máquina virtual com as seguintes configurações: | ||
+ | |||
+ | * 20 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): | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:asterisknow1.jpg]]</div><br/> | ||
+ | |||
+ | Quantidade de memória RAM (2048): | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:asterisknow2.jpg]]</div><br/> | ||
+ | |||
+ | Tamanho do disco (20 GB): | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv3.jpg]]</div><br/> | ||
+ | |||
+ | Quantidade de processadores (2): | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv4.jpg]]</div><br/> | ||
+ | |||
+ | Rede em modo bridge: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv5.jpg]]</div><br/> | ||
+ | |||
+ | Ao inicializar a máquina com a ISO do Asterisk NOW, o instalador começará com um prompt para selecionar o Asterisk e a versão do FreePBX que você deseja instalar: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv6.jpg]]</div><br/> | ||
+ | |||
+ | Agora, seremos perguntados com qual método de vídeo queremos trabalhar: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv7a.jpg]]</div><br/> | ||
+ | |||
+ | A próxima etapa é a certificação de que caso haja algum dado na máquina, ele será perdido: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv8.jpg]]</div><br/> | ||
+ | |||
+ | O instalador irá iniciar, mas você verá que a senha de root não está definida. Você precisará clicar na caixa de senha de root para definir sua senha de root. O processo de instalação não pode ser concluído até que isso seja feito. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv9.jpg]]</div><br/> | ||
+ | |||
+ | Definir senha de root: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv10.jpg]]</div><br/> | ||
+ | |||
+ | Quando a instalação estiver 100% concluída, você terá uma opção de reinicialização, conforme mostrado abaixo. Clique em REBOOT e o seu sistema estará instalado. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv11.jpg]]</div><br/> | ||
+ | |||
+ | Quando o processo estiver concluído, você acessará o login do prompt do console / comando do Linux. Você pode fazer login aqui usando o nome de usuário "root" sem aspas e a senha root que você selecionou anteriormente. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv12.jpg]]</div><br/> | ||
+ | |||
+ | Após efetuar o login, você deverá ver o endereço IP do seu PBX, conforme mostrado abaixo. Anote esse endereço IP, pois você precisará dele na próxima etapa. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:mv13.jpg]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:asterisknow11.jpg|1000px]]</div><br/> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:asterisknow12.jpg|1000px]]</div><br/> | ||
+ | |||
+ | '''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ções'' → ''Ramais''. | ||
+ | |||
+ | ====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 ''Enviar'' → ''Aplicar 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órios'' → ''Info Asterisk'' → ''Pares''. | ||
+ | |||
+ | ===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 ''Conectividade'' → ''Rotas 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. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:PadraoDiscagem.jpg|1000px]]</div><br/> | ||
+ | |||
+ | '''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=== | ||
+ | |||
+ | * [https://wiki.freepbx.org/display/FPG/PBX+GUI+Home Wiki FreePBX] | ||
+ | |||
+ | ===Exercício=== | ||
+ | |||
+ | # Crie 5 ramais com a faixa destinada para seu usuário;<br/> | ||
+ | # Crie ramais para o seu celular;<br/> | ||
+ | # Crie ramais para telefones fixos;<br/> | ||
+ | # Crie Rotas de Saída e interligue todas estes ramais.<br/><br/> | ||
+ | |||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 22}} | ||
+ | |||
+ | =20/05/2019: Asterisk NOW= | ||
+ | |||
+ | {{Collapse top | Aula 23}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===Exercicio=== | ||
+ | |||
+ | # Configuração do provedor VoiP. | ||
+ | # Configure uma URA(222) com pelo menos dois níveis. No último nível a opção 1 chame o grupo 1 e opção 2 chame o grupo 2. | ||
+ | |||
+ | Links úteis:<br/> | ||
+ | http://www.ttsdemo.com/<br/> | ||
+ | https://www.apowersoft.com.br/gravador-de-audio-online-gratis<br/> | ||
+ | https://online-audio-converter.com/pt/<br/> | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 23}} | ||
+ | |||
+ | =22/05/2019: Monitorando o servidor= | ||
+ | |||
+ | {{Collapse top | Aula 24}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ===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 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. | ||
+ | |||
+ | ===Instalação=== | ||
+ | |||
+ | |||
+ | A instalação do Zabbix é suportada em ambientes Linux e Unix. No ambiente Windows só é suportado o agente. | ||
+ | |||
+ | Podemos baixar o Zabbix utilizando o comando: | ||
+ | <font size="1"> | ||
+ | # wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+xenial_all.deb | ||
+ | </font> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | |||
+ | Agora estamos prontos para Instalar o Zabbix Servidor, Agente e o Web Frontend: | ||
+ | |||
+ | # apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent | ||
+ | |||
+ | |||
+ | Caso haja alguma dependência restante, será incluí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á armazenar as informações, com os parâmetros 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. Você será solicitado a inserir sua senha recém-criada. | ||
+ | |||
+ | # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix | ||
+ | |||
+ | |||
+ | Podemos verificar se a tabela foi criada: | ||
+ | |||
+ | # mysql -uzabbix -p | ||
+ | |||
+ | mysql> show databases; | ||
+ | |||
+ | mysql> use zabbix; | ||
+ | |||
+ | mysql> show tables; | ||
+ | |||
+ | |||
+ | Neste momento precisamos configurar o banco de dados para o servidor Zabbix, alteramos o arquivo /etc/zabbix/zabbix_server.conf | ||
+ | |||
+ | # vim /etc/zabbix/zabbix_server.conf | ||
+ | |||
+ | |||
+ | Procuramos o parâmetro DBPassword e adicionamos a senha de acesso ao banco Zabbix. | ||
+ | |||
+ | DBPassword=zabbix | ||
+ | |||
+ | |||
+ | Configure o PHP para o Web Frontend do Zabbix. Edite o arquivo /etc/zabbix/apache.conf. | ||
+ | |||
+ | # vim /etc/zabbix/apache.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 adéqua a sua região. | ||
+ | |||
+ | |||
+ | Inicie os processos do servidor e agente do Zabbix: | ||
+ | # systemctl restart zabbix-server zabbix-agent apache2 | ||
+ | |||
+ | |||
+ | Inicie os processos do servidor e do agente do Zabbix para que inicie na inicialização do sistema: | ||
+ | # systemctl enable zabbix-server zabbix-agent apache2 | ||
+ | |||
+ | |||
+ | Agora seu servidor Zabbix está FUNCIONANDO! | ||
+ | |||
+ | 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). | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zabbix1.jpg|700px]]</div><br/> | ||
+ | |||
+ | 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. Para este 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'''. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zabbix2.jpg|700px]]</div><br/> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zabbix3.jpg|700px]]</div><br/> | ||
+ | |||
+ | |||
+ | ====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'''. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zabbix4.jpg|700px]]</div><br/> | ||
+ | |||
+ | |||
+ | 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 '''Grupo pji4'''. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zabbix5-0.jpg|700px]]</div><br/> | ||
+ | |||
+ | |||
+ | 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'''. Devemos definir o grupo, pois é um campo obrigatório. Clique em '''Selecionar''' e escolha a opção '''Templates'''. | ||
+ | |||
+ | <div style="text-align: center;">[[Arquivo:zabbix6.jpg|700px]]</div><br/> | ||
+ | |||
+ | |||
+ | 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 '''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'''. | ||
+ | |||
+ | |||
+ | Para testarmos o Zabbix, utilizaremos comandos para stresse do computador, contidos no link abaixo: | ||
+ | |||
+ | while true; do { echo -n "scale=1000;"; seq 1 2 200 | xargs -n1 -I{} echo '(16*(1/5)^{}/{}-4*(1/239)^{}/{})';} | paste -sd-+ | bc -l; done; | ||
+ | |||
+ | ou | ||
+ | |||
+ | [https://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz Download do stress-test] | ||
+ | |||
+ | [http://www.dicas-l.com.br/arquivo/efetuando_stress-test_em_servidores_unix..php#.W9IT7GVKjmg Efetuando stress-test em servidores] | ||
+ | </font> | ||
+ | {{Collapse bottom | Aula 24}} | ||
+ | |||
+ | =27/05/2019: Monitorando o servidor- continuação= | ||
+ | |||
+ | {{Collapse top | Aula 25}} | ||
+ | |||
+ | {{Collapse bottom | Aula 25}} | ||
+ | |||
+ | =29/05/2019: Definindo Projeto Final= | ||
+ | |||
+ | {{Collapse top | Aula 26}} | ||
+ | <font size="3"> | ||
+ | |||
+ | '''IMPORTANTE''' | ||
+ | |||
+ | |||
+ | 29/05/2019 - Início do desenvolvimento do projeto final. | ||
+ | |||
+ | |||
+ | 02/06/2019 - Entrega do relatório. O arquivo deve ser enviado via tarefa no '''SIGAA''', até as 23:59, em formato '''PDF''' (Não será aceito outro formato). | ||
+ | |||
+ | |||
+ | 03/07/2019 - Última data para apresentação do projeto final. | ||
+ | |||
+ | |||
+ | 08/07/2019 - Prova de Recuperação. | ||
+ | |||
+ | |||
+ | |||
+ | '''GRUPOS''' | ||
+ | |||
+ | <div style="text-align: left;">[[Arquivo:grupoFinal.png|700px]]</div><br/> | ||
+ | |||
+ | Grupo 1 - Faixa de Ramais 1000 - Troncos 100 e 101<br/> | ||
+ | Grupo 2 - Faixa de Ramais 2000 - Troncos 200 e 201<br/> | ||
+ | Grupo 3 - Faixa de Ramais 3000 - Troncos 300 e 301<br/> | ||
+ | |||
+ | |||
+ | '''Todas as configurações/orientações abaixo deverão ser efetuadas no computador de cada integrante do grupo.''' | ||
+ | |||
+ | |||
+ | # Instalação de uma NOVA máquina virtual - Efetuar a instalação do ubuntu Mate 16.04 na máquina virtual GRÁFICO 4. | ||
+ | # Proceder com a instalação do Asterisk 13.22.0. | ||
+ | # Instale o áudio em português. | ||
+ | # Instalar as dependências e o banco de dados MySQL e proceda com a criação da tabela com os campos necessários para efetuar a coleta dos dados. | ||
+ | # Crie a aplicação para identificação do Ramal. Tente deixar seus arquivos o mais organizado possível. (faça uso de arquivos separados do arquivo extensions.conf) | ||
+ | # Faça a criação de 20 ramais dentro da faixa já estipulada para cada aluno. | ||
+ | # Configure pelo menos um ramal utilizando ATA ou telefone IP. | ||
+ | # Configure ao menos 5 números para telefones fixos. | ||
+ | # Configure ao menos 5 números para telefones celulares. | ||
+ | # Crie uma regra que faça com que a central telefônica ao efetuar chamadas de longa distância(Fixo e Móvel) utilize obrigatoriamente a operadora fictícia 028. | ||
+ | # Crie os planos de discagem para estes ramais juntamente com Caixa Postal com envio para o e-mail, Música em Espera, Transferência de Chamadas, Estacionamento de Chamadas, Captura de Chamadas e a Gravação de Chamadas. | ||
+ | # Crie uma Sala de Conferência. | ||
+ | # Crie CallBack. | ||
+ | # Crie pelo menos DUAS URAs com 5 opções e seus respectivos direcionamentos. | ||
+ | # Crie pelo menos duas Filas de Atendimento com prioridades diferente. | ||
+ | # Crie uma conta de provedor VoiP de sua escolha e direcione as ligações de saída para este provedor. | ||
+ | # Faça a interligação ao menos duas centrais pertencentes ao grupo. | ||
+ | # Instale e configure o Zabbix para monitorar o servidor Asterisk. | ||
+ | # Configure o idioma português no Zabbix. | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 26}} |
Edição atual tal como às 19h12min de 29 de maio de 2019
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, 4a feira/19:00
Atendimento paralelo: 2a, 3a, 4a feira 17:30 h
Coordenadoria pedagógica (Graciane): graciane@ifsc.edu.br (3381-2890, 3381-2842)
Endereço encurtado: http://bit.ly/pji4-2019-1
PPC Curso Técnico Subsequente de Telecomunicações
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
11/02/2019: Apresentação da disciplina
Aula 1 |
---|
Arquivo apresentação da disciplinaApresentação da disciplina 2019-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
Configurando a conta GooglePara 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: 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: 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. 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. No topo da página que irá se abrir, coloque o nome do documento. Deverá se chamar Relatório PJI4 - Nome completo do aluno. 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:
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. 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. 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. 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. 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. 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. 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. Pronto!!! Agora você possui um modelo de como o Relatório deverá ficar, com as configurações ajustadas.
|
13/02/2019: 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.
Instalando Sistema OperacionalSistemas 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:
A versão do sistema operacional que utilizaremos é o Ubuntu Mate 16.04. 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... 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:
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 AsteriskNeste 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 Campos para o banco de dados:
|
18/02/2019: Instalação do Sistema Operacional Ubuntu 16.04.5 e reinstalação do Asterisk e banco de dados
Aula 3 |
---|
... |
20/02/2019: 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.
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
#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall.sh
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start firewall.sh at boot time
# Description: Enable service provided by firewall.sh.
### END INIT INFO
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
set -e
echo "Starting firewall..."
IPT="/sbin/iptables"
iptables -I INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
iptables -I INPUT -p udp -m udp --dport 5060 -j ACCEPT
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.
|
25/02/2019: Plano de discagem e máscaras
Aula 5 |
---|
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.
Leituras que podem ser úteis: |
27/02/2019: Plano de discagem e máscaras - continuação
Aula 6 |
---|
|
06/03/2019: Liberação de portas, Aplicações e instalação de áudio em português
Aula 7 |
---|
Liberação de portasPreparando o servidor para liberação de portas para autenticação dos ramais e efetuar chamadas, caso necessário 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. Para isso iremos criar um script de firewall no diretório /etc/init.d/ com o nome de firewall. Neste arquivo colocaremos o seguinte conteúdo: #!/bin/sh ### BEGIN INIT INFO # Provides: firewall # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start firewall at boot time # Description: Enable service provided by firewall. ### END INIT INFO iptables -I INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5060 -j ACCEPT 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. 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, 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
#!/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 AvaliaçãoDeve ser entregue o relatório parcial, via Sigaa, com todo o conteúdo visto até o momento. Serão avaliados os seguintes itens:
O relatório deve ser entregue até as 23:59 de 10/03/2019, em formato PDF (não serão considerados outros formatos).
|
11/03/2019: Utilização de Macros. Planos de discagem em arquivos externos
Aula 8 |
---|
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 arquivos externoso 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.
|
13/03/2019: Habilitando gravação de chamadas
Aula 9 |
---|
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. [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)
Exercício 1
Exercício 2Você 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?
|
20/03/2019: Criando uma URA
Aula 10 |
---|
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 add-apt-repository ppa:audio-recorder/ppa 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 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:
Exercício
Deverá existir um áudio para orientar a pessoa que estiver ligando para o número que contém a URA e as subURAs.
|
25/03/2019: Criando uma URA - Continuação
Aula 11 |
---|
|
27/03/2019: Criando uma URA - Continuação
Aula 12 |
---|
|
01/04/2019: Avaliação
Aula 13 |
---|
|
03/04/2019: Avaliação - Continuação
Aula 14 |
---|
|
08/04/2019: 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.
Exercício
Links úteis
|
15/04/2019: 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
Exercício
|
17/04/2019: Voicemail
Aula 17 |
---|
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
Instalando o SSMTP para envio dos e-mailsVoce deve instalar o aplicativo ssmtp, através do comando: # apt-get install ssmtp Editar o arquivo ssmtp.conf, que fica /etc/ssmtp:
root:seuemail@gmail.com:smtp.gmail.com:587
Permitindo acesso não seguro via GmailVá 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 Subject:Seu cabeçalho seu texto Depois disso, aperte ctrl + d para enviar Configurando o arquivo voicemail.confO 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.
A sessão default irá conter os ramais que terão a funcionalidade ativada, juntamente com a senha, descrição e e-mail:
ubuntu-server*cli> dialplan reload ubuntu-server*cli> sip reload ubuntu-server*cli> 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
|
22/04/2019: Funções Típicas do PABX
Aula 18 |
---|
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. Suporte aos RecursosNo 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. Música em EsperaPrepara 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 ChamadasA 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 cegasO 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 AssistidaHabilita 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. O arquivo responsável pelas configuração do estacionamento de chamadas é o res_parking.conf e esta localizado em /etc/asterisk.
Captura de ChamadaA 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
|
24/04/2019: Funções Típicas do PABX - Continuação
Aula 19 |
---|
Sala de ConferênciaPermite 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)
[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ênciaApó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#.
|
29/04/2019: Provedor VOIP
Aula 20 |
---|
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 (verificar a versão do Asterisk e versão do processador):
# cat /proc/cpuinfo A saída do comando será neste formato:
# mv codec_g729-ast130-gcc4-glibc2.2-x86_64-core2-sse4.so codec_g729.so Agora copiamos o arquivo para /usr/lib64/asterisk/modules: # cp codec_g729.so /usr/lib/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:
|
06/05/2019: Entroncamento entre centrais
Aula 21 |
---|
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). No caso, a central 1 tem ramais na faixa 1000, e a central 2 tem ramais na faixa 2000 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: exten => _2XXX,1,Noop(LigacaoEntreServidores 1 e 2)
exten => _2XXX,n,Macro(record)
exten => _2XXX,n,Dial(SIP/300/${EXTEN},30)
exten => _2XXX,n,Hangup()
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: exten => _1XXX,1,Noop(LigacaoEntreServidores 2 e 1)
exten => _1XXX,n,Macro(record)
exten => _1XXX,n,Dial(SIP/400/${EXTEN},30)
exten => _1XXX,n,Hangup()
Fazendo o reload no arquivo extensions.conf, podemos testar: Exercícios
|
13/05/2019: Asterisk NOW
Aula 22 |
---|
Asterisk NOWO 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 NOWO 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:
A primeira etapa é dar o nome e escolher o tipo de sistema operacional, do tipo Linux e Other Linux (64-bit): Quantidade de memória RAM (2048): Tamanho do disco (20 GB): Quantidade de processadores (2): Rede em modo bridge: Ao inicializar a máquina com a ISO do Asterisk NOW, o instalador começará com um prompt para selecionar o Asterisk e a versão do FreePBX que você deseja instalar: Agora, seremos perguntados com qual método de vídeo queremos trabalhar: A próxima etapa é a certificação de que caso haja algum dado na máquina, ele será perdido: O instalador irá iniciar, mas você verá que a senha de root não está definida. Você precisará clicar na caixa de senha de root para definir sua senha de root. O processo de instalação não pode ser concluído até que isso seja feito. Definir senha de root: Quando a instalação estiver 100% concluída, você terá uma opção de reinicialização, conforme mostrado abaixo. Clique em REBOOT e o seu sistema estará instalado. Quando o processo estiver concluído, você acessará o login do prompt do console / comando do Linux. Você pode fazer login aqui usando o nome de usuário "root" sem aspas e a senha root que você selecionou anteriormente. Após efetuar o login, você deverá ver o endereço IP do seu PBX, conforme mostrado abaixo. Anote esse endereço IP, pois você precisará dele na próxima etapa. 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: 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: 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). RamaisO 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ções → Ramais. Adicionar RamalPara 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 Enviar → Aplicar 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órios → Info Asterisk → Pares. Rotas de SaídaO 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 Conectividade → Rotas de Saída. Adicionar Rota de SaídaPara 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. 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 InteressantesExercício
|
20/05/2019: Asterisk NOW
Aula 23 |
---|
Exercicio
Links úteis:
|
22/05/2019: Monitorando o servidor
Aula 24 |
---|
ZabbixZabbix 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 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çãoOs requisitos de hardware mínimos para instalação do Zabbix são:
InstalaçãoA instalação do Zabbix é suportada em ambientes Linux e Unix. No ambiente Windows só é suportado o agente. Podemos baixar o Zabbix utilizando o comando: # wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+xenial_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
# apt-get update
# apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent
Partimos para a configuração do Mysql. Vamos acessar com o usuário root: # mysql -uroot -p
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';
mysql> quit;
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# mysql -uzabbix -p mysql> show databases; mysql> use zabbix; mysql> show tables;
# vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix
# vim /etc/zabbix/apache.conf
php_value date.timezone Europe/Riga
php_value date.timezone America/Sao_Paulo
# timedatectl list-timezones | grep America Utilize o que mais se adéqua a sua região.
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2
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). 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. Para este 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. 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.
Criando grupos de hosts e templatesPodemos 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:
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.
Criando um hostPara 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 Grupo pji4 e incluiremos o template criado anteriormente, Template pji4. Criando itensOs 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'.
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.
while true; do { echo -n "scale=1000;"; seq 1 2 200 | xargs -n1 -I{} echo '(16*(1/5)^{}/{}-4*(1/239)^{}/{})';} | paste -sd-+ | bc -l; done; ou |
27/05/2019: Monitorando o servidor- continuação
Aula 25 |
---|
29/05/2019: Definindo Projeto Final
Aula 26 |
---|
IMPORTANTE
GRUPOS Grupo 1 - Faixa de Ramais 1000 - Troncos 100 e 101
|