Skip to content

adaptwebtech/whiz-gateway

Repository files navigation

whiz-gateway

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.

Stack

NestJS · Prisma (PostgreSQL) · RabbitMQ (amqp-connection-manager) · Redis (ioredis) · Winston · @nestjs/terminus · Swagger.

Variáveis de ambiente

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

Como rodar

# 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/200 quando banco e broker estão saudáveis, 503 caso contrário.
  • Documentação Swagger: http://localhost:3000/docs (OpenAPI JSON em /docs-json).

Testes

npm run test       # unitários
npm run test:e2e   # e2e
npm run test:cov   # cobertura

Documentação

Feature Spec Implementação
gateway-foundation docs/specs/gateway-foundation.md docs/implementation/gateway-foundation.md
cadastro-ambientes docs/specs/cadastro-ambientes.md docs/implementation/cadastro-ambientes.md
cadastro-inboxes docs/specs/cadastro-inboxes.md docs/implementation/cadastro-inboxes.md
fila-mensagens-mortas docs/specs/fila-mensagens-mortas.md docs/implementation/fila-mensagens-mortas.md
webhook-ingestao docs/specs/webhook-ingestao.md docs/implementation/webhook-ingestao.md
despacho-mensagens docs/specs/despacho-mensagens.md docs/implementation/despacho-mensagens.md
reenvio-mensagens docs/specs/reenvio-mensagens.md docs/implementation/reenvio-mensagens.md
api-keys-foundation docs/specs/api-keys-foundation.md docs/implementation/api-keys-foundation.md
wpp-adapter-core docs/specs/wpp-adapter-core.md docs/implementation/wpp-adapter-core.md
wpp-templates docs/specs/wpp-templates.md docs/implementation/wpp-templates.md
wpp-phone-numbers docs/specs/2026-06-03-wpp-phone-numbers.md docs/implementation/2026-06-03-wpp-phone-numbers.md
wpp-media-business-profiles docs/specs/2026-06-03-wpp-media-business-profiles.md docs/implementation/2026-06-03-wpp-media-business-profiles.md
wpp-flows docs/specs/2026-06-03-wpp-flows.md docs/implementation/2026-06-05-wpp-flows.md
wpp-flow-callbacks docs/specs/2026-06-05-wpp-flow-callbacks.md docs/implementation/2026-06-05-wpp-flow-callbacks.md
wpp-misc docs/specs/2026-06-03-wpp-misc.md docs/implementation/2026-06-05-wpp-misc.md
redirecionamentos-webhooks docs/specs/2026-06-08-redirecionamentos-webhooks.md docs/implementation/2026-06-08-redirecionamentos-webhooks.md
api-key-guard-admin-routes docs/specs/2026-06-08-api-key-guard-admin-routes.md docs/implementation/2026-06-08-api-key-guard-admin-routes.md
cache-ambientes-redis docs/specs/2026-06-08-cache-ambientes-redis.md docs/implementation/2026-06-08-cache-ambientes-redis.md

Mapa do código: docs/CODEBASE.md.

About

Gateway between Meta and Whiz-Server Enviromnents

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages