Correcao Sidebar Classico e Rail, Correcao Layout, Ajuste de Breakpoint para Tailwind, Ajuste AppTopbar, Ajuste Menu PopOver, Recriado Paleta de Cores, Inserido algumas animações leves, Reajuste Cor items NOVOS da tabela, Drawer Ajuda Corrigido no Logout, Whatsapp, sms, email, recursos extras
This commit is contained in:
243
docs/whatsapp.md
Normal file
243
docs/whatsapp.md
Normal file
@@ -0,0 +1,243 @@
|
||||
# 📱 Disparando WhatsApp Local — AgênciaPsi
|
||||
|
||||
Guia completo para rodar o sistema de lembretes por WhatsApp no ambiente local de desenvolvimento.
|
||||
|
||||
---
|
||||
|
||||
## 🧱 O que você precisa ter rodando
|
||||
|
||||
| Serviço | Como subir | Porta |
|
||||
|---|---|---|
|
||||
| Supabase local | `npx supabase start` | 54321 |
|
||||
| Evolution API | Docker Desktop | 8080 |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Passo 1 — Subir o Supabase local
|
||||
|
||||
Abre o PowerShell na pasta do projeto e roda:
|
||||
|
||||
```powershell
|
||||
cd D:\leonohama\AgenciaPsi.com.br\Sistema\agenciapsi-primesakai
|
||||
npx supabase start
|
||||
```
|
||||
|
||||
Aguarda aparecer as URLs e credenciais. Confirma que está rodando acessando:
|
||||
```
|
||||
http://127.0.0.1:54323
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐳 Passo 2 — Subir a Evolution API
|
||||
|
||||
Abre o Docker Desktop e confirma que está com o status **Engine running**.
|
||||
|
||||
Abre outro PowerShell e roda:
|
||||
|
||||
```powershell
|
||||
cd D:\leonohama\AgenciaPsi.com.br\Sistema\agenciapsi-primesakai\evolution-api
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Confirma que está rodando acessando:
|
||||
```
|
||||
http://localhost:8080
|
||||
```
|
||||
|
||||
Deve retornar:
|
||||
```json
|
||||
{"status":200,"message":"Welcome to the Evolution API, it is working!"}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📱 Passo 3 — Conectar o WhatsApp
|
||||
|
||||
Acessa o painel da Evolution API:
|
||||
```
|
||||
http://localhost:8080/manager
|
||||
```
|
||||
|
||||
- Loga com a API key: `minha_chave_123`
|
||||
- Verifica se a instância `agenciapsi-teste` está com status **Connected**
|
||||
- Se estiver **Disconnected**, clica na instância → **Get QR Code** → escaneia com o celular
|
||||
|
||||
**Para escanear no celular:**
|
||||
WhatsApp → ⋮ (três pontinhos) → Aparelhos conectados → Conectar um aparelho
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Passo 4 — Subir a Edge Function
|
||||
|
||||
Abre outro PowerShell e roda:
|
||||
|
||||
```powershell
|
||||
cd D:\leonohama\AgenciaPsi.com.br\Sistema\agenciapsi-primesakai
|
||||
npx supabase functions serve process-notification-queue --no-verify-jwt
|
||||
```
|
||||
|
||||
Aguarda aparecer:
|
||||
```
|
||||
- http://127.0.0.1:54321/functions/v1/process-notification-queue
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ Passo 5 — Popular a fila manualmente
|
||||
|
||||
Acessa o Supabase Studio em `http://127.0.0.1:54323`, vai em **SQL Editor** e roda:
|
||||
|
||||
```sql
|
||||
-- Popula a fila com sessões das próximas 48h
|
||||
select populate_notification_queue();
|
||||
|
||||
-- Verifica o que foi gerado
|
||||
select id, status, scheduled_at, channel, recipient_address, resolved_vars
|
||||
from notification_queue
|
||||
order by created_at desc
|
||||
limit 10;
|
||||
```
|
||||
|
||||
Se precisar corrigir o número do destinatário:
|
||||
|
||||
```sql
|
||||
update notification_queue
|
||||
set recipient_address = '5516999999999' -- coloca o número real aqui
|
||||
where status = 'pendente';
|
||||
```
|
||||
|
||||
Se precisar reenviar um item que falhou:
|
||||
|
||||
```sql
|
||||
update notification_queue
|
||||
set status = 'pendente'
|
||||
where id = 'cole-o-uuid-aqui';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📤 Passo 6 — Disparar a fila
|
||||
|
||||
Abre outro PowerShell e roda:
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest `
|
||||
-Uri "http://127.0.0.1:54321/functions/v1/process-notification-queue" `
|
||||
-Method POST `
|
||||
-Headers @{"Authorization"="Bearer sb_secret_N7UND0UgjKTVK-Uodkm0Hg_xSvEMPvz"} `
|
||||
-TimeoutSec 30 `
|
||||
| Select-Object -ExpandProperty Content
|
||||
```
|
||||
|
||||
**Resposta esperada:**
|
||||
```json
|
||||
{"processados":[{"id":"...","status":"enviado"}]}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Passo 7 — Simular o cron (disparo automático a cada 5 min)
|
||||
|
||||
Para simular o `pg_cron` localmente, cria um arquivo `cron-local.ps1` na raiz do projeto:
|
||||
|
||||
```powershell
|
||||
while ($true) {
|
||||
Write-Host "$(Get-Date) - Populando fila..."
|
||||
Invoke-WebRequest `
|
||||
-Uri "http://127.0.0.1:54321/functions/v1/process-notification-queue" `
|
||||
-Method POST `
|
||||
-Headers @{"Authorization"="Bearer sb_secret_N7UND0UgjKTVK-Uodkm0Hg_xSvEMPvz"} `
|
||||
-TimeoutSec 30 `
|
||||
| Select-Object -ExpandProperty Content
|
||||
Write-Host "$(Get-Date) - Aguardando 5 minutos..."
|
||||
Start-Sleep -Seconds 300
|
||||
}
|
||||
```
|
||||
|
||||
Roda com:
|
||||
```powershell
|
||||
cd D:\leonohama\AgenciaPsi.com.br\Sistema\agenciapsi-primesakai
|
||||
.\cron-local.ps1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Passo 8 — Verificar logs
|
||||
|
||||
No Supabase Studio, roda:
|
||||
|
||||
```sql
|
||||
-- Ver histórico de envios
|
||||
select id, status, channel, recipient_address, sent_at, failure_reason
|
||||
from notification_logs
|
||||
order by created_at desc
|
||||
limit 10;
|
||||
|
||||
-- Ver status da fila
|
||||
select status, count(*)
|
||||
from notification_queue
|
||||
group by status;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Teste rápido de envio direto (sem fila)
|
||||
|
||||
Para testar se o WhatsApp está funcionando sem passar pela fila:
|
||||
|
||||
```powershell
|
||||
$body = '{"number":"5516999999999","text":"Teste direto AgênciaPsi!"}'
|
||||
$headers = @{"apikey"="minha_chave_123"; "Content-Type"="application/json"}
|
||||
Invoke-WebRequest `
|
||||
-Uri "http://localhost:8080/message/sendText/agenciapsi-teste" `
|
||||
-Method POST `
|
||||
-Headers $headers `
|
||||
-Body $body `
|
||||
-TimeoutSec 30 `
|
||||
| Select-Object -ExpandProperty Content
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Problemas comuns
|
||||
|
||||
| Problema | Causa | Solução |
|
||||
|---|---|---|
|
||||
| `Function not found` | Terminal na pasta errada | `cd` para a raiz do projeto antes de rodar o `functions serve` |
|
||||
| `{"count":0}` no QR Code | Bug da versão | Usar imagem `evoapicloud/evolution-api:latest` |
|
||||
| `Nenhum item na fila` | Item já processado ou com status diferente | Resetar com `update notification_queue set status = 'pendente'` |
|
||||
| Timeout no envio | Redis não está rodando | Verificar se o container `evolution-redis` está up no Docker |
|
||||
| `undefined/message/sendText/undefined` | Campos errados nas credenciais | Verificar se `credentials` tem `api_url` e `instance_name` |
|
||||
|
||||
---
|
||||
|
||||
## 📋 Resumo das credenciais locais
|
||||
|
||||
```
|
||||
Supabase URL: http://127.0.0.1:54321
|
||||
Supabase Studio: http://127.0.0.1:54323
|
||||
Supabase Secret Key: sb_secret_N7UND0UgjKTVK-Uodkm0Hg_xSvEMPvz
|
||||
Evolution API URL: http://localhost:8080
|
||||
Evolution API Key: minha_chave_123
|
||||
Instância WhatsApp: agenciapsi-teste
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quando for para produção
|
||||
|
||||
1. Subir a Evolution API em um VPS (Hostinger, Contabo ~R$30/mês)
|
||||
2. Atualizar `api_url` em `notification_channels` para a URL do VPS
|
||||
3. Configurar o `pg_cron` no Supabase cloud:
|
||||
|
||||
```sql
|
||||
select cron.schedule(
|
||||
'populate-notification-queue',
|
||||
'*/5 * * * *',
|
||||
$$ select populate_notification_queue(); $$
|
||||
);
|
||||
```
|
||||
|
||||
4. Configurar o disparo da Edge Function via `pg_net` ou webhook externo
|
||||
5. Migrar para API Oficial da Meta quando tiver volume de clientes
|
||||
Reference in New Issue
Block a user