Este projeto implementa um gateway de mensagens assíncronas, integrando Node.js, Express, RabbitMQ e Baileys (WhatsApp). A API permite o envio e recebimento de mensagens via filas, além de monitoramento e controle das filas e do status do WhatsApp.
- Docker
- Docker Compose
git clone <repo-url>
cd projeto-baileys
docker-compose up -d- Acesse a API: http://localhost:3000
- Gerencie filas: http://localhost:15672 (RabbitMQ, user: guest, senha: guest)
Para logs em tempo real:
docker-compose logs -f appPara parar:
docker-compose down- Node.js 16+ (recomendado 20+)
- RabbitMQ rodando localmente
npm install
cp env.example .env
npm run devPORT=3000
NODE_ENV=development
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASS=guest
RABBITMQ_VHOST=/
LOG_LEVEL=info
LOG_FORMAT=json
RATE_LIMIT_WINDOW=15
RATE_LIMIT_MAX_REQUESTS=100
BAILEYS_SESSION_PATH=./sessions
JWT_SECRET=algum-segredo
POST /api/messages/send— Envia mensagem para uma filaGET /api/messages/receive/:queueName— Consome mensagens de uma filaGET /api/messages/:messageId/status— Status de uma mensagemDELETE /api/messages/:messageId— Remove mensagem
GET /api/queues/status— Status de todas as filasGET /api/queues/:queueName/status— Status de uma filaPOST /api/queues/:queueName— Cria filaDELETE /api/queues/:queueName— Remove filaPOST /api/queues/:queueName/purge— Limpa filaGET /api/queues/:queueName/messages— Mensagens da fila
GET /api/whatsapp/status— Status da conexão WhatsAppGET /api/whatsapp/qr— QR code para autenticaçãoGET /api/whatsapp/queues— Filas relacionadas ao WhatsApp
GET /health— Health checkGET /api/health— Health check
Enviar mensagem:
curl -X POST http://localhost:3000/api/messages/send \
-H "Content-Type: application/json" \
-d '{
"queue": "pedidos",
"message": {
"id": "pedido_001",
"content": "Novo pedido criado",
"timestamp": "2024-01-15T10:30:00Z",
"metadata": {
"sender": "api_pedidos",
"priority": "high"
}
}
}'Receber mensagens:
curl -X GET "http://localhost:3000/api/messages/receive/pedidos?limit=5&timeout=10"Status das filas:
curl -X GET http://localhost:3000/api/queues/statusStatus do WhatsApp:
curl -X GET http://localhost:3000/api/whatsapp/statusObter QR code do WhatsApp:
curl -X GET http://localhost:3000/api/whatsapp/qr- Testes unitários e integração em
/tests - Para rodar:
npm test- O status do WhatsApp pode aparecer como
PENDINGaté que o QR code seja escaneado. - O endpoint de status de mensagem retorna um placeholder, pronto para extensão.
- O sistema cria filas automaticamente ao enviar mensagens para uma fila inexistente.
- O logger exibe o QR code no console quando gerado.
- Código fonte organizado
- Endpoints conforme especificação
- Testes implementados
- Documentação clara
- Tratamento de erros
- Logging estruturado
- Variáveis de ambiente
- Pronto para Docker
Dúvidas? Abra uma issue ou entre em contato.