diff --git a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md index 0e7d45b..ed9b184 100644 --- a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md +++ b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md @@ -512,6 +512,28 @@ comenzile explicite: „Maria, stop" / „preiau eu" si „Maria, continua". `TEST_MODE_SELF_CHAT_ONLY=true`. Filtrul e si in punte, si in consumer. Azi: `120363409761730101@g.us` — grupul „Maria Test". +`ALLOW_SELF_CHAT=false` scoate si chatul cu tine insuti, deci **ramane doar grupul**. +Asa e configurat acum (2026-09-01). Motivul: `SUPPORT_JID` e tot numarul propriu, +deci escaladarile, reamintirile si raspunsurile suportului cadeau in acelasi chat cu +intrebarile — Maria isi citea propriul canal de suport ca pe o discutie cu un client. +Cele doua comutatoare sunt independente: + +| `TEST_MODE_SELF_CHAT_ONLY` | `ALLOW_SELF_CHAT` | Unde raspunde Maria | +|---|---|---| +| `true` | `true` | self-chat + grupurile din `ALLOWED_GROUP_JIDS` | +| `true` | `false` | **doar** grupurile din `ALLOWED_GROUP_JIDS` (azi) | +| `false` | `true` | oricine ii scrie pe numarul legat | +| `false` | `false` | oricine, minus self-chat | + +Filtrul e in punte (`whatsapp/index.js`), inainte de coada de mesaje: ce se opreste +acolo nu ajunge niciodata la consumer. Se vede in `/status` (`allowSelfChat`) si in +linia de conectare din `logs/whatsapp.log`. + +> Cat timp `SUPPORT_JID` e numarul propriu, **trimiterea** catre suport merge in +> continuare (filtrul e doar pe mesajele primite), dar ce raspunzi tu acolo nu mai e +> citit — deci nici completarile, nici `raspuns_om` nu se inregistreaza din +> self-chat. Cand suportul devine un grup sau alt numar, dispare si limita asta. + > **Nu pune aici `echo-test` (`120363424350922235@g.us`).** E canalul WhatsApp al lui > Echo (LXC 110), iar puntea lui nu filtreaza `fromMe` in grupuri > (`if (msg.key.fromMe && !isGroup) continue`). Cei doi boti si-ar raspunde unul diff --git a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/env.example b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/env.example index a36a33d..86c65f3 100644 --- a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/env.example +++ b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/env.example @@ -10,6 +10,11 @@ BRIDGE_PORT=8099 # dupa ce esti multumit de calitatea raspunsurilor — altfel Maria raspunde la # oricine iti scrie pe numarul legat. TEST_MODE_SELF_CHAT_ONLY=true +# false = Maria nu mai raspunde in chatul cu tine insuti, doar in grupurile din +# ALLOWED_GROUP_JIDS. De pus pe false cand SUPPORT_JID e chiar numarul propriu: +# altfel escaladarile si raspunsurile suportului cad in acelasi chat cu +# intrebarile. +ALLOW_SELF_CHAT=true # Grupuri in care Maria raspunde chiar si cu self-chat-only (JID-uri, separate prin # virgula). JID-ul unui grup se citeste din punte: curl -s localhost:8099/groups # ATENTIE: nu pune un grup in care raspunde si Echo (LXC 110) — puntea lui nu diff --git a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/whatsapp/index.js b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/whatsapp/index.js index eaec630..f057c83 100644 --- a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/whatsapp/index.js +++ b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/whatsapp/index.js @@ -28,6 +28,10 @@ const MEDIA_DIR = process.env.MARIA_BRIDGE_DIR : path.join(__dirname, 'media'); const MAX_RECONNECT_ATTEMPTS = 5; const TEST_MODE_SELF_CHAT_ONLY = (process.env.TEST_MODE_SELF_CHAT_ONLY || 'true') !== 'false'; +// Self-chat-ul e comod la primele teste, dar acolo SUPPORT_JID e chiar propriul +// numar: escaladarile si raspunsurile suportului ajung in acelasi chat cu +// intrebarile clientului. Pe 'false' ramane doar ALLOWED_GROUP_JIDS. +const ALLOW_SELF_CHAT = (process.env.ALLOW_SELF_CHAT || 'true') !== 'false'; // Grupuri in care Maria are voie sa raspunda chiar si in modul self-chat. Testarea // intr-un grup dedicat scoate zgomotul din chatul „Eu" — dar numai grupurile de // aici trec, ca sa nu inceapa Maria sa vorbeasca in cele 197 de grupuri ale contului. @@ -192,7 +196,7 @@ async function startConnection() { // apare in credentiale dar nu si in remoteJid-ul mesajelor — il taiem. const rawLid = sock.user?.lid || sock.authState?.creds?.me?.lid || null; ownLid = rawLid ? `${rawLid.split(':')[0].split('@')[0]}@lid` : null; - console.log(`[whatsapp] Connected as ${phoneNumber} (lid: ${ownLid || 'n/a'}, self-chat-only mode: ${TEST_MODE_SELF_CHAT_ONLY})`); + console.log(`[whatsapp] Connected as ${phoneNumber} (lid: ${ownLid || 'n/a'}, self-chat-only mode: ${TEST_MODE_SELF_CHAT_ONLY}, self-chat: ${ALLOW_SELF_CHAT ? 'da' : 'oprit'}, grupuri: ${[...ALLOWED_GROUP_JIDS].join(', ') || '-'})`); } if (connection === 'close') { @@ -237,6 +241,10 @@ async function startConnection() { // Mesajele aruncate se logheaza. Fara asta, un JID care nu se potriveste cu // ownJid (ex. formatul @lid) face bridge-ul sa taca fara nicio urma in log. const isAllowedGroup = isGroup && ALLOWED_GROUP_JIDS.has(msg.key.remoteJid); + if (isSelfChat && !ALLOW_SELF_CHAT) { + console.log(`[whatsapp] ignorat (self-chat oprit): remoteJid=${msg.key.remoteJid}`); + continue; + } if (TEST_MODE_SELF_CHAT_ONLY && !isSelfChat && !isAllowedGroup) { console.log(`[whatsapp] ignorat (nu e self-chat): remoteJid=${msg.key.remoteJid} ownJid=${ownJid} ownLid=${ownLid}`); continue; @@ -304,6 +312,7 @@ app.get('/status', (_req, res) => { connected, phone: phoneNumber, selfChatOnly: TEST_MODE_SELF_CHAT_ONLY, + allowSelfChat: ALLOW_SELF_CHAT, allowedGroups: [...ALLOWED_GROUP_JIDS], lid: ownLid, qr: connected ? null : currentQR,