MIEEC | 2014/2015
Serviços de Comunicações
Índice
Introdução ........................................................................................................................ 2
Instalação ......................................................................................................................... 2
Configurações ................................................................................................................... 3
Criação de extensões ..................................................................................................... 3
Voicemail .................................................................................................................. 4
Conferências ..................................................................................................................5
Videochamadas ............................................................................................................. 6
Trunks ........................................................................................................................... 6
Filas de espera............................................................................................................... 9
Mensagens de Texto..................................................................................................... 11
Interactive Voice Response (IVR)................................................................................ 12
Restrições ..................................................................................................................... 14
Conclusão ........................................................................................................................ 14
Referências ...................................................................................................................... 15
Trabalho Laboratorial 5 – Asterisk
1
MIEEC | 2014/2015
Serviços de Comunicações
Introdução
Este trabalho foi realizado no âmbito da unidade curricular de Serviços de
Comunicações da Faculdade de Engenharia da Universidade do Porto e teve como
principais objectivos a introdução ao sistema Asterisk, aos IP PBX e às várias
funcionalidades fornecidas pelos mesmos.
Para tal, procedeu-se à configuração de dois IP PBX baseados em Asterisk,
usando a distribuição Linux FreePBX, disponibilizada pela organização de mesmo nome,
baseada em CentOS e com o Asterisk pré-instalado bem como outros componentes. O
objectivo mínimo a cumprir era o de uma chamada entre duas extensões em PBXs
diferentes ser efectuada com sucesso. Para além dessa funcionalidade, foram
implementadas muitas outras, incluíndo IVR, mensagens de vídeo, chamadas
conferência, entre outras.
O objectivo deste relatório é essencialmente mostrar as funcionalidades
implementadas e as configurações necessárias para as implementar. São também
apresentadas algumas demonstrações do bom funcionamento de certas funcionalidades.
No entanto, como isso também já foi feito na demonstração prática, este relatório não se
foca em demonstrar extensivamente o bom funcionamento das funcionalidades
implementadas.
Instalação
Para a implementação do Asterisk, optamos por utilizar a distribuição fornecida
pelo FreePBX. Criou-se uma máquina virtual (na Oracle VM VirtualBox) em cada um dos
nossos computadores pessoais e procedeu-se à instalação da imagem do FreePBX
(http://downloads.freepbxdistro.org/ISO/FreePBX-64bit-6.12.65.iso).
Após
um
processo de instalação comum em que é necessário fornecer uma password para o
utilizador root o sistema está pronto a funcionar.
De forma a evitar o inconveniente de estar dependente dos IP’s fornecidos pelo
DHCP e do estado da rede eduroam, configuramos ainda uma rede nossa, com NAT, e
definimos os IP’s com que os servidores PBX arrancam no startup script para a interface
eth0, localizado em /etc/sysconfig/network-scripts/ifcfg-eth0.
Trabalho Laboratorial 5 – Asterisk
2
MIEEC | 2014/2015
Serviços de Comunicações
Para tudo funcionar correctamente foi ainda necessário colocar as máquinas
virtuais em bridge, nas respectivas definições.
Configurações
Nesta secção são referidos os passos necessários e algumas das configurações
utilizadas para implementar com sucesso os nossos IP PBX e as suas funcionalidades
adicionais. Todas estas configurações foram sobretudo realizadas com recurso à GUI
fornecida pelo FreePBX no browser. Só algumas vezes é que foi necessário editar
directamente os ficheiros de configuração.
Criação de extensões
A identidade fundamental de um PBX são as extensões que são o equivalente a
um número de telefone num PBX convencional. Uma extensão está associada a um
utilizador e um utilizador pode possuir várias extensões.
Para criar uma nova extensão, na interface gráfica, acede-se a Applications ->
Extensions e de seguida selecciona-se “Add Extension”, como se pode ver nas imagens:
Figura 1 – Criação de extensões
De seguida selecciona-se o tipo de dispositivo, sendo que o “Generic CHAN SIP
Device” foi o tipo de dispositivo mais utlizado por nós. No entanto, experimentamos
também criar do tipo IAX2 para verificar se tinha alguma vantagem. O desempenho no
entanto foi bastante semelhante entre os dois tipos.
Trabalho Laboratorial 5 – Asterisk
3
MIEEC | 2014/2015
Serviços de Comunicações
Figura 2 – Selecção do tipo de dispositivo
Uma extensão tem um grande número de opções de configuração sendo que a
maioria delas são opcionais. É no entanto obrigatório seleccionar pelo menos o número
da extensão e um “secret”. Será com estes dados que nos conseguiremos registar num
softphone para utilizar a extensão criada.
Figura 3 – Atribuição de um número a uma extensão
Ao criar as extensões fomos também criando utilizadores para associarmos as
extensões. No menu das extensões existe a opção de associar uma extensão a um
utilizador existente ou criar um novo. Outro campo importante a definir é o nome com
que as chamadas de uma extensão aparecem na chamada, que nas nossas configurações
fizemos corresponder ao nome do utilizador associado.
Voicemail
O voicemail é outra funcionalidade que pode ser configurada no menu de
criação/edição de uma extensão.
Para configurar o voicemail, basta activar a devida opção no menu da extensão.
E configurar um código PIN. Além disso, activamos a opção de enviar os próprios
voicemails como anexos para um endereço de e-mail.
Trabalho Laboratorial 5 – Asterisk
4
MIEEC | 2014/2015
Serviços de Comunicações
Figura 4 - Opções de configuração do Voicemail
Para depois aceder ao voicemail basta marcar *98, indicar a mailbox (que
corresponde ao nº da extensão) e o PIN.
Conferências
Uma situação de conferência pode-se alcançar de duas formas. Uma é, após se ter
uma ligação estabelecida entre duas extensões, um utilizador convida outra extensão
para a conversa através do software do seu softphone. Isto depende apenas do softphone
utilizado e não requer nenhuma configuração adicional.
Outra opção é criar uma extensão especial para uma Conferência em Applications
-> Conferences. Para aceder a esta conferência basta marcar o número da extensão como
se se tratasse de uma extensão normal. No entanto, todas as extensões que marcarem o
nº da conferência poderão comunicar simultaneamente uns com os outros.
Podem ser definidas muitas opções adicionais para as conferências como código
PIN, limite de utilizadores, administrador, música em espera, gravação da conferência e
Trabalho Laboratorial 5 – Asterisk
5
MIEEC | 2014/2015
Serviços de Comunicações
muitas outras. São todas bastantes simples de implementar no respectivo menu da
interface gráfica e portanto, apesar de estarmos conscientes destas opções, achamos mais
produtivo experimentar outras coisas mais complicadas. [1]
Videochamadas
Para um PBX passar a suportar videochamadas, basta editar as configurações de
SIP e IAX. Em Settings -> Asterisk SIP Settings -> Chan SIP o que fizemos foi selecionar
as opções “No NAT”; “Public IP” e fazer “Enable” ao Video Support. Adicionalmente,
seleccionamos todos os codecs de vídeo para garantir máxima compatibilidade e
aumentamos a bitrate máxima.
Para o suporte de vídeo também em IAX fez-se algo semelhante nas configurações
do IAX.
Trunks
Criou-se um Trunk para interligar os dois IP PBX implementados. Desta forma é
possível às extensões de um PBX comunicarem com as extensões do outro PBX. O Trunk
escolhido foi do tipo IAX (Inter-Asterisk eXchange) para maximizar a estabilidade, uma
vez que este protocolo foi pensado para ser usado entre dois PBX Asterisk em detrimento
do SIP.
Figura 5 – Configurações básicas de um Trunk
Trabalho Laboratorial 5 – Asterisk
6
MIEEC | 2014/2015
Serviços de Comunicações
O Trunk mostrado neste exemplo foi criado no System1 para fazer a ligação com
o System2. O System1 tem como número externo o número 20000 e o Sistem2 tem como
número externo o 21000. O CallerID escolhido foi por isso o "Num20" para identificar o
System1.
Figura 6 – Configuração das Outgoing e das Incoming Settings
Após preencher as configurações básicas do trunk é necessário configurar as
incoming e as outgoing settings. São elas que vão definir, primeiro o sucesso da ligação
entre os dois IP PBX e depois a forma como o tráfego é trocado entre eles.
As configurações de Peer e User são necessárias. Em Peer foram preenchidas as
informações que este sistema (System1) teria de introduzir para se ligar ao System2
(username e password) assim como os detalhes do PBX: IP e tipo. Em context,
configura-se a forma como as chamadas que vêm do trunk devem ser tratadas: devem
ser tratadas como se fossem chamadas externas, tendo de passar pelas rotas "incoming".
Para o que quisemos fazer com o trunk não foi necessário introduzir mais nenhum
Trabalho Laboratorial 5 – Asterisk
7
MIEEC | 2014/2015
Serviços de Comunicações
parâmetro. Contudo, nestes detalhes é possível introduzir uma grande quantidade de
regras para definir o funcionamento do trunk.
Em User Details, configuraram-se as informações que o System2 envia para este
sistema (System1). Estas informações são aquelas definidas no System2 no campo das
Outgoing Settings.
Nas Outbound Routes definem-se as rotas de saída. São estas rotas que vão
utilizar os trunks criados. No nosso caso criou-se a rota "InterOfficetoSystem2":
Figura 7 – Configuração de uma rota de saída
A rota foi criada apenas com 20000 como CallerID externo, de acordo com o
número exterior escolhido, para que qualquer chamada feita pelo trunk aparecesse como
vinda do número externo e não de uma extensão específica. Escolheu-se Music On Hold
personalizada.
Trabalho Laboratorial 5 – Asterisk
8
MIEEC | 2014/2015
Serviços de Comunicações
Figura 8 – Dial Patterns
Por fim, é preciso definir os Dial Patterns que vão utilizar a rota criada. No nosso
caso, o objectivo era que cada PBX tivesse as suas próprias extensões numeradas
independentemente do outro PBX. Para uma extensão de um PBX ligar para uma
extensão no outro, teria de marcar antes da extensão um prefixo que identificasse o PBX.
Como esta rota serve para estabelecer a ligação ao System2 (com número externo
21000), definiu-se que quando fosse marcado um número da forma 21XXX, a outbound
route utilizada seria esta e o trunk utilizado seria o System2, criado anteriormente para
ligar ao System2. O 21 foi definido como prefixo, o que significa que pelo trunk apenas
vai o número XXX, o prefixo é retirado antes de enviar a chamada pelo trunk. O número
é abstraído como XXX porque todas as extensões criadas por nós são de 3 dígitos. [3,4]
Filas de espera
No nosso caso criaram-se 4 Queues (filas de espera): uma para o departamento
de IT, uma para o departamento de Vendas, uma para o departamento de Recursos
Humanos e uma para o departamento IAX. A cada uma das filas foram acrescentadas as
extensões correspondentes. Neste caso é usado como exemplo a fila do departamento de
IT.
Trabalho Laboratorial 5 – Asterisk
9
MIEEC | 2014/2015
Serviços de Comunicações
As extensões foram acrescentadas à fila da seguinte forma: a fila tem 3 extensões
estáticas, que estão sempre na fila (workers) e uma extensão dinâmica, que pode entrar
e sair da fila quando assim entender (boss). A lógica deste esquema era que cada
departamento teria um call center com 3 trabalhadores para atender o telefone e o gestor
do departamento poderia entrar na fila em alturas de maior carga:
Figura 9 – Configuração de uma Fila de Espera (Queue)
As extensões dinâmicas foram restritas às mencionadas, mas também é possível
o contrário e permitir que qualquer pessoa entre na fila, ou à discrição da mesma ou
mediante introdução de um PIN.
A ring strategy escolhida foi a Ringall: quando fosse recebida uma chamada
todas as extensões na fila não ocupada iriam tocar e a primeira a ser atendida ficaria com
a chamada, no entanto, existem muitas outras estratégias passíveis de ser configuradas,
Trabalho Laboratorial 5 – Asterisk
10
MIEEC | 2014/2015
Serviços de Comunicações
incluindo algumas em que as extensões tocam por prioridades ou por ordens prédefinidas.
Figura 10 – Ring Strategy escolhida
Mensagens de Texto
Para o PBX passar a suportar mensagens de texto, foi necessário ir um pouco
além das opções fornecidas pela interface gráfica e editar directamente os ficheiros de
configuração do PBX.
Primeiro, recorrendo à interface gráfica, em Settings -> Asterisk SIP Settings ->
Chan SIP -> Other SIP Settings adicionaram-se duas regras:
accept_outofcall_message=yes
outofcall_message_context=astsms
Depois,
editou-se
o
contexto
astsms
directamente
em
/etc/asterisk/extensions_custom.conf. Para isso foram-lhe adicionadas as seguintes
linhas:
[astsms]
exten => _.,1,NoOp(SMS receiving dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)})
exten => _.,n,MessageSend(${ACTUALTO},${MESSAGE(from)})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg)
exten => _.,n,Hangup()
;
; Handle failed messaging
exten => _.,n(sendfailedmsg),Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d%m%Y%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.")
exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)})
exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)})
exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter)
exten => _.,n,Hangup()
exten => _.,n,Hangup()
Após reiniciar o Asterisk com o comando amportal restart, o PBX passou a
suportar o envio e recepção de mensagens de texto [2].
Trabalho Laboratorial 5 – Asterisk
11
MIEEC | 2014/2015
Serviços de Comunicações
Figura 11 – Demonstração do bom funcionamento das mensagens de texto
Interactive Voice Response (IVR)
O FreePBX permite, de raiz, a configuração de um IVR (Interactive Voice
Response/Introductory voice recording) para desempenhar uma grande variedade de
funções. No nosso caso, configurou-se o IVR de forma a possibilitar um atendimento
automático aos clientes que ligassem de fora da empresa (fora do PBX) para o número
externo desta.
Existem várias opções para a voz usada para o atendimento automático: pode-se
usar os clips de voz que o FreePBX traz de raiz; pode-se configurar um motor de síntese
de voz stand-alone para ser utilizado; ou pode-se gravar clips de voz que podem
posteriormente ser carregados. Apenas é necessário referir que os clipes de voz têm de
estar no formato WAV, com codificação PCM e com a bitrate de 8000Hz.
No nosso caso gravou-se um curto clip de voz para ser usado com o IVR. O mesmo
pedia para que fossem marcados 5 números que encaminhariam o utilizador para 2
extensões ou para 3 filas:
Trabalho Laboratorial 5 – Asterisk
12
MIEEC | 2014/2015
Serviços de Comunicações
Figura 12 – Entradas do IVR para reencaminhar os números marcados para as respectivas
extensões
Após o IVR estar configurado, é necessário configurar ou uma extensão específica
ou uma incoming route para que se conseguisse telefonar para o mesmo. No nosso caso
criou-se uma rota com o número Direct Inward Dial 000, para que o número
introduzido quando se ligasse do System2 fosse o CallerID escolhido para a rota, ou seja,
20000. Ao passar pelo trunk no System2 o “20” seria removido e apenas o número “000”
chega a este sistema.
Figura 12 – Incoming Route
Por fim, definiu-se o destino desta rota de entrada:
Figura 13 – Destino da extensão 000
Trabalho Laboratorial 5 – Asterisk
13
MIEEC | 2014/2015
Serviços de Comunicações
Restrições
Por fim, experimentamos configurar restrições. Para isso, restringimos a
extensão 004 do PBX 21000 a chamadas internas à empresa. Isto foi feito bloqueando o
acesso desta extensão ao trunk que interligava os dois IP PBX.
Esta configuração foi feita directamente nos ficheiros de configuração, tendo para
isso adicionado as seguintes linhas ao ficheiro /etc/asterisk/extensions_custom.conf:
[macro-dialout-trunk-predial-hook]
exten => s,1,goto(${AMPUSER},1)
exten => 004,1,Set(DIAL_TRUNK=OUT_2)
Esta não será a melhor solução para restrições por é preciso configurar trunk a
trunk e extensão a extensão e não dá a mensagem de erros mais adequada, retorna a
mensagem 503 unavailable que às vezes é retornada quando há falhas na ligação aos
PBX. No entanto bloqueou com sucesso o acesso da extensão 004 ao trunk OUT_2 que
assegurava a ligação ao System1, o que era o objectivo principal. [5]
Conclusão
Com este relatório foi possível demonstrar o bom funcionamento dos sistemas
Asterisk implementados, bem como as configurações que foram utilizadas para obter não
só os resultados apresentados neste trabalho, como também os resultados apreentados
na demonstração prática.
Os resultados obtidos são, portanto, um bom indicador de que os conhecimentos
práticos relativos ao Asterisk e ao FreePBX, bem como telefonia IP foram bem
apreendidos. Tentamos também apresentar detalhadamente os passos seguidos para
obter os resultados e funcionalidades apresentados, de forma a que este relatório forneça
também uma espécie de "manual" que pode ser seguido para reproduzir os mesmos.
Trabalho Laboratorial 5 – Asterisk
14
MIEEC | 2014/2015
Serviços de Comunicações
Referências
[1] http://wiki.freepbx.org/display/F2/Conference+Module+User+Guide
[2]
http://highsecurity.blogspot.pt/2012/03/asterisk-10-110-sms-messaging-or-
sip.html
[3]
https://sysadminman.net/blog/2013/extension-to-extension-calling-between-2-
freepbx-systems-5354
[4] http://wiki.freepbx.org/pages/viewpage.action?pageId=4161588
[5] http://moshe.im/blog/2009/10/09/freepbx-restrict-an-extension-to-a-specific-trunk/~
[6] http://www.asterisk.org/
[7] https://wiki.asterisk.org/
[8] http://www.ozekiphone.com/product-information-340.html
Trabalho Laboratorial 5 – Asterisk
15
Download

Configurações