From 40546936022fb45df5a6828823418986d677bf2b Mon Sep 17 00:00:00 2001 From: zhaoyingbo Date: Tue, 29 Oct 2024 07:09:59 +0000 Subject: [PATCH] =?UTF-8?q?feat(event-proxy):=20=E6=9B=B4=E6=AD=A3event?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=96=B9=E5=BC=8F=EF=BC=8Cmichat=E7=9A=84Eve?= =?UTF-8?q?nt=E8=BD=AC=E5=8F=91=E7=BB=99=E4=BB=BB=E6=B5=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 152561 -> 152322 bytes package.json | 18 +++++++++--------- routes/bot/groupAgent/index.ts | 6 +++--- routes/bot/index.ts | 13 +++++++++---- services/attach/index.ts | 14 ++++++++++++++ types/context.ts | 2 +- 6 files changed, 36 insertions(+), 17 deletions(-) diff --git a/bun.lockb b/bun.lockb index 6a8cd93677dfba5f1d1652f1648fd516d38aec8d..027941dd766f35057292ab3df58b0fd3676efcc7 100755 GIT binary patch delta 24697 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 N&jR!280C2P{|{G{GOqvt delta 24660 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 diff --git a/package.json b/package.json index c6c7432..573ee3c 100644 --- a/package.json +++ b/package.json @@ -19,31 +19,31 @@ "devDependencies": { "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", - "@eslint/js": "^9.12.0", + "@eslint/js": "^9.13.0", "@types/node-schedule": "^2.1.7", "@types/uuid": "^10.0.0", - "bun-types": "^1.1.30", - "eslint": "^9.12.0", + "bun-types": "^1.1.33", + "eslint": "^9.13.0", "eslint-plugin-simple-import-sort": "^12.1.1", "husky": "^9.1.6", "lint-staged": "^15.2.10", "prettier": "^3.3.3", - "typescript-eslint": "^8.9.0" + "typescript-eslint": "^8.12.1" }, "peerDependencies": { "typescript": "^5.5.4" }, "dependencies": { - "@dotenvx/dotenvx": "^1.19.3", + "@dotenvx/dotenvx": "^1.21.0", "@egg/hooks": "^1.2.0", - "@egg/lark-msg-tool": "^1.13.2", + "@egg/lark-msg-tool": "^1.14.0", "@egg/logger": "^1.4.4", "@egg/net-tool": "^1.9.2", "@egg/path-tool": "^1.4.1", - "@langchain/core": "^0.3.12", - "@langchain/openai": "^0.3.7", + "@langchain/core": "^0.3.15", + "@langchain/openai": "^0.3.11", "joi": "^17.13.3", - "langfuse-langchain": "^3.27.0", + "langfuse-langchain": "^3.28.0", "node-schedule": "^2.1.1", "p-limit": "^6.1.0", "pocketbase": "^0.21.5", diff --git a/routes/bot/groupAgent/index.ts b/routes/bot/groupAgent/index.ts index 7f8f637..15f868c 100644 --- a/routes/bot/groupAgent/index.ts +++ b/routes/bot/groupAgent/index.ts @@ -395,12 +395,12 @@ const manageActionMsg = async (ctx: Context.Data) => { */ const groupAgent = async (ctx: Context.Data) => { const { - larkBody: { isEventMsg, isActionMsg }, + larkBody: { isEvent, isAction }, } = ctx // 如果是Event,则解析自然语言并发送对应的卡片 - if (isEventMsg) return manageEventMsg(ctx) + if (isEvent) return manageEventMsg(ctx) // 如果是Action,则取出用户选的值并判断是否需要继续发送表单卡片或者开始大模型推理 - if (isActionMsg) return manageActionMsg(ctx) + if (isAction) return manageActionMsg(ctx) } export default groupAgent diff --git a/routes/bot/index.ts b/routes/bot/index.ts index d5084ac..43fa047 100644 --- a/routes/bot/index.ts +++ b/routes/bot/index.ts @@ -8,7 +8,7 @@ import { manageEventMsg } from "./eventMsg" * @returns {Promise} 返回响应对象 */ export const manageBotReq = async (ctx: Context.Data): Promise => { - const { body, larkBody } = ctx + const { body, larkBody, app, attachService } = ctx // 检查请求体是否为空 if (!body) { @@ -21,10 +21,15 @@ export const manageBotReq = async (ctx: Context.Data): Promise => { return Response.json({ challenge: body.challenge }) } - // 处理Event消息 - if (larkBody.isEventMsg) manageEventMsg(ctx) + // 如果是michat的Event转发给MiChatServer + if (app === "michat" && larkBody.isEvent) { + attachService.proxyMiChatEvent(body) + } + + // 处理消息事件 + if (larkBody.isMessageEvent) manageEventMsg(ctx) // 处理Action消息 - if (larkBody.isActionMsg) return await manageActionMsg(ctx) + if (larkBody.isAction) return await manageActionMsg(ctx) // 返回成功响应 return ctx.genResp.ok() diff --git a/services/attach/index.ts b/services/attach/index.ts index 51306a0..15fb8c4 100644 --- a/services/attach/index.ts +++ b/services/attach/index.ts @@ -21,6 +21,20 @@ class AttachService extends NetToolBase { const URL = "https://report.imoaix.cn/report" return this.post(URL, body).catch(() => "") } + + /** + * 代理MiChat事件 + * @param {LarkEvent.Data} body - 事件数据。 + * @returns {Promise} 返回空。 + */ + async proxyMiChatEvent(body: LarkEvent.Data) { + const hostList = ["michat-staging.ai.srv", "michat.ai.srv"] + const path = "/api/v1/bypass/robot_event_callback" + for (const host of hostList) { + const URL = `http://${host}${path}` + await this.post(URL, body).catch(() => "") + } + } } export default AttachService diff --git a/types/context.ts b/types/context.ts index b5d73e1..c6ecaed 100644 --- a/types/context.ts +++ b/types/context.ts @@ -22,6 +22,6 @@ export namespace Context { attachService: AttachService path: PathCheckTool searchParams: URLSearchParams - app: string + app: "michat" | "egg" | string } }