Phase 4: Support LID identity scheme and fix incoming message parsing

This commit is contained in:
Hamza-Ayed
2026-05-21 23:44:25 +03:00
parent 0a1752ce44
commit ec7c9ffc29
9 changed files with 790 additions and 20 deletions

View File

@@ -229,7 +229,34 @@ async function disconnectSession(session_key) {
}
}
/**
* Send a message using an active session
*/
async function sendMessage(session_key, phone, message, mediaUrl = null) {
const sock = sessions.get(session_key);
if (!sock) {
throw new Error(`Session ${session_key} is not active or connected`);
}
let jid = phone.includes('@') ? phone : `${phone}@s.whatsapp.net`;
if (mediaUrl) {
const ext = mediaUrl.split('.').pop().toLowerCase();
if (['jpg', 'jpeg', 'png', 'webp'].includes(ext)) {
return await sock.sendMessage(jid, { image: { url: mediaUrl }, caption: message });
} else if (['mp4', 'mkv', 'avi'].includes(ext)) {
return await sock.sendMessage(jid, { video: { url: mediaUrl }, caption: message });
} else {
return await sock.sendMessage(jid, { document: { url: mediaUrl }, caption: message, fileName: mediaUrl.split('/').pop() });
}
}
return await sock.sendMessage(jid, { text: message });
}
module.exports = {
startSession,
disconnectSession
disconnectSession,
sendMessage
};

View File

@@ -20,7 +20,7 @@ for (const p of envPaths) {
const express = require('express');
const cors = require('cors');
const { startSession, disconnectSession } = require('./baileys-client');
const { startSession, disconnectSession, sendMessage } = require('./baileys-client');
const app = express();
app.use(cors());
@@ -76,6 +76,23 @@ app.post('/api/sessions/disconnect', async (req, res) => {
}
});
// Send outbound message
app.post('/api/messages/send', async (req, res) => {
const { session_key, phone, message, media_url } = req.body;
if (!session_key || !phone || !message) {
return res.status(400).json({ error: 'Missing session_key, phone, or message' });
}
try {
const result = await sendMessage(session_key, phone, message, media_url);
res.json({ status: 'success', data: result });
} catch (err) {
console.error(`Error sending message via ${session_key} to ${phone}:`, err);
res.status(500).json({ error: err.message || 'Failed to send message' });
}
});
app.listen(PORT, () => {
console.log(`🚀 Nabeh WhatsApp Gateway running on port ${PORT}`);
});