Neste Tutorial irei demostrar como realizar a integração dos envios dos Alertas do Zabbix via WhatsApp utilizando o projeto de Alertas do nosso amigo Sansão com o projeto Graphical Notifications Zabbix, que já é bastante conhecido pela comunidade. Nesse Tutorial vamos usar o projeto chamado WPPConnect que simula o acesso via WhatsApp Web.
Sem mais delongas, vamos lá!
Primeiro vou considerar que o Zabbix esteja instalado e que o projeto do Sansão já esteja baixado, instalado e faltando apenas a parte de configurar o envio dos Alertas que iremos testar. Lembrando que é possível enviar os Alertas com este projeto do Sansão via Telegram, WhatsApp versão Paga, WhatsApp versão Free (o que faremos), via e-mail. Desta forma, iremos nos concentrar em fazer o projeto funcionar com o WPPConnect.
O projeto WPPConnect tem material para Ubuntu mas como gosto de usar distruíção baseada em RHEL, no meu ambiente estou utilizando CentOS 8 mas já testei com sucesso no Oracle Linux 9.
Seguindo o How To do Projeto do Sansão iremos dar continuidade a partir deste passo: Criando Chave API WhatsApp.
Vamos aos procedimentos para baixarmos e configurarmos o WPPConnect.
#Atualizando o sistema e instalando dependências
yum install -y vim curl epel-release wget unzip fontconfig xdg-utils git
#Instalando o Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
sudo yum localinstall google-chrome-stable_current_x86_64.rpm
#Instalando o nodejs
curl -sL https://rpm.nodesource.com/setup_18.x | sudo -E bash -
dnf install nodejs -y
Obs.: Talvez seja necessário esse segundo comando caso não instale o nodejs no primeiro comando.
#Instalando e iniciando o WPP Connect
cd ~
git clone https://github.com/wppconnect-team/wppconnect-server.git
cd wppconnect-server
npm install
npm run build
sudo npm install -g pm2
pm2 start npm --name wpp -- start
#Gerando o token de acesso
curl -X POST --location "http://localhost:21465/api/mySession/THISISMYSECURETOKEN/generate-token"
Teremos como retorno:
{
"status": "Success",
"session": "mySession",
"token": "$2b$10$duQ5YYV6fojn5qFiFv.aEuY32_SnHgcmxdfxohnjG4EHJ5_Z6QWhe",
"full": "wppconnect:$2b$10$duQ5YYV6fojn5qFiFv.aEuY32_SnHgcmxdfxohnjG4EHJ5_Z6QWhe"
}
Anote esse "token".
#Iniciando a sessão do WhatsApp para poder escanear o QRCode
curl -X POST --location "http://localhost:21465/api/mySession/start-session" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer \$2b\$10\$duQ5YYV6fojn5qFiFv.aEuY32_SnHgcmxdfxohnjG4EHJ5_Z6QWhe"
Note que no parâmetro "Authorization: Bearer" é justamente o token que recebemos ao rodar o primeiro comando. Ao rodar este comando agora iremos executar o comando mais abaixo para termos acesso ao QRCode para poder escaneá-lo:
pm2 log
Se quiser podemos testar o envio para um contato ou para seu próprio número:
curl -X POST --location "http://localhost:21465/api/mySession/send-message" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Accept: application/json" \
-H "Authorization: Bearer \$2b\$10\$duQ5YYV6fojn5qFiFv.aEuY32_SnHgcmxdfxohnjG4EHJ5_Z6QWhe" \
-d "{
\"phone\": \"5511900000000\",
\"message\": \"*Abner* Rodrigues\"
}"
Após escanear o QRCode gerado teremos sucesso e agora já podemos voltar ao projeto do Sansão. Agora iremos editar o arquivo configScripts.properties do projeto. No parâmetro abaixo deverá ficar assim:
[PathSectionWhatsApp]
salutation.whatsapp = yes
message.whatsapp = WhatsApp enviado com sucesso
line = 5511950287353
acess.key = XGja6Sgtz0F01rbWNDTc
port = 13008
open.source = yes
open.source.url = http://IP_da_VM:21465/api/mySession
open.source.token = $2b$10$duQ5YYV6fojn5qFiFv.aEuY32_SnHgcmxdfxohnjG4EHJ5_Z6QWhe
Caso tenha instalado o WPPConnect na mesma VM do Zabbix ficaria o IP 127.0.0.1. Pronto, feito isso basta testar o projeto normalmente do Sansão seguindo o How To do Projeto, o envio para o WhatsAPP é através do ID, então primeiro colete o ID do Grupo
Observação:
Nos meus testes necessitei ajustar o script do Sansão e adicionar apenas uma informação a mais no script de "teste" e o de "produção".
* No script de teste (notificacoes-teste.py) adicionar ['contact'] nas linhas 727 e 733 conforme print abaixo:
*
No script de produção (notificacoes.py) adicionar ['contact'] nas linhas 612 e 618 conforme print abaixo:
* Toda vez que reiniciar a VM é necessário rodar o comando pm2 start npm --name wpp -- start de dentro da pasta do projeto que baixamos. Para isso criei um script e coloquei para ser chamado no boot da VM.
O script criado:
vim /root/wppconnect.sh
#!/bin/bash
sudo su -
cd /root/wppconnect-server
sudo pm2 status
pm2 start npm --name wpp -- start
Depois criei um serviço que realiza a chamada desse script:
vim /etc/systemd/system/wppconnect.service
[Unit]
Description=Meu Serviço de Inicialização
After=network.target
[Service]
Type=simple
ExecStart=/root/wppconnect.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target
Depois rodei os comandos:
sudo systemctl daemon-reload
sudo systemctl enable wppconnect
Pronto, agora ao reiniciar a VM o projeto irá subir automaticamente.
Bom é isso pessoal, espero ter ajudado! Abaixo segue print do projeto totalmente funcional e em produção:
Para atualizar o projeto eu sempre faço:
- Entrar na pasta do projeto e dar o comando git pull
- Após isso rodar o comando npm update @wppconnect-team/wppconnect
- E por fim rodar o comando para dar restart no projeto: pm2 restart id-do-projeto
No meu caso por exemplo, o ID é 0.
Feito isso, não foi necessário escanear o qrcode, tudo passou a funcionar perfeitamente.
Nenhum comentário:
Postar um comentário