From c706c515ee464c637f215eb3563d4a823f4fbde6 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 2 Jun 2026 06:10:02 +0000 Subject: [PATCH] =?UTF-8?q?fix(dialog):=20AI=20=E5=8A=A9=E6=89=8B=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8E=A8=E9=80=81=E8=A1=A5=E5=85=A8=E5=8F=91=E9=80=81?= =?UTF-8?q?=E8=80=85=E8=BA=AB=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AI 助手为虚拟用户(userid=-1)无会员记录,userid2nickname 返回空串, 导致群聊推送拼成 ": 内容"。友盟 App 推送与前端桌面/移动通知改为取 msg.nickname 或默认"AI 助手"作为发送者名,显示为 "名称: 内容"。 Co-Authored-By: Claude Opus 4.8 --- app/Tasks/WebSocketDialogMsgTask.php | 7 ++++++- language/original-api.txt | 1 + resources/assets/js/pages/manage.vue | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/Tasks/WebSocketDialogMsgTask.php b/app/Tasks/WebSocketDialogMsgTask.php index c1e6e411f..ad4b06c44 100644 --- a/app/Tasks/WebSocketDialogMsgTask.php +++ b/app/Tasks/WebSocketDialogMsgTask.php @@ -189,7 +189,12 @@ class WebSocketDialogMsgTask extends AbstractTask if ($umengUserid) { $setting = Base::setting('appPushSetting'); if ($setting['push'] === 'open') { - $umengTitle = User::userid2nickname($msg->userid); + if ($msg->userid == -1) { + // AI 助手虚拟用户没有会员记录,取自定义昵称或默认名称 + $umengTitle = ($msg->msg['nickname'] ?? '') ?: Doo::translate('AI 助手'); + } else { + $umengTitle = User::userid2nickname($msg->userid); + } $umengBody = WebSocketDialogMsg::previewMsg($msg); if ($dialog->type == 'group') { $umengBody = $umengTitle . ': ' . $umengBody; diff --git a/language/original-api.txt b/language/original-api.txt index 7984bd7ae..3ca53e9b9 100644 --- a/language/original-api.txt +++ b/language/original-api.txt @@ -993,3 +993,4 @@ LDAP 用户缺少邮箱属性,请联系管理员配置 待办提醒 你有一条待办到提醒时间啦 发送者昵称最多不能超过20字 +AI 助手 diff --git a/resources/assets/js/pages/manage.vue b/resources/assets/js/pages/manage.vue index c578066d2..a3f1c1729 100644 --- a/resources/assets/js/pages/manage.vue +++ b/resources/assets/js/pages/manage.vue @@ -1620,6 +1620,14 @@ export default { this.__notificationId = id; // const notificationFuncA = async (title, body) => { + if (userid === -1) { + // AI 助手虚拟用户没有会员记录,取自定义昵称或默认名称 + if (dialog_type === 'group') { + body = ((data.msg && data.msg.nickname) || this.$L('AI 助手')) + ': ' + body; + } + notificationFuncB(title, body, $A.mainUrl('images/avatar/default_assistant.png')) + return; + } const tempUser = await this.$store.dispatch("getUserData", userid).catch(_ => {}); if (dialog_type === 'group' && tempUser) { body = tempUser.nickname + ': ' + body;