63 lines
3.1 KiB
Markdown
63 lines
3.1 KiB
Markdown
# Integração Nativa WuzAPI (V1 Final)
|
|
|
|
## Visão Geral
|
|
|
|
Integração 100% nativa do WuzAPI (Go) com o Chatwoot, eliminando a necessidade de n8n/Typebot. A solução suporta envio e recebimento de mensagens de texto, sincronização de mensagens do celular e automação de webhook.
|
|
|
|
## Conquistas Técnicas (V1.5)
|
|
|
|
### 1. Mensagens de Entrada (Inbound)
|
|
|
|
- **Parser Estrito**: Filtra e normaliza eventos do WuzAPI.
|
|
- **Deduplicação Inteligente**: Usa `Info.ID` para evitar mensagens duplicadas.
|
|
- **Tratamento de Loops**: Ignora eco de mensagens (`from_me`) se não for uma mensagem de sincronia.
|
|
|
|
### 2. Mensagens de Saída (Outbound) Fixado
|
|
|
|
- **Criptografia Real**: Tokens são armazenados com `encrypts` do Rails 7.
|
|
- **Autenticação Corrigida**:
|
|
- Problema Anterior: O banco salvava o token em `encrypted_wuzapi_user_token` mas o Rails buscava em `wuzapi_user_token`.
|
|
- Solução: Migração renomeou as colunas para o padrão do Rails (`wuzapi_user_token` contendo o dado criptografado).
|
|
- **Envio Confiável**: Headers de autenticação (`token: ...`) agora são gerados com o token decriptado corretamente.
|
|
|
|
### 3. Sincronia Mobile (Two-Way Sync)
|
|
|
|
- **Lógica de Espelhamento**: Mensagens enviadas pelo celular (App WhatsApp) são capturadas pelo Chatwoot.
|
|
- **Conversão de Tipo**: O sistema identifica `Info.IsFromMe == true` e converte para `message_type: :outgoing` e `sender: nil`.
|
|
- **Benefício**: Histórico completo da conversa, independente de onde foi enviada.
|
|
|
|
### 4. Automação (VPS Ready)
|
|
|
|
- **Configuração Automática de Webhook**:
|
|
- Ao criar um canal WuzAPI, o sistema dispara `after_create_commit :setup_webhooks`.
|
|
- Configura automaticamente a URL: `#{ENV['FRONTEND_URL']}/webhooks/whatsapp/#{phone_number}`.
|
|
- Define `events: ['All']` no WuzAPI.
|
|
|
|
## Guia de Instalação (VPS / Portainer)
|
|
|
|
### Variáveis de Ambiente Necessárias
|
|
|
|
Certifique-se de que estas variáveis estejam no `.env` da VPS:
|
|
|
|
```bash
|
|
FRONTEND_URL=https://seu-chatwoot.com
|
|
# Chaves de Criptografia (Gere com `rake secret`)
|
|
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=...
|
|
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=...
|
|
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=...
|
|
```
|
|
|
|
### Passos de Deploy
|
|
|
|
1. **Pull Code**: Baixe a última versão.
|
|
2. **Migrations**: `bundle exec rails db:migrate` (Essencial para renomear colunas).
|
|
3. **Restart**: Reinicie os containers (`web` e `sidekiq`) para limpar caches de esquema.
|
|
|
|
### Troubleshooting Comum
|
|
|
|
| Sintoma | Causa Provável | Solução |
|
|
| ---------------------- | -------------------------- | --------------------------------------------------------------------------------------- |
|
|
| **Erro 401 no Envio** | Token salvo incorretamente | Reinicie o app e re-salve o token do canal. |
|
|
| **Mensagem não chega** | Webhook URL errada | Verifique se `FRONTEND_URL` está correto. Use "Atualizar" no canal para forçar o setup. |
|
|
| **Duplicidade** | Deduplicação falhando | Verifique logs por "WuzAPI: Ignoring duplicate". |
|