| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const API = require('../../../lib/API')
- const { BaseStdResponse } = require('../../../BaseStdResponse')
- const AccessControl = require('../../../lib/AccessControl')
- const OneBotV11 = require('../../../plugin/OneBot/OneBotV11')
- const { ConversationService } = require('../../../lib/AIChat/ConversationService')
- class SendMessage extends API {
- constructor() {
- super()
- this.setPath('/AIChat/Message')
- this.setMethod('POST')
- }
- async onRequest(req, res) {
- const { uuid, session, conversation_id, content, images = [] } = req.body
- if ([uuid, session].some(v => v === '' || v === null || v === undefined)) {
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- }
- if (!await AccessControl.checkSession(uuid, session)) {
- return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- }
- const saved = await ConversationService.addUserMessage({
- uuid,
- conversationId: conversation_id,
- content,
- images
- })
- if (!saved) return res.json({ ...BaseStdResponse.ERR, msg: '会话不存在或无权发送' })
- if (saved.missingContent) return res.json({ ...BaseStdResponse.MISSING_PARAMETER, msg: '请输入消息或上传图片' })
- res.json({
- ...BaseStdResponse.OK,
- data: {
- message_id: saved.messageId,
- conversation_id: saved.conversationId,
- conversation_no: saved.conversationNo,
- conversation: saved.conversation,
- message: saved.message
- }
- })
- try {
- await OneBotV11.sendAiChatMessage({
- conversationId: saved.conversationId,
- conversationNo: saved.conversationNo,
- senderUuid: uuid,
- content: saved.content,
- images: saved.images
- })
- } catch (err) {
- this.logger.error(`AIChat OneBot 转发失败: ${err.stack || err}`)
- await ConversationService.addSystemMessage({
- conversationId: saved.conversationId,
- content: '消息已保存,但暂时无法连接小妍助理,请稍后再试。',
- status: 'error',
- errorMsg: err.message || 'OneBot send failed'
- })
- }
- }
- }
- module.exports.SendMessage = SendMessage
|