Ferramenta interna. Nenhum chat é capturado até um admin habilitar. Allowlist default: 0.
- Copie
.env.example→.enve definaADMIN_PASSWORDforte. - Atrás de HTTPS:
COOKIE_SECURE=truee, se houver proxy,TRUST_PROXY=true. - Preencha Discord (
DISCORD_TOKEN,DISCORD_GUILD_ID, opcionalDISCORD_CATEGORY_ID). - Suba:
docker compose up -d --buildPostgres só escuta em 127.0.0.1:5432. A app publica 3300. Volumes: sessão Baileys (attendix_wa) e storage (attendix_storage).
Probes: GET /health (processo) e GET /ready (Postgres; 503 se o DB cair).
docker compose up -d postgres ainda serve para desenvolver no host com pnpm start:dev.
cp .env.example .env
docker compose up -d postgres
pnpm install
pnpm prisma:migrate
pnpm start:devAbra http://localhost:3300. Login: ADMIN_USER / ADMIN_PASSWORD. Logout invalida a sessão no Postgres (token no cookie, hash no banco).
- WaChat: catálogo + captura (
enableddefault false). - Canal Discord 1:1 em
discordChannelId; lista usalistIde o canal daBroadcastList. gateway_messages:waMessageIdúnico;discordMessageIdindexado (fan-out).- Mídia em
storage/media(nome de ficheiro; tetoMEDIA_MAX_BYTES; TTLMEDIA_TTL_HOURS).
- WhatsApp: QR na aba Conexão (não vai no payload o QR bruto). Pairing: DDI+número, 10–15 dígitos. Reconnect com backoff até 60s.
- Discord: login com retry; sem token o gateway WA/inbox continua.
- Áudio: Whisper local +
ffmpeg; TTSespeak-ngou Piper. Fila de speech limitada. - Login: 8 falhas / 15 min por IP.
- Não commitar
.env,auth_info_baileys/nemstorage/.
GET /health·GET /readyPOST /admin/login{ username, password }POST /admin/logoutGET /admin/ready(detalhe WA/Discord, autenticado)POST /admin/chats·PATCH /admin/chats/:jidPOST /admin/broadcasts·DELETE /admin/broadcasts/:idPOST /admin/inbox/:jid/reply{ message }