O FreePBX 16 beta foi anunciado em junho e, desde então, foi observado pela equipe FreePBX, milhares de instalações desta versão. As equipes de engenharia e controle de qualidade concluíram seus testes, portanto, anunciaram no domingo(31/10) o FreePBX, que mudou de beta para GA (Público Geral).
Para relembrar, isso é o que o FreePBX 16 traz para o projeto:
Suporte ao PHP 7.4
Adições importantes ao módulo API com métodos GraphQL
Padronizando o PJSIP como um único driver SIP. O Chan_SIP ainda é suportado, mas agora desabilitado por padrão durante a instalação;
Modelos do painel de controle do usuário - os administradores agora podem personalizar a experiência do usuário do UCP antes que ele faça login no UCP pela primeira vez;
Revisão do módulo do Firewall e integração dos recursos de detecção de intrusão com o Firewall;
Limites ajustáveis para firewall responsivo - para administradores que buscam controle preciso sobre como o firewall responsivo detecta e bloqueia o tráfego SIP de IPs de origem não reconhecidos;
Redirecionamento HTTPS - os administradores podem configurar serviços http individuais para redirecionar para https;
Configuração do protocolo SSL - protocolos SSL individuais para https agora são configuráveis pelo administrador;
AMI bindaddr - Uma nova instalação do FreePBX irá definir o AMI bind addr para localhost por padrão;
Validação de senha UCP - O administrador pode habilitar e configurar várias regras de complexidade de senha para usuários que alteram senhas.
Bem como muitas melhorias e correções numerosas demais para serem mencionadas individualmente. A maioria dos novos recursos foram transferidos para o FreePBX 15 durante o período beta, portanto, os administradores e usuários do FreePBX podem já estar cientes e usar alguns desses recursos.
O método preferido de migração de uma versão anterior para o FreePBX 16 é restaurar um backup para uma nova instalação do FreePBX Distro ISO.
Tal como acontece com as principais atualizações anteriores, foi publicado um módulo de atualização de 15-> 16 versões que fará uma verificação do sistema e realizará a atualização.
O FreePBX como sempre saindo na frente, este se não o melhor, é um dos melhores projetos opensource para criar seu PBX IP.
Sejam muito bem-vindos a mais uma postagem do site FreePBX Brasil, esta documentação vai lhe auxiliar a fazer as configurações para uso do ARI no FreePBX.
O intuito deste é contribuir com a comunidade auxiliando para execução discagens via API, um caso comum é quem faz o uso de discadores, que normalmente usam os famosos “aquivo.call” e/ou AMI para efetuar as discagens, ambos funcionam muito bem, mas fazendo uso de RESTful você vai dar um upgrade na sua aplicação.
A Interface RESTful do Asterisk (ARI) é uma API assíncrona que permite aos desenvolvedores construir aplicativos de comunicação no asterisk, fazendo uso de objetos por meio de eventos JSON e WebSocket, o ARI está no asterisk a partir da versão 12.
Antes de seguir, vale ressaltar que se caso identificar algum problema ou erro neste post, não deixe de nos reportar, o feedback é de suma importância para dar ainda mais qualidade aos conteúdos do site.
Laboratório:
FreePBX 15;
Asterisk 16;
Insomnia - Versão free.
Vamos iniciar as configurações no FreePBX, primeiro criar o usuário RESTful.
A seguir será necessário ir nas configurações avançadas para habilitar o WebService do FreePBX para aceitar as requisições para o ARI.
Acima apresenta as configurações avançadas do FreePBX, aonde será configurado habilitando o WebService para as requisições de interação com o nosso core de telefonia, lembrando que estas configurações feitas via GUI do FreePBX são somente para interações com o asterisk.
Lembre-se, qualquer alteração via GUI do FreePBX faz necessário logo em seguida salvar e aplicar, usando o "Submit" e o "Apply"!
Agora que já foi criado o usuario da API e habilitado o serviço de WebService, será necessário identificar se de fato temos o ARI ativo em nosso asterisk, vamos ao CLI.
[root@freepbx15 ~]# rasterisk -vvvvvvvcgi
Asterisk 16.4.1, Copyright (C) 1999 - 2018, Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 16.4.1 currently running on freepbx15 (pid = 2212)
freepbx15*CLI> ari show
app apps status user users
freepbx15*CLI>
No CLI digitando ari show e pressionando a tecla TAB será apresentado algumas opções que estão disponiveis para consulta, a seguir consultaremos os usuarios ativos ARI, status do serviço e se o WebService está ativo.
freepbx15*CLI> ari show users
r/o? Username
---- --------
No freepbxuser
No kowalski
freepbx15*CLI>
freepbx15*CLI> ari show status
ARI Status:
Enabled: Yes
Output format: compact
Auth realm: Asterisk REST Interface
Allowed Origins: *
User count: 2
freepbx15*CLI>
freepbx15*CLI> http show status
HTTP Server Status:
Prefix:
Server: Asterisk/16.4.1
Server Enabled and Bound to 0.0.0.0:8088
Enabled URI's:
/httpstatus => Asterisk HTTP General Status
/static/... => Asterisk HTTP Static Delivery
/ari/... => Asterisk RESTful API
/ws => Asterisk HTTP WebSocket
Enabled Redirects:
None.
freepbx15*CLI>
Aqui observamos que nos serviços WEB do asterisk temos o ARI ativo, a linha "/ari/... => Asterisk RESTful API" os demais podemos abordar em um outro post. Idetificado que as configurações estão corretas com o ARI, será necessário agora, no asterisk criar um contexto para os testes.
vim /etc/asterisk/extensions_custom.conf
[freepbxbrasil]
exten => 1000,1,NoOp( ..:: ------------------------- )
same => n,NoOp( ..:: Comunidade FreePBX Brasil )
same => n,NoOp( ..:: Prof. Kowalski )
same => n,NoOp( ..:: ------------------------- )
same => n,Hangup()
Em seguida saia do vim salvando, vou pode usar o ":wq" ou ":x" que acho mais prático, após contexto criado e salvo, será necessario recarrega-lo , por que até então o asterisk não reconhece o mesmo, no CLI digite dialplan reload, para ter certeza que o contexto existe, certique usando o comando abaixo.
freepbx15*CLI> dialplan show freepbxbrasil
[ Context 'freepbxbrasil' created by 'pbx_config' ]
'1000' => 1. NoOp( ..:: ------------------------- ) [extensions_custom.conf:3]
2. NoOp( ..:: Comunidade FreePBX Brasil ) [extensions_custom.conf:4]
3. NoOp( ..:: Prof. Kowalski ) [extensions_custom.conf:5]
4. NoOp( ..:: ------------------------- ) [extensions_custom.conf:6]
5. Hangup() [extensions_custom.conf:12]
-= 1 extension (5 priorities) in 1 context. =-
freepbx15*CLI>
Pronto, agora está certificado que o contexto existe, agora será feito uma requisição API que vamos executa-lo e apresentar essas mensagens no console, para isso vamos usar o Insomnia na versão free, este muito usado para testes de rotas de API, assim como POSTMAN e muitos outros.
Este que será usado uma requisição POST, conforme orienta a documentação oficial do asterisk que ao término deste deixarei explicíto.
Acima em ❶ temos criado a nossa requisição de API do tipo "POST", seguindo a documentação do ari no site oficial do asterisk, que ao final informo o link. Em ❷ a requisição da api com os devidos parâmetros este que detalho a seguir, em ❸ aonde ao clicar será enviado sua requisição, em ❹ é um dos pontos mais importante deste processo, o codigo de retorno HTML, neste caso está como "200 OK" ou seja nossa requisição foi executar e o retorno foi sucesso, se o retorno for direfente disso, valide na documentação da API que na maioria das vezes alguns códigos de retornos são mapeados e documentados para lhe auxiliar em problemas.
Explicando item ❷ , para ficar de facíl entendimento, será colocado a url e vamos particiona-la para explicar cada parte da mesma.
Dados de autentição da API:
User ➜ kowalski
Password ➜ freepbxbrasil
IP do Server ➜ 192.168.200.24
Porta do WebService ➜ 8088
Dados do Asterisk baseado na documentação oficial:
channels ➜ Rota da API ARI
endpoint ➜ O canal usado para comunicação interna com o asterisk
extension ➜ Extensão criada no nosso contexto
freepbxbrasil ➜ Contexto criado para homologação conforme acima.
priority ➜ a nivel de dialplan estamos iniciando nesta posição do contexto
callerid ➜ o callerid que vamos utilizar para essa requisição
Agora com as informações acima validada, já pode ser feita a requisição via insomnia e o retorno deve ser um "200 OK", acompanhe no seu asterisk via terminal (CLI), abaixo um exemplo de quando o asterisk recebe a requisição via ARI.
Acima temos o retorno de quando a requisição foi executada com sucesso, assim como o contexto do asterisk como esperado.
Pronto, agora que você aprendeu o básico de usabilidade do recurso ARI que tem disponível em seu asterisk, aproveite que este assim como muitos outros recursos no asterisk fazem o diferencial na solução de telefonia.
A seguir vou documentar as referências utilizadas nesta documentação, obrigado e até a próxima.