ecom-store/workflows/README-FASE5-OPENWA-TWENTY.md
Iris Florencio 0a0061a914 feat(workflows): fase 5 — integração WhatsApp (OpenWA) ↔ Twenty CRM
Work feito nesta sessão:
- Traefik routes.yml: crm.m5digital.net.br → twenty-crm (Twenty substitui Hermes CRM)
- Backup pre-fase3 salvo em /root/backups/2026-07-06_pre-crm-reorg/
- 3 IPs hardcoded substituídos por container names (video, chatwoot, twenty)
- API key OpenWA recuperada do .api-key (regenerada em 29/jun/2026)
- Workflows n8n JSON prontos para WhatsApp → CRM e CRM → WhatsApp
- Documentação completa em workflows/README-FASE5-OPENWA-TWENTY.md

Pendência: import manual dos workflows via n8n UI após login wizard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 16:49:26 -03:00

114 lines
4.1 KiB
Markdown

# Fase 5 — Integração WhatsApp (OpenWA) ↔ Twenty CRM via n8n
## Status atual (06/jul/2026)
### ✅ O que está pronto
- OpenWA rodando (`https://wa.m5digital.net.br`), API funcional
- API key OpenWA recuperada: gravada em `/app/data/.api-key` (regenerada em 29/jun/2026)
- `https://crm.m5digital.net.br` apontando para Twenty CRM
- n8n rodando, 3 webhooks ativos (twenty-webhook, chatwoot-webhook, saleor-webhook)
- URL pública `https://n8n.m5digital.net.br/webhook/{path}` acessível externamente
- Workflows JSON prontos em:
- `/root/ecommerce/workflows/m5-openwa-to-twenty.json` (entrada WhatsApp → CRM)
- `/root/ecommerce/workflows/m5-twenty-to-openwa.json` (saída CRM → WhatsApp)
### ⚠️ Pendência: login do n8n
Ao longo da investigação:
- API key correta: `n8n_api_6878ecab2c6a0c5a58be3b265e1227075a3c60e3c7f430c574ec2043029bdc2d`
- Email correto do owner: `admin@m5online.com.br`
- Senha foi resetada (`user-management:reset`) — você precisa definir nova senha via wizard
**Ação sua**: ir em `https://n8n.m5digital.net.br`, completar setup wizard (vai pedir email + senha nova).
---
## Como importar os workflows via n8n UI (depois do login)
### Workflow 1: M5 — OpenWA → Twenty CRM
1. Abrir https://n8n.m5digital.net.br
2. Clicar **Workflows** no menu lateral
3. Botão **+ New workflow** (canto superior direito)
4. Clicar nos 3 pontinhos (⋮) → **Import from File...**
5. Selecionar `/root/ecommerce/workflows/m5-openwa-to-twenty.json`
6. **Activate** (toggle no topo)
**O que ele faz:**
- Recebe `POST https://n8n.m5digital.net.br/webhook/openwa-incoming`
- Filtra apenas evento `message.received` do OpenWA
- Extrai `phone`, `name`, `message` do payload
- Cria Note no Twenty CRM com `[Phone: 5511999999999] mensagem do cliente`
**Campos que serão gravados no Twenty** (assumindo schema padrão):
- `note.body` — texto da mensagem com prefixo do telefone
- `note.title` — "WhatsApp"
### Workflow 2: M5 — Twenty CRM → OpenWA (resposta)
1. Importar `/root/ecommerce/workflows/m5-twenty-to-openwa.json`
2. **Activate**
**O que ele faz:**
- Recebe `POST https://n8n.m5digital.net.br/webhook/twenty-outgoing`
- Pega `person.phone` + `note.body` do payload
- Envia via OpenWA API `POST /api/sessions/marcos-pessoal/messages/send-text`
---
## Como registrar o webhook no OpenWA (depois)
Quando você tiver uma sessão WhatsApp ativa (`READY` no dashboard), registrar webhook:
```bash
OPENWA_KEY="owa_k1_1e56b98c39a2daa5bdb537d04f35da17117021bedc8c1de80eaba2926c584b39"
SESSION="marcos-pessoal"
N8N_HOOK="https://n8n.m5digital.net.br/webhook/openwa-incoming"
curl -sk -X POST "https://wa.m5digital.net.br/api/sessions/$SESSION/webhooks" \
-H "X-API-Key: $OPENWA_KEY" \
-H "Content-Type: application/json" \
-d "{
\"url\": \"$N8N_HOOK\",
\"events\": [\"message.received\", \"session.status\"],
\"secret\": \"defina-seu-segredo-aqui\"
}"
```
**Saída esperada:** 201 Created com `id`, `sessionId`, `url`, `events`, `active: true`.
---
## Como conectar o Twenty → n8n (saída CRM)
1. Login no Twenty: https://crm.m5digital.net.br
2. **Settings → Webhooks** (canto superior direito)
3. New webhook:
- **URL**: `https://n8n.m5digital.net.br/webhook/twenty-outgoing`
- **Events**: `note.created`, `person.updated`
- **Secret**: mesma do n8n
4. Salvar
---
## Validação end-to-end
1. Enviar mensagem WhatsApp para o número da sessão `marcos-pessoal`
2. OpenWA dispara webhook → n8n recebe
3. n8n extrai dados → chama `https://crm.m5digital.net.br/graphql`
4. Verificar no Twenty: nova Note com `[Phone: ...] mensagem`
**Reverse:**
1. No Twenty, criar Note manualmente com texto "teste via CRM"
2. Webhook do Twenty dispara → n8n recebe
3. n8n chama OpenWA send-text
4. WhatsApp recebe a mensagem
---
## Próximas melhorias (depois que validação passar)
- Adicionar filtro por número (não criar Note de contatos bloqueados)
- Adicionar idempotência (não duplicar Note se mesma mensagem chegar 2x)
- Adicionar suporte a mídia (imagem, áudio, documento)
- Adicionar Lookup de Company por nome se a mensagem mencionar empresa
- Adicionar twilio de 24h após última msg (regra WhatsApp Business)