diff --git a/whatsapp-gateway/baileys-client.js b/whatsapp-gateway/baileys-client.js index fce25f7..38ebcf5 100644 --- a/whatsapp-gateway/baileys-client.js +++ b/whatsapp-gateway/baileys-client.js @@ -74,6 +74,7 @@ async function startSession(session_key, webhook_url) { msgRetryCounterCache, markOnlineOnConnect: true, syncFullHistory: true, + keepAliveIntervalMs: 30000, getMessage: async (key) => { const compoundKey = `${key.remoteJid}:${key.id}`; return recentMessages.get(compoundKey) || recentMessages.get(key.id); @@ -90,20 +91,20 @@ async function startSession(session_key, webhook_url) { // Listen for incoming messages sock.ev.on('messages.upsert', async (m) => { - console.log(`[Upsert] Event received type=${m.type} messagesCount=${m.messages?.length}`); if (m.messages && m.messages.length > 0) { - console.log(`[Upsert] First message keys:`, Object.keys(m.messages[0])); - console.log(`[Upsert] First message key:`, JSON.stringify(m.messages[0].key)); - console.log(`[Upsert] First message structure:`, JSON.stringify(m.messages[0].message)); - - // Cache all incoming messages to serve E2EE retries + console.log(`[Upsert] type=${m.type} count=${m.messages.length}`); for (const msg of m.messages) { - if (msg.key && msg.key.id && msg.message) { + if (msg.key && msg.key.id && msg.key.remoteJid && msg.message) { + const compoundKey = `${msg.key.remoteJid}:${msg.key.id}`; + recentMessages.set(compoundKey, msg.message); recentMessages.set(msg.key.id, msg.message); - if (recentMessages.size > 2000) { - const firstKey = recentMessages.keys().next().value; - recentMessages.delete(firstKey); - } + } + } + if (recentMessages.size > 5000) { + const keys = recentMessages.keys(); + for (let i = 0; i < 1000; i++) { + const key = keys.next().value; + if (key) recentMessages.delete(key); } } } @@ -418,10 +419,13 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa // Cache outbound messages for E2EE decryption retries // Use compound key (remoteJid:id) to match how Baileys queries getMessage - if (sentMsg && sentMsg.key && sentMsg.key.id && sentMsg.message) { - const compoundKey = `${sentMsg.key.remoteJid}:${sentMsg.key.id}`; - recentMessages.set(compoundKey, sentMsg.message); - recentMessages.set(sentMsg.key.id, sentMsg.message); + if (sentMsg && sentMsg.key && sentMsg.key.id) { + const msgContent = sentMsg.message || (message ? { conversation: message } : null); + if (msgContent) { + const compoundKey = `${sentMsg.key.remoteJid}:${sentMsg.key.id}`; + recentMessages.set(compoundKey, msgContent); + recentMessages.set(sentMsg.key.id, msgContent); + } if (recentMessages.size > 5000) { const keys = recentMessages.keys(); for (let i = 0; i < 1000; i++) {