Files
whatsappNucleo/server/api/messages/[instanceId]/[chatId]/send.post.ts
josedario87 478f4f8b34
Some checks failed
build-and-deploy / build-and-deploy (push) Failing after 13s
Fix: API de chats con lastMessage y send acepta content
2025-12-02 19:44:06 -06:00

57 lines
1.5 KiB
TypeScript

/**
* 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 {
content?: string
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<SendMessageBody>(event)
// Accept both 'content' and 'message' fields
const messageText = body.content || body.message
if (!messageText?.trim()) {
throw createError({ statusCode: 400, message: 'Message content 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: messageText
})
return {
success: true,
messageId: result.key.id
}
} catch (error) {
throw createError({
statusCode: 500,
message: `Failed to send message: ${(error as Error).message}`
})
}
})