news 2026/10/21 2:00:08

企业微信机器人自动化实操指南:WorkTool 用一台手机搞定群管+自动回复

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
企业微信机器人自动化实操指南:WorkTool 用一台手机搞定群管+自动回复

企业微信机器人自动化实操指南:WorkTool 用一台手机搞定群管+自动回复

【免费下载链接】worktool一款安全稳定的Android无障碍服务工具,支持控制企微/微信来运行的无人值守群管理企业微信机器人项目地址: https://gitcode.com/GitHub_Trending/wo/worktool

WorkTool 是一款基于 Android 官方无障碍服务的企业微信机器人自动化工具,用一台安卓机驱动企微完成收发消息、建群拉人、自动回复等动作,无需 Root,适合想搭无人值守群管系统的运维和开发者。

WorkTool 是什么:一台安卓机跑通的企业微信自动化底座

先给结论:WorkTool 不是一个独立客户端,它是"安卓端 APP + 任务调度平台"的组合。手机负责"看"和"点",云端平台负责"下指令"。

拆开看就是三块:

  • 安卓端 APP:跑在你自备的安卓机上,登录你的企业微信账号。APP 通过无障碍服务读取界面控件、模拟点击,把"读消息 → 找到输入框 → 填内容 → 点发送"这条链路自动化。
  • 任务调度平台:提供 HTTP/WebSocket 接口,你可以从自己的后端、脚本或定时任务里调用它,驱动机器人干活。
  • 中间通道:手机与平台之间走一条 WSS 长连接(wss://api.worktool.ymdyes.cn/webserver/wework/{robotId}),指令下发、结果回执、心跳保活都走这条链路。

技术上它明确声明"无 hook 函数、无侵入、无内存修改",走的是 Android 官方无障碍 API,这一点可以从源码里 accessibility_service_config.xml 直接看到:监听范围限定为com.tencent.wework,开启了canPerformGestures(允许模拟手势)和canRetrieveWindowContent(允许读取窗口内容)。

一个前置事实要说清楚:开源仓库里的代码是历史版本,用于学习和二次开发;持续维护的商业版在仓库 README 里有说明,两者功能接口大体一致,但版本适配会有差异。

无障碍权限怎么开:从系统设置到服务启动的完整链路

先说结论:必须先在系统里开启无障碍服务,然后回到 WorkTool APP 里让机器人"挂"到这条服务上。APP 自己不会帮你申请,因为 Android 无障碍权限是系统级开关,只能手动打开。

具体步骤:

  1. 打开系统设置 → 无障碍(或"辅助功能"),找到 WorkTool 对应的服务项(WeworkService),打开开关。
  2. 部分厂商(华为、小米、OPPO、vivo、魅族等)会有额外的"辅助功能"权限提示,WorkTool 内置了针对这些机型的跳转工具,见 PermissionPageManagement.java,会直接把你带到对应设置页。
  3. 回到 WorkTool APP,进入设置页(SettingsActivity.kt),确认机器人 ID、连接地址等参数后,启动机器人。
  4. 启动成功后,WeworkService的onServiceConnected()会被触发,APP 会自动建立 WebSocket 长连接、初始化消息循环(MyLooper)、并开始监听企微图片缓存目录(用于接收图片消息)。

一个容易踩的点:无障碍服务被系统杀掉或用户手动关闭后,机器人会立刻失效。建议在系统里把 WorkTool 和企微都加入电池白名单,避免后台被回收。

机器人怎么连上任务调度平台:WebSocket 长连接配置

先说结论:手机侧不用你配服务器地址,默认走wss://api.worktool.ymdyes.cn,你需要做的只是把"机器人 ID"(robotId)配对上。

从 Constant.kt 里能看到默认逻辑:

  • 长连接地址拼接规则:$host/webserver/wework/$robotId
  • 心跳节奏:每 5 秒发一次心跳包{"type":...HEART_BEAT}
  • 断线重连间隔:5 秒
  • 通讯加密:可选 AES/CBC/PKCS7Padding,robotKeyCheck控制是否校验 Key

robotId是你在任务调度平台注册机器人后拿到的标识,APP 里会把它持久化到SharedPreferences(键名robotId)。修改机器人后,APP 内部会触发一条modify_channel广播,自动断开旧连接、用新 ID 重建长连接,不用重启 APP。

如果你在私有化部署场景下换了host,APP 侧会自动把wss前缀替换成https走 HTTP 请求,把ws前缀替换成http,逻辑都封装在getBaseUrl()里,不用改代码。

企业微信机器人支持哪些操作:从发消息到群管的接口清单

先说结论:WorkTool 暴露的接口是"指令集"风格,每个指令对应企微里一个具体动作,从源码 WeworkController.kt 可以数出 30+ 个方法,全部走@RequestMapping分发。

按使用频率排一下:

类别指令说明
消息sendMessage/replyMessage群内发消息 / 针对某条消息回复
消息recallMessage撤回机器人发出去的消息
消息relayMessage/relayMultiMessage/relayMergeMessage单条/批量/合并转发
消息sendMultiMessage/sendMergeMessage批量发送 / 合并发送
群管initGroup/updateGroup/dismissGroup建群 / 改群(改名、公告、备注、模板、拉人、踢人)/ 解散群
群管getGroupInfo/getAllGroupInfo/showGroupInfo查询群信息
好友addFriendByGroup/addFriendByPhone/deleteContact从群内加友 / 按手机号加友 / 删除联系人
好友getFriendInfo/getAllFriendInfo查询好友信息
文件pushFile/pushMicroDiskFile/pushMicroDiskImage推送任意文件 / 微盘文件 / 微盘图片
内容pushLink/pushOffice/pushMicroprogram推送图文链接 / 腾讯文档 / 小程序
其他scanQrCode用机器人账号扫码
其他clockIn打卡
其他switchCorp多企业账号切换
其他stopAndGoHome停止所有任务回到首页待命

回复策略也在这里能配,replyStrategy有三个值:0不回复、1只回复被 @ 的、2群内所有消息都回复。默认是1,这也是最保守、最不容易"打扰"用户的设置。

群发频率怎么设:三档间隔参数控制操作节奏

先说结论:WorkTool 内置了三层间隔参数,分别控制"整条指令之间"、"页面切换之间"、"弹窗出现之后"的等待时长,不要自己写死 sleep,直接用这三档。

在 Constant.kt 里:

  • LONG_INTERVAL:默认5000ms,两个任务/指令之间的基础等待
  • CHANGE_PAGE_INTERVAL:默认1000ms,切换页面(打开聊天、进入设置页等)的等待
  • POP_WINDOW_INTERVAL:默认500ms,弹窗出现后的等待

这三档都是var,意味着运行期可以调。调法上有两条路:

  1. 在 APP 设置页里改:SettingsActivity和SettingsAdvanceActivity里暴露了相关开关,普通用户直接改即可。
  2. 源码里改默认值:如果你二次开发,直接改 Constant.kt 里的BASE_*常量。

经验值:批量群发场景下,把LONG_INTERVAL从默认 5s 提到 8~10s 更稳;页面密集型操作(连续建群、连续拉人)主要受CHANGE_PAGE_INTERVAL影响,一般不用动。

另外还有一个"防卡顿模式"(v2.6.2 引入),在设置页里可以打开,它会在检测到界面响应变慢时自动拉长等待。

常见踩坑和排查:从权限到版本的 5 个高频问题

按出现频率排:

1. 无障碍服务被系统回收。表现:机器人突然"不响应了"。排查:进系统设置看 WorkTool 的无障碍开关是否还开着;如果厂商杀后台,把 WorkTool 加入自启动和电池白名单。

2. 企微版本不在兼容列表内。开源版代码里AVAILABLE_VERSION维护了一份白名单(4.0.2 ~ 4.1.10),商业版会持续扩展到 5.0.x。如果你装的企微版本不在白名单里,APP 启动时会提示升级或降级。别用"最新"版本的企微做测试,先用兼容列表内的版本跑通。

3. WebSocket 连不上。表现:APP 日志里能看到新建链接,但没有后续心跳。排查:

  • robotId是否填对、平台上机器人是否处于"运行中"
  • 手机网络是否能访问api.worktool.ymdyes.cn(443 端口)
  • 如果是私有化部署,host是否改成了正确的 wss 地址

4. 收不到图片消息。图片走的是文件监听,路径固定在/storage/emulated/0/Android/data/com.tencent.wework/files/imagecache/imagemsg2(见 WeworkService.kt 的initObserver)。如果企微更新了缓存目录结构,监听就会失效。同时需要在Constant.pushImage开关为true时才会启动监听。

5. 群名带(...)或省略号匹配不上。企微会把长群名截断成XXX…(3)这种形式,WorkTool 在 Constant.kt 里维护了一组正则(regTrimTitle、suffixRegex、groupSuffixRegex、digitalRegex)用来剥离这些后缀再匹配。如果你自定义了群名匹配逻辑,直接复用这几条正则,别自己写。

快速上手两步走:先测试再上量

给两个能立刻执行的建议:

第一步:先用"测试群 + 单条消息"跑通全链路。建一个 3~5 人的测试群,用sendMessage发一条文本,再用replyMessage回复,最后recallMessage撤回。这一步能验证:无障碍权限、WebSocket 长连接、企微版本兼容、群名匹配四件事。跑通再谈批量。

第二步:批量前把三档间隔调稳。群发场景默认LONG_INTERVAL=5s起步,跑 100 条看有没有卡顿,卡顿就加到 8s 并打开"防卡顿模式"。群管场景(连续建群、拉人)保持默认,不要图快把CHANGE_PAGE_INTERVAL改到 500ms 以下——企微的页面转场没那么快。

下面是 WorkTool 在实际企微群里跑 AI 对话的效果截图(图片来自仓库 images/chatgpt.png),可以看到机器人账号在群里连续应答,回复策略走的是"被 @ 才回":

跑通之后,把stopAndGoHome留在调度平台的一个"急停"按钮里,任何异常情况下一条指令让机器人回首页待命,这是最省心的兜底。

【免费下载链接】worktool一款安全稳定的Android无障碍服务工具,支持控制企微/微信来运行的无人值守群管理企业微信机器人项目地址: https://gitcode.com/GitHub_Trending/wo/worktool

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 1:59:50

PySR 符号回归上手:如何从数据中找出一条能看的公式

PySR 符号回归上手:如何从数据中找出一条能看的公式 【免费下载链接】PySR Symbolic Learning in Python and Julia 项目地址: https://gitcode.com/GitHub_Trending/py/PySR 手里有一批实验数据,你知道背后藏着一条简洁的关系,但说不…

作者头像 李华
网站建设 2026/10/21 1:59:36

2025年终极指南:无需Root解锁Android系统权限的完整Shizuku教程

2025年终极指南:无需Root解锁Android系统权限的完整Shizuku教程 你是否曾经因为Android系统的权限限制而感到束手无策?想要深度定制手机功能却又担心Root带来的安全风险?Shizuku为你提供了完美的解决方案!这是一个革命性的Android…

作者头像 李华
网站建设 2026/10/21 1:59:12

字符串循环拼接性能优化:从40ms到2ms的20倍提升实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/21 1:58:31

1960-2023年 世界各国对外开放度数据(xlsx)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/21 1:58:21

SatDump 完整指南:从 SDR 接收到气象卫星图像解码

SatDump 完整指南:从 SDR 接收到气象卫星图像解码 【免费下载链接】SatDump A generic satellite data processing software. 项目地址: https://gitcode.com/GitHub_Trending/sa/SatDump SatDump 是一款开源的卫星信号解码工具:它接入 SDR 设备接…

作者头像 李华
网站建设 2026/10/21 1:57:34

显示驱动板卡启动引导流程全解析:从电源时序到面板点亮

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华