segunda-feira, 25 de março de 2024

[Sobre o Zabbix] Integração de Alertas Zabbix com WhatsApp (WPPConnect)

 

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:





Nenhum comentário:

Postar um comentário