Sistema de atendimento multicanal com suporte completo para Wuzapi API, permitindo múltiplas conexões WhatsApp, gestão de tickets, mensagens de mídia e confirmações de leitura em tempo real.
- ✅ Suporte completo para Wuzapi API
- ✅ Múltiplas instâncias WhatsApp
- ✅ QR Code para conexão
- ✅ Status de conexão em tempo real
- ✅ Webhooks para eventos
- ✅ Envio de texto
- ✅ Envio de áudio (PTT - Push to Talk)
- ✅ Envio de imagens
- ✅ Envio de vídeos
- ✅ Envio de documentos
- ✅ Gravação de áudio nativa (MediaRecorder API)
- ✅ Preview de mensagens enviadas
- ✅ Mensagem enviada (✓)
- ✅ Mensagem entregue (✓✓ cinza)
- ✅ Mensagem lida (✓✓ azul)
- ✅ Atualização em tempo real via Socket.IO
- ✅ Conversão automática de áudio WebM → OGG/Opus
- ✅ Detecção de mensagens deletadas
- ✅ Sincronização de IDs usando UUID
- ✅ Sistema de tickets e filas
- ✅ Multi-usuários com permissões
- Node.js 14+
- TypeScript
- Express
- Sequelize ORM
- MySQL
- Socket.IO
- FFmpeg (conversão de áudio)
- React 17
- Material-UI
- Vite
- Axios
- Socket.IO Client
- Node.js 14 ou superior
- MySQL 5.7 ou superior
- FFmpeg instalado no sistema
- Conta Wuzapi configurada
git clone https://github.com/luiis716/whaticket-com-wuzapi.git
cd whaticket-com-wuzapiUbuntu/Debian:
sudo apt-get update
sudo apt-get install ffmpegmacOS:
brew install ffmpegWindows: Baixe em ffmpeg.org
cd backend
npm installCopie o arquivo .env.example para .env:
cp .env.example .envEdite o .env com suas configurações:
# Banco de dados
DB_HOST=localhost
DB_DIALECT=mysql
DB_USER=root
DB_PASS=sua_senha
DB_NAME=whaticket
# Backend
BACKEND_URL=http://localhost:8080
FRONTEND_URL=http://localhost:3000
PORT=8080
# JWT
JWT_SECRET=sua_chave_secreta_jwt
JWT_REFRESH_SECRET=sua_chave_refresh_jwt
# Wuzapi Admin (obter no painel Wuzapi)
WUZAPI_ADMIN_TOKEN=seu_token_admin_wuzapiExecute as migrações do banco de dados:
npx sequelize db:migrate
npx sequelize db:seed:allcd ../frontend
npm installCrie um arquivo .env no frontend:
VITE_BACKEND_URL=http://localhost:8080Backend:
cd backend
npm run devFrontend:
cd frontend
npm run devAcesse: http://localhost:3000
Login padrão:
- Email:
[email protected] - Senha:
admin
Acesse seu painel Wuzapi e obtenha:
- URL da API Wuzapi (ex:
https://api.wuzapi.com) - Admin Token (configure no
.envcomoWUZAPI_ADMIN_TOKEN)
- Acesse Conexões no menu
- Clique em Adicionar
- Preencha:
- Nome: Nome da conexão
- Tipo: Selecione "Wuzapi"
- URL Wuzapi: URL da sua API Wuzapi
- Clique em Salvar
- Clique no ícone de QR Code
- Escaneie com WhatsApp > Dispositivos Conectados
O sistema cria automaticamente webhooks ao conectar instâncias Wuzapi. Os eventos configurados são:
Message- Recebe mensagensReadReceipt- Recebe confirmações de leitura
Texto:
// Automaticamente sincronizado
Digite no campo de mensagem e pressione EnterÁudio:
- Clique no ícone 🎤
- Grave seu áudio
- Clique em ✓ para enviar
Imagem/Vídeo/Documento:
- Clique no ícone 📎
- Selecione o arquivo
- Adicione legenda (opcional)
- Clique em enviar
As mensagens mostram automaticamente:
- ⏰ Relógio: Não enviada
- ✓ 1 check: Enviada
- ✓✓ 2 checks cinza: Entregue
- ✓✓ 2 checks azul: Lida
whaticket-com-wuzapi/
├── backend/
│ ├── src/
│ │ ├── controllers/
│ │ │ ├── WuzapiSessionController.ts
│ │ │ └── WuzapiWebhookController.ts
│ │ ├── services/
│ │ │ ├── WuzapiServices/
│ │ │ │ ├── SendWuzapiMessage.ts
│ │ │ │ ├── wuzapiMessageListener.ts
│ │ │ │ └── ...
│ │ │ └── WbotServices/
│ │ ├── models/
│ │ ├── routes/
│ │ └── database/
│ └── package.json
│
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── MessageInput/
│ │ │ ├── MessagesList/
│ │ │ └── ...
│ │ └── pages/
│ └── package.json
│
└── README.md
POST /wuzapi-session/:whatsappId/start # Iniciar sessão
DELETE /wuzapi-session/:whatsappId # Deletar sessão
POST /wuzapi-session/:whatsappId/qrcode # Obter QR Code
GET /wuzapi-session/:whatsappId/status # Verificar status
POST /wuzapi-webhook/:whatsappId # Receber eventos Wuzapi
POST /messages/:ticketId # Enviar mensagem
Solução: Instale o FFmpeg no sistema:
sudo apt-get install ffmpegSolução: Verifique se:
- O backend está rodando
- Socket.IO está conectado (veja no console do navegador)
- As mensagens estão sendo criadas no banco de dados
Solução: Verifique:
- Webhook configurado corretamente no Wuzapi
- Eventos
ReadReceipthabilitados - IDs das mensagens correspondendo (veja logs do backend)
Solução: Verifique:
- FFmpeg instalado e acessível
- Permissão de microfone concedida no navegador
- Logs do backend para erros de conversão
Adicionado:
- Integração completa com Wuzapi API
- Sistema de ReadReceipt (Delivered/Read)
- Envio de mensagens de texto, áudio PTT, imagens, vídeos e documentos
- Conversão automática WebM → OGG/Opus
- Gravação de áudio nativa com MediaRecorder API
- Detecção de mensagens deletadas
- Sincronização de IDs com UUID
- Socket.IO para atualizações em tempo real
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
André Marques (luiis716)
- GitHub: @luiis716
- Repositório: whaticket-com-wuzapi
- Wuzapi - API WhatsApp
- Comunidade Open Source
⭐ Se este projeto te ajudou, considere dar uma estrela no repositório!