EpointMsgPlugins:新点即时通讯插件系统实战
EpointMsgPlugins:新点即时通讯插件系统实战

EpointMsgPlugins:新点即时通讯插件系统实战

EpointMsgPlugins 是一个为新点即时通讯(EpointMsg)打造的插件系统,通过 JavaScript 脚本注入到 Electron 渲染进程中,利用融云 SDK 扩展聊天功能。

项目概述

新点即时通讯是基于 Electron + 融云 SDK 的企业 IM 应用。EpointMsgPlugins 通过修改 app.asar 的 preload.js 注入引导代码,在渲染进程中加载插件管理器,实现对聊天界面的功能扩展。

属性
宿主程序EpointMsg(Electron 22.3.26)
融云 SDKRongIMLib / RongIM.dataModel
存储目录%APPDATA%\EpointMsgPlugins\
插件数量13 个(3 个本地 + 10 个官方)

本地隐私插件(零上传)

三个本地插件的核心特点是数据不出本机,所有处理在本地完成,不调用远程 AI 接口。

群聊本地总结

在群聊工具栏添加总结按钮。获取最近 50 条消息,通过 RongIM.dataModel.User.get() 批量解析用户 ID 为真实姓名,统计参与者、活跃时段,生成 HTML 报告并在浏览器中打开。

工作日志本地总结

支持选择日期查看任意一天的聊天记录。收集所有会话中的消息(私聊全部 + 群聊中自己发送和 @我的),本地生成 HTML 报告。面板分为两步操作:先收集消息查看概览,再生成报告。

聊天数据全量导出器

支持分页拉取(最多 500 页 x 200 条 ≈ 10 万条),可按日期范围筛选。导出为 JSON 格式,包含发送者姓名、消息类型、时间等完整信息。支持跟随当前会话或从列表选择。

技术实现要点

注入机制

通过修改 app.asar 的 preload.js,注入引导代码在渲染进程中加载插件管理器。使用 Chromium Pickle 二进制格式保持 asar 文件完整性。安装脚本自动完成解包、注入、重新打包和插件下载。

用户 ID 解析

融云 SDK 的 getHistoryMessages 返回的 senderUserId 是内部 ID,需要通过 RongIM.dataModel.User.get() 批量查询获取真实姓名,并支持别名(alias)显示。

工具栏图标

导航栏图标使用 SVG + base64 方案,通过 PluginTheme.getNavIconColor() 跟随主题颜色变化。工具栏按钮使用 background-image 方式渲染,保持 inline-block 布局不破坏原生工具栏。MutationObserver + hashchange 确保按钮在 SPA 导航后自动重新注入。

安装与部署

irm 'https://rongassist.xiaofengzi.cc:8443/scripts/install.ps1' | iex

安装脚本自动完成:解包 ASAR → 注入引导代码 → 重新打包 → 下载核心组件和插件。本地定制插件通过 [LOCAL] 补丁保护,不会被远程同步覆盖。

starry0214

订阅评论
提醒
guest

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论