|
@@ -2,6 +2,8 @@ const API = require("../../lib/API")
|
|
|
const AccessControl = require("../../lib/AccessControl")
|
|
|
const { BaseStdResponse } = require("../../BaseStdResponse")
|
|
|
const db = require("../../plugin/DataBase/db")
|
|
|
+const Redis = require('../../plugin/DataBase/Redis')
|
|
|
+const { v4: uuidv4 } = require('uuid')
|
|
|
const axios = require("axios")
|
|
|
const { core_url } = require("../../config.json")
|
|
|
|
|
@@ -16,9 +18,9 @@ class AIChat extends API {
|
|
|
const { uuid, session, message } = req.body
|
|
|
|
|
|
// 参数校验
|
|
|
- if (!uuid || !session || !message)
|
|
|
+ if (!uuid || !session || !message)
|
|
|
return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
|
|
|
-
|
|
|
+
|
|
|
|
|
|
// session 校验
|
|
|
const sessionValid = await AccessControl.checkSession(uuid, session)
|
|
@@ -27,20 +29,25 @@ class AIChat extends API {
|
|
|
}
|
|
|
|
|
|
const userTime = new Date().getTime() // 用户消息发送时间
|
|
|
+ const msgid = uuidv4()
|
|
|
+
|
|
|
+ res.json({
|
|
|
+ ...BaseStdResponse.OK,
|
|
|
+ id: msgid
|
|
|
+ })
|
|
|
|
|
|
try {
|
|
|
const endpoint = `${core_url}/ai/chat`
|
|
|
const aiResponse = await axios.post(endpoint, { uuid, message })
|
|
|
|
|
|
const aiData = aiResponse?.data?.msg
|
|
|
- if (!aiData)
|
|
|
+ if (!aiData)
|
|
|
throw new Error("AI响应格式错误")
|
|
|
|
|
|
const aiTime = new Date().getTime()
|
|
|
|
|
|
- res.json({
|
|
|
- ...BaseStdResponse.OK,
|
|
|
- data: aiData
|
|
|
+ await Redis.set(`message:${msgid}`, aiData, {
|
|
|
+ EX: 600
|
|
|
})
|
|
|
|
|
|
// 异步写入数据库
|
|
@@ -57,9 +64,8 @@ class AIChat extends API {
|
|
|
await Promise.all([insertUserMessage, insertAIMessage])
|
|
|
} catch (error) {
|
|
|
this.logger.error("消息发送失败:" + error.stack)
|
|
|
- res.json({
|
|
|
- ...BaseStdResponse.ERR,
|
|
|
- msg: "消息发送失败,请稍后再试"
|
|
|
+ await Redis.set(`message:${msgid}`, '消息发送失败,请稍后再试', {
|
|
|
+ EX: 600
|
|
|
})
|
|
|
}
|
|
|
}
|