Gateway de webhooks da Meta (WhatsApp Cloud) para os ambientes de mensageria Whiz (https://*.whiz.net.br).
O gateway recebe webhooks da Meta, identifica o inbox de destino pelo PID (phone_number_id), enfileira a mensagem em uma fila RabbitMQ dinâmica por inbox, consome essa fila e re-envia o webhook para a URL do ambiente do inbox, com retentativas. Qualquer falha em qualquer ponto resulta no envio da mensagem para a tabela de mensagens mortas (fila_mensagens_mortas). É um passthrough: não interpreta o conteúdo do payload.
NestJS · Prisma (PostgreSQL) · RabbitMQ (amqp-connection-manager) · Redis (ioredis) · Winston · @nestjs/terminus · Swagger.
Validadas no bootstrap (Joi). A ausência de qualquer obrigatória impede a aplicação de subir.
| Env | Obrigatória | Default | Descrição |
|---|---|---|---|
DATABASE_URL |
sim | — | URL de conexão PostgreSQL |
RABBITMQ_URL |
sim | — | URL do broker RabbitMQ |
REDIS_URL |
sim | — | URL de conexão Redis (ex.: redis://localhost:6379) |
ADMIN_API_KEY |
sim | — | Segredo de administração de API keys |
ENV |
não | development |
development / staging / production |
PORT |
não | 3000 |
Porta HTTP |
META_VERIFY_TOKEN |
sim | — | Token de verificação do webhook da Meta |
META_APP_SECRET |
sim | — | Segredo da app Meta (validação de assinatura) |
DISPATCH_MAX_RETRIES |
não | 5 |
Máximo de retentativas de re-envio |
DISPATCH_BACKOFF_BASE_MS |
não | 1000 |
Base do backoff exponencial (ms) |
META_GRAPH_URL |
sim | — | Base URL da Meta Graph API com versão embutida (ex.: https://graph.facebook.com/v20.0) |
META_ACCESS_TOKEN |
sim | — | Bearer token do app Meta; injetado automaticamente pelo adapter; nunca exposto ao caller |
GATEWAY_PUBLIC_URL |
não | — | URL pública do gateway (ex.: https://gateway.example.com); necessário para endpoint_uri nas rotas dinâmicas de flows |
FLOWS_PRIVATE_KEY |
não | — | Chave privada RSA-2048 PEM (com \n escapados); necessária para descriptografar payloads no endpoint de flows |
# 1. Instalar dependências
npm install
# 2. Aplicar migrations (cria tabelas + seed dos 3 ambientes fixos)
npx prisma migrate deploy
npx prisma generate
# 3. Subir em modo desenvolvimento
npm run start:dev- Healthcheck (readiness):
GET http://localhost:3000/—200quando banco e broker estão saudáveis,503caso contrário. - Documentação Swagger:
http://localhost:3000/docs(OpenAPI JSON em/docs-json).
npm run test # unitários
npm run test:e2e # e2e
npm run test:cov # coberturaMapa do código: docs/CODEBASE.md.