/** * POST /api/messages/:instanceId/:chatId/send * Send a message to a chat (from UI) */ import { query } from '../../../../utils/database' import { baileysManager } from '../../../../services/baileys/manager' interface SendMessageBody { message: string } export default defineEventHandler(async (event) => { const username = getHeader(event, 'x-authentik-username') if (!username) { throw createError({ statusCode: 401, message: 'Unauthorized' }) } const instanceId = getRouterParam(event, 'instanceId') const chatId = getRouterParam(event, 'chatId') const body = await readBody(event) if (!body.message?.trim()) { throw createError({ statusCode: 400, message: 'Message is required' }) } // Get chat JID const chatResult = await query<{ jid: string }>( 'SELECT jid FROM chats WHERE id = $1 AND instance_id = $2', [chatId, instanceId] ) if (chatResult.rows.length === 0) { throw createError({ statusCode: 404, message: 'Chat not found' }) } const jid = chatResult.rows[0].jid try { const result = await baileysManager.sendMessage(instanceId!, jid, { text: body.message }) return { success: true, messageId: result.key.id } } catch (error) { throw createError({ statusCode: 500, message: `Failed to send message: ${(error as Error).message}` }) } })