3.1 KiB
3.1 KiB
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.IDpara 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
encryptsdo Rails 7. - Autenticação Corrigida:
- Problema Anterior: O banco salvava o token em
encrypted_wuzapi_user_tokenmas o Rails buscava emwuzapi_user_token. - Solução: Migração renomeou as colunas para o padrão do Rails (
wuzapi_user_tokencontendo o dado criptografado).
- Problema Anterior: O banco salvava o token em
- 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 == truee converte paramessage_type: :outgoingesender: 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.
- Ao criar um canal WuzAPI, o sistema dispara
Guia de Instalação (VPS / Portainer)
Variáveis de Ambiente Necessárias
Certifique-se de que estas variáveis estejam no .env da VPS:
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
- Pull Code: Baixe a última versão.
- Migrations:
bundle exec rails db:migrate(Essencial para renomear colunas). - Restart: Reinicie os containers (
webesidekiq) 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". |