WuzAPI
WuzAPI é uma implementação da biblioteca @tulir/whatsmeow como um serviço RESTful API com suporte a múltiplos dispositivos e sessões concorrentes.
O Whatsmeow não usa Puppeteer em Chrome headless, nem um emulador Android. Ele se comunica diretamente com os servidores websocket do WhatsApp, sendo assim bastante rápido e usando muito menos memória e CPU que essas soluções. A desvantagem é que uma mudança no protocolo do WhatsApp pode quebrar as conexões e exigir uma atualização da biblioteca.
⚠️ Aviso
Usar este software violando os Termos de Serviço do WhatsApp pode resultar no banimento do seu número: Tenha muito cuidado, não use para enviar SPAM ou qualquer coisa do tipo. Use por sua conta e risco. Se você precisa desenvolver algo com interesse comercial, você deve entrar em contato com um provedor global de soluções WhatsApp e se inscrever no serviço WhatsApp Business API.
Endpoints Disponíveis
- Sessão: conectar, desconectar e fazer logout do WhatsApp. Recuperar status de conexão. Recuperar código QR para escanear.
- Mensagens: enviar texto, imagem, áudio, documento, template, vídeo, adesivo, localização e mensagens de contato.
- Usuários: verificar se os telefones têm WhatsApp, obter informações do usuário, obter avatar do usuário, recuperar lista completa de contatos.
- Chat: definir presença (digitando/pausado, gravando mídia), marcar mensagens como lidas, baixar imagens das mensagens.
- Grupos: listar inscritos, obter informações, obter links de convite, alterar foto e nome.
- Webhooks: definir e obter webhook que será chamado sempre que um evento/mensagem for recebido.
Pré-requisitos
Pacotes:
- Go (Linguagem de Programação Go)
Opcional:
- Docker (Containerização)
Compilando
go build .
Executando
Por padrão, iniciará um serviço REST na porta 8080. Estes são os parâmetros que você pode usar para alterar o comportamento:
- -address: define o endereço IP para vincular o servidor (padrão 0.0.0.0)
- -port: define o número da porta (padrão 8080)
- -logtype: formato para logs, console (padrão) ou json
- -wadebug: ativar debug do whatsmeow, níveis INFO ou DEBUG são suportados
- -sslcertificate: Arquivo de Certificado SSL
- -sslprivatekey: Arquivo de Chave Privada SSL
Exemplo:
./wuzapi -logtype json
Uso
Para abrir sessões, primeiro você precisa criar um usuário e definir um token de autenticação para ele. Você pode fazer isso atualizando o banco de dados Postgres users.db:
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "INSERT INTO users (name, token) VALUES ('John','1234ABCD');"
Depois de criar alguns usuários, você pode falar com a API passando o cabeçalho Token como um meio simples de autenticação. Você pode ter vários usuários (números diferentes) no mesmo servidor.
O daemon também serve alguns arquivos web estáticos, úteis para desenvolvimento/teste que você pode carregar com seu navegador:
- Uma referência de API swagger em /api
- Uma página web de exemplo para conectar e escanear códigos QR em /login (onde você precisará passar ?token=1234ABCD)
Referência da API
As chamadas de API devem ser feitas com o tipo de conteúdo json, e os parâmetros enviados no corpo da requisição, sempre passando o cabeçalho Token para autenticar a requisição.
Verifique a Referência da API Swagger
Licença
Copyright © 2022 Nicolás Gudiño
Atribuição do Ícone
Ícones de comunicação criados por Vectors Market - Flaticon
Legal
Este código não é de forma alguma afiliado, autorizado, mantido, patrocinado ou endossado pelo WhatsApp ou qualquer de suas afiliadas ou subsidiárias. Este é um software independente e não oficial. Use por sua conta e risco.
Aviso de Criptografia
Esta distribuição inclui software criptográfico. O país em que você atualmente reside pode ter restrições sobre a importação, posse, uso e/ou reexportação para outro país, de software de criptografia. ANTES de usar qualquer software de criptografia, por favor verifique as leis, regulamentos e políticas do seu país relativas à importação, posse ou uso, e reexportação de software de criptografia, para ver se isso é permitido. Veja http://www.wassenaar.org/ para mais informações.