/mywhats-api-node

Este projeto usa como base o venom, um navegador virtual sem interface gráfica que abre o whatsapp web e executa todos os comandos via código possibilitando assim a automação de todas as funções, e um fork do projeto myzap do @billbarsch.

Primary LanguageJavaScriptMIT LicenseMIT

My Whats

My Whats

Este projeto usa como base o Venom-bot e WPPConnect , um navegador virtual sem interface gráfica que abre o whatsapp web e executa todos os comandos via código possibilitando assim a automação de todas as funções, e um fork do projeto myzap do @billbarsch.

Dependências

$ sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget build-essential apt-transport-https libgbm-dev

Rodando a aplicação

# Ir para seu diretório home
$ cd ~

# Recuperar o script de instalação para sua versão de preferência
$ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh

# Execute o script 
$ sudo bash nodesource_setup.sh

# Instalar o pacote Node.js
$ sudo apt install -y git nodejs yarn gcc g++ make

# Remover pacotes que não são mais necessários
$ sudo apt autoremove -y

# Clone este repositório
$ git clone https://github.com/AlanMartines/mywhats-api-node.git

# Acesse a pasta do projeto no terminal/cmd
$ cd mywhats-api-node

# Instale as dependências
$ npm install

# Execute a aplicação 
$ node index.js

# Manter os processos ativos a cada reinicialização do servidor
$ sudo npm install pm2 -g

$ pm2 start index.js

$ pm2 save

$ pm2 startup

$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ${USER} --hp /home/${USER}

# Para remover do init script
$ pm2 unstartup systemd

# O servidor iniciará na porta:9000

# Pronto, escaneie o código QR-Code do Whatsapp e aproveite!

Iniciar sessão whatsapp (POST method)

router.post("/Start", (req, res, next) => {
  const response = await fetch('http://localhost:9000/sistema/Start', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(
        {
            sessionName: req.body.SessionName
        }
    )
  });
  const content = await response.json();
  return content;
});

Exibir QR-Code no navegador (POST method)

router.post("/QRCode", (req, res, next) => {
  const response = await fetch('http://localhost:9000/sistema/QRCode', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(
        {
            sessionName: req.body.SessionName,
            View: "true"
        }
    )
  });
  const content = await response.json();
  return content;
});

Retorna json com (base64) do QR-Code (POST method)

router.post("/QRCode", (req, res, next) => {
  const response = await fetch('http://localhost:9000/sistema/QRCode', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(
        {
            sessionName: req.body.SessionName,
            View: "false"
        }
    )
  });
  const content = await response.json();
  return content;
});

Fecha sessão whatsapp (POST method)

router.post("/Close", (req, res, next) => {
  const response = await fetch('http://localhost:9000/sistema/Close', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(
        {
            sessionName: req.body.SessionName
        }
    )
  });
  const content = await response.json();
  return content;
});

Salvar token do venom na nuvem

  • Crie uma conta grátis no https://jsonbin.io/
  • Crie um novo "bin" (objeto json) com quaisquer dados e copie o id dele e coloque no arquivo .env
  • Copie também o seu token de acesso à api do jsonbin.io e coloque no arquivo .env
...
JSONBINIO_BIN_ID=23452345345 <- aqui
JSONBINIO_SECRET_KEY=345234532452452345243 <- aqui
...
  • Com esses dados o mywhats-api-node irá gravar o token na nuvem e poderá ser executado em várias instancias diferentes por exemplo no Gooogle Cloud Run

Dockerfile

# Ir para seu diretório home
$ cd ~

# Clone este repositório
$ git clone https://github.com/AlanMartines/mywhats-api-node.git

# Acesse a pasta do projeto no terminal/cmd
$ cd mywhats-api

# Processando o arquivo Dockerfile
$ docker build -t alanmartines/nodejs-mywhats-api-node:1.0 .

# Criar um contêiner
$ docker container run --name mywhats-api-node -p 9000:9000 -d alanmartines/nodejs-mywhats-api-node:1.0

Para instalar o certbot e criar o certificado SSL para domínios https

sudo apt update

sudo apt install -y software-properties-common

sudo add-apt-repository universe

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

sudo apt install -y certbot

sudo certbot certonly --manual --force-renewal -d *.yourdomain.net -d yourdomain.net --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

Em desenvolvimento

Este projeto se encontra em desenvolvimento, então pode conter erros.

License

MIT