在个人微信使用 OpenClaw 的教程(不封号)
- 内容介绍
- 文章标签
- 相关推荐
企业微信自建应用(可在个人微信使用)
项目基于 BytePioneer-AI/moltbot-china: Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信 开发的额外插件,支持企业微信自建应用
GitHub - RainbowRain9/openclaw-china: Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
效果如图
2bf52e5261bd2cf0544a885b26f8b9371440×2988 173 KB 5e545c710d5be052e49edd3673966e931440×2988 120 KB
0e803514207a767eec3a1d8732479eb91440×2988 303 KB 1cf834ccb42ef52dd67d89739bb8b2651440×2988 230 KB
教程如下
企业微信自建应用配置指南
本指南帮助你在企业微信中创建自建应用,并配置 OpenClaw 接入。
自建应用 vs 智能机器人
| 功能 | 智能机器人 (wecom) | 自建应用 (wecom-app) |
|---|---|---|
| 被动回复消息 | ||
| 主动发送消息 | ||
| 需要企业认证 | ||
| 需要 corpSecret | ||
| 需要 IP 白名单 | ||
| 配置复杂度 | 简单 | 中等 |
推荐使用自建应用的场景:
- 需要主动推送消息给用户
- 需要更灵活的消息发送能力
- 需要调用企业微信 API
前置条件
- 一个企业微信账号(可使用个人注册的企业)
- 公网可访问的 HTTPS 服务器(用于接收回调)
- OpenClaw 已安装并运行
- Node.js 和 pnpm(用于构建插件)
步骤零:安装 wecom-app 插件
1. 克隆代码仓库
cd ~/.openclaw/extensions
git clone https://github.com/RainbowRain9/openclaw-china.git
2. 进入插件目录并安装依赖
cd ~/.openclaw/extensions/openclaw-china/extensions/wecom-app
pnpm install
3. 构建插件
pnpm build
4. 安装到 OpenClaw
openclaw plugins install -l ~/.openclaw/extensions/openclaw-china/extensions/wecom-app
提示:
-l参数表示链接模式安装,修改源码后无需重新安装,只需重启 Gateway 即可生效。
5. 验证安装
openclaw plugins list
确认 @openclaw-china/wecom-app 出现在插件列表中。
步骤一:创建自建应用
1. 登录企业微信管理后台
访问 企业微信管理后台 并登录。
2. 创建应用
-
点击左侧菜单「应用管理」
-
在「自建」区域点击「创建应用」
image2503×1384 222 KB
-
填写应用信息:
- 应用名称:例如 “AI 助手”
- 应用 logo:上传一个图标
- 可见范围:选择可以使用该应用的部门/成员
image2503×1384 164 KB
-
点击「创建应用」
3. 获取应用凭证
创建成功后,进入应用详情页,记录以下信息:
- AgentId:应用的唯一标识(如
1000002) - Secret:点击查看获取(这就是
corpSecret)
image2503×1384 242 KB
4. 获取企业 ID
- 点击左侧菜单「我的企业」
- 在「企业信息」页面底部找到「企业 ID」
- 记录这个 ID(这就是
corpId)
image2503×1384 210 KB
步骤二:配置接收消息服务器
1. 进入应用设置
- 在应用详情页,找到「接收消息」设置
- 点击「设置 API 接收」
2. 填写服务器配置
- URL:你的公网回调地址,例如
https://your.domain/wecom-app - Token:自定义一个字符串,例如
your-random-token - EncodingAESKey:点击「随机获取」生成 43 位字符
image2503×1384 221 KB
重要:先配置好 OpenClaw,再点击「保存」,否则验证会失败。
image2503×1384 217 KB
3. 配置 IP 白名单
在应用详情页的「企业可信 IP」设置中,添加你服务器的公网 IP 地址。
image2503×1384 231 KB
如果不知道服务器 IP,可以先尝试发送消息,查看错误日志获取 IP。
步骤三:配置 OpenClaw
使用命令行配置
Linux/macOS:
openclaw config set channels.wecom-app '{
"enabled": true,
"webhookPath": "/wecom-app",
"token": "your-random-token",
"encodingAESKey": "your-43-char-encoding-aes-key",
"corpId": "your-corp-id",
"corpSecret": "your-app-secret",
"agentId": 1000002
}' --json
Windows CMD:
openclaw config set channels.wecom-app.enabled true
openclaw config set channels.wecom-app.webhookPath /wecom-app
openclaw config set channels.wecom-app.token your-random-token
openclaw config set channels.wecom-app.encodingAESKey your-43-char-encoding-aes-key
openclaw config set channels.wecom-app.corpId your-corp-id
openclaw config set channels.wecom-app.corpSecret your-app-secret
openclaw config set channels.wecom-app.agentId 1000002
或直接编辑配置文件
编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"wecom-app": {
"enabled": true,
"webhookPath": "/wecom-app",
"token": "your-random-token",
"encodingAESKey": "your-43-char-encoding-aes-key",
"corpId": "your-corp-id",
"corpSecret": "your-app-secret",
"agentId": 1000002
}
}
}
配置说明
| 字段 | 必填 | 说明 |
|---|---|---|
enabled |
是否启用该渠道 | |
webhookPath |
回调路径,需与企业微信后台配置一致 | |
token |
消息校验 Token,需与企业微信后台配置一致 | |
encodingAESKey |
消息加密密钥(43 位),需与企业微信后台配置一致 | |
corpId |
企业 ID | |
corpSecret |
应用的 Secret | |
agentId |
应用的 AgentId | |
welcomeText |
用户首次进入时的欢迎语 | |
inboundMedia.enabled |
是否启用入站媒体落盘(默认启用) | |
inboundMedia.dir |
入站媒体归档目录(跨平台默认:~/.openclaw/media/wecom-app/inbound) |
|
inboundMedia.maxBytes |
单个入站媒体最大字节数(默认 10MB) | |
inboundMedia.keepDays |
入站媒体保留天数(默认 7 天;用于自动清理) |
步骤四:重启 Gateway
openclaw gateway restart
步骤五:验证配置
1. 回到企业微信后台保存配置
现在 OpenClaw 已启动,回到企业微信后台的「接收消息」设置,点击「保存」。
如果配置正确,会提示保存成功。
2. 测试消息收发
- 在企业微信 App 中打开你创建的应用
- 发送一条消息
- 查看 OpenClaw 日志确认消息接收
- 等待 AI 回复
步骤六:在个人微信使用
1.回到企业微信后台
回到企业微信后台的「我的企业」设置下的微信插件
image2503×1384 243 KB
用个人微信扫码「邀请关注」的二维码就可以在个人微信上打开入口
入站媒体(图片/语音/文件)落盘说明
为了支持图片 OCR、回发原图、以及排查问题,wecom-app 会把入站媒体文件落盘保存。
-
文件会被归档到:
inboundMedia.dir/YYYY-MM-DD/ -
消息正文里会显示:
[image] saved:<本地路径>(该路径为稳定归档路径,便于后续处理) -
自动清理由
inboundMedia.keepDays控制(默认 7 天)
为什么还会用 tmp 中转?
内部会先下载到系统临时目录,再原子移动到归档目录,以避免“半文件/下载失败”污染归档目录。
跨平台默认路径
-
Linux/macOS:
~/.openclaw/media/wecom-app/inbound -
Windows:
%USERPROFILE%\.openclaw\media\wecom-app\inbound
如需自定义,请设置:channels.wecom-app.inboundMedia.dir
常见问题
Q: Unknown target “xxx” / Action send requires a target?
这类问题通常不是“权限问题”,而是 target 写法不正确 或 OpenClaw 无法解析。
结论:最稳的写法是使用显式前缀:
- 私聊用户:
user:<UserId>(例如:user:CaiHongYu) - 群聊:
chatid:<ChatId>(如果你拿到了 chatid)
排查步骤:
- 确认你用的是
user:/chatid:前缀,而不是“显示名/昵称”。 - 如果你只有显示名:优先去企业微信后台/通讯录确认真实
UserId。 - 查看 Gateway 日志中 wecom-app 的目录解析输出(关键词一般为
wecom-app/directory/target)。
经验:显示名在不同租户/同名用户/大小写场景下会导致解析失败;用
user:<UserId>基本不会错。
Q: 为什么 SVG 发出去不是图片?
企业微信自建应用对 图片消息 的支持通常偏向 png/jpg。svg 经常会被客户端当作“文件”,或者走图片通道失败。
- 建议:发送
png/jpg。 - 如果你必须发
svg:把它当 文件 发(本插件已对.svg强制按文件发送,避免误判)。
Q: 为什么 WAV/MP3 语音发不出去(ok=false)?
企业微信的“语音消息(voice)”通常要求 amr/speex 等格式;wav/mp3 很常见会导致上传/发送失败,或无法按语音气泡展示。
推荐方案(自动兜底)
开启 voiceTranscode.enabled=true 后:
- 系统存在
ffmpeg:遇到 wav/mp3 会 自动转码为 amr 再发送 voice - 没有
ffmpeg:会 自动降级为 file 发送(保证可达)
配置示例(openclaw.json):
{
"channels": {
"wecom-app": {
"voiceTranscode": {
"enabled": true,
"prefer": "amr"
}
}
}
}
手动转码(ffmpeg)
ffmpeg -i in.wav -ar 8000 -ac 1 -c:a amr_nb out.amr
Q: 保存配置时提示验证失败?
- 检查 OpenClaw 是否已启动并监听正确端口
- 确认
webhookPath与后台 URL 路径一致 - 确认
token和encodingAESKey与后台配置完全一致 - 确认服务器公网可访问(可用
curl测试)
Q: 消息接收成功但发送失败?
- 检查
corpId、corpSecret、agentId是否正确 - 检查是否已配置 IP 白名单
- 查看 OpenClaw 日志获取详细错误信息
Q: 如何获取服务器 IP 地址?
运行以下命令:
curl ifconfig.me
或查看 OpenClaw 发送消息的错误日志,企业微信会返回需要添加白名单的 IP。
Q: Token 和 EncodingAESKey 可以自己生成吗?
- Token:可以是任意字符串
- EncodingAESKey:必须是 43 位的 Base64 字符,建议使用企业微信后台的「随机获取」功能
高级配置
访问控制
{
"channels": {
"wecom-app": {
"enabled": true,
"dmPolicy": "open",
"groupPolicy": "open",
"requireMention": false,
"allowFrom": [],
"groupAllowFrom": []
}
}
}
| 字段 | 说明 |
|---|---|
dmPolicy |
私聊策略:open(任何人)/ allowlist(白名单) |
groupPolicy |
群聊策略:open(任何群)/ allowlist(白名单)/ disabled(禁用) |
requireMention |
群聊是否需要 @机器人 |
allowFrom |
私聊白名单用户 ID 列表 |
groupAllowFrom |
群聊白名单群 ID 列表 |
多账户配置
如需配置多个自建应用,可以使用 accounts 对象(键为账户 ID):
{
"channels": {
"wecom-app": {
"enabled": true,
"accounts": {
"app1": {
"webhookPath": "/wecom-app-1",
"token": "token-1",
"encodingAESKey": "key-1",
"corpId": "corp-id",
"corpSecret": "secret-1",
"agentId": 1000002
},
"app2": {
"webhookPath": "/wecom-app-2",
"token": "token-2",
"encodingAESKey": "key-2",
"corpId": "corp-id",
"corpSecret": "secret-2",
"agentId": 1000003
}
}
}
}
}
(可选)安装 wecom-app 运维/使用 Skill
本仓库提供本地技能包:extensions/wecom-app/skills/wecom-app-ops,用于指导 wecom-app 常见操作(如何获取/规范化 target、如何回发图片/录音/文件、如何使用 saved 路径做 OCR、常见报错排障等)。
安装到全局
mkdir -p ~/.openclaw/skills
cp -a ~/.openclaw/extensions/openclaw-china/extensions/wecom-app/skills/wecom-app-ops ~/.openclaw/skills/
复制后一般无需重启网关;如果你希望立刻出现在“可触发 skills 列表”里,建议重启一次 Gateway 以刷新 skills 索引。
wecom-app 已实现功能清单(Feature List)
本插件当前已实现/覆盖:
入站(接收消息)
-
Webhook 接收回调
-
签名校验 + 解密/加密回包
-
支持 JSON + XML 两种入站格式
-
长文本分片(企业微信单条约 2048 bytes 限制)
-
stream 占位/刷新(为适配企业微信 5 秒响应限制的缓冲式输出)
入站媒体(产品级留存)
Why / 设计动机
-
产品化目标是“消息里的
saved:路径可长期复用”,而不是依赖/tmp这类易被清理的短期目录。 -
这样 OCR/MCP、二次回发、归档/审计等流程才不会因为文件丢失而不稳定。
-
支持
image/voice/file/mixed -
优先通过
MediaId下载媒体;必要时回退 URL(如图片 PicUrl) -
媒体落盘:先 tmp 中转,再归档到
inboundMedia.dir/YYYY-MM-DD/ -
消息体注入稳定路径:
[image] saved:/.../[voice] saved:/.../[file] saved:/... -
过期清理:按
inboundMedia.keepDays延迟清理(避免“回复后立刻删”导致 OCR/回发失败) -
大小限制:按
inboundMedia.maxBytes限制单文件大小
出站(主动发送)
-
支持主动发送文本
-
支持主动发送媒体(按 MIME/扩展名识别 image/voice/file)
-
Markdown 降级:
stripMarkdown()将 Markdown 转为企业微信可显示的纯文本
目标解析与路由
-
支持多种 target 输入格式:
-
wecom-app:user:<id>/wecom-app:group:<id> -
user:<id>/group:<id> -
裸 id(默认当 user)
-
xxx@accountId(带账号选择)
多账号与策略
-
支持
defaultAccount+accounts多账号 -
DM 策略:
dmPolicy(open/pairing/allowlist/disabled) -
群策略:
groupPolicy(open/allowlist/disabled) -
群 @ 要求:
requireMention -
allowlist:
allowFrom/groupAllowFrom -
入站媒体配置:
inboundMedia.enabled/dir/maxBytes/keepDays
GitHub - RainbowRain9/openclaw-china: Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
都看到最后了,希望可以点个小或者给我的项目点个
网友解答:--【壹】--:
前面在公司github看到了这个项目,还想着把现有的换成这个集成,没想到下班就刷到佬友的帖子了,感谢佬友
--【贰】--: 彩虹雨:
wecom-app
wecom-app有点难搞,还必须有个公网回调地址
--【叁】--:
要有一个公网ip地址做回调
--【肆】--:
某动物:你等着,马上叫一群律师给你函
--【伍】--:
一般来说配 OpenClaw 的人都会有一个自己的公网ip吧。
--【陆】--:
Mark
--【柒】--:
感谢分享
--【捌】--:
企业微信相对安全一些,微信别碰。
当然,都是玄学
--【玖】--:
mairk一下
--【拾】--:
需要配置API吗
--【拾壹】--:
这是用的官方渠道。没有用hook之类的特殊手段,应该没事吧
--【拾贰】--: 彩虹雨:
pnpm(用于构建插件)
以前创建的企业微信应用不需要配置可信IP,现在的都要了
--【拾叁】--:
感谢大佬教程
--【拾肆】--:
这居然是佬友写的好厉害
--【拾伍】--:
个人会不会容易封号,之前玩的那个部署到微信的AI,玩了几天差点被封(
--【拾陆】--:
企业微信? 个人用户怎么弄?
--【拾柒】--:
谢谢佬友分享
--【拾捌】--:
去企业微信随便创建一下就行,不用认证
--【拾玖】--:
前排围观支持一下!
企业微信自建应用(可在个人微信使用)
项目基于 BytePioneer-AI/moltbot-china: Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信 开发的额外插件,支持企业微信自建应用
GitHub - RainbowRain9/openclaw-china: Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
效果如图
2bf52e5261bd2cf0544a885b26f8b9371440×2988 173 KB 5e545c710d5be052e49edd3673966e931440×2988 120 KB
0e803514207a767eec3a1d8732479eb91440×2988 303 KB 1cf834ccb42ef52dd67d89739bb8b2651440×2988 230 KB
教程如下
企业微信自建应用配置指南
本指南帮助你在企业微信中创建自建应用,并配置 OpenClaw 接入。
自建应用 vs 智能机器人
| 功能 | 智能机器人 (wecom) | 自建应用 (wecom-app) |
|---|---|---|
| 被动回复消息 | ||
| 主动发送消息 | ||
| 需要企业认证 | ||
| 需要 corpSecret | ||
| 需要 IP 白名单 | ||
| 配置复杂度 | 简单 | 中等 |
推荐使用自建应用的场景:
- 需要主动推送消息给用户
- 需要更灵活的消息发送能力
- 需要调用企业微信 API
前置条件
- 一个企业微信账号(可使用个人注册的企业)
- 公网可访问的 HTTPS 服务器(用于接收回调)
- OpenClaw 已安装并运行
- Node.js 和 pnpm(用于构建插件)
步骤零:安装 wecom-app 插件
1. 克隆代码仓库
cd ~/.openclaw/extensions
git clone https://github.com/RainbowRain9/openclaw-china.git
2. 进入插件目录并安装依赖
cd ~/.openclaw/extensions/openclaw-china/extensions/wecom-app
pnpm install
3. 构建插件
pnpm build
4. 安装到 OpenClaw
openclaw plugins install -l ~/.openclaw/extensions/openclaw-china/extensions/wecom-app
提示:
-l参数表示链接模式安装,修改源码后无需重新安装,只需重启 Gateway 即可生效。
5. 验证安装
openclaw plugins list
确认 @openclaw-china/wecom-app 出现在插件列表中。
步骤一:创建自建应用
1. 登录企业微信管理后台
访问 企业微信管理后台 并登录。
2. 创建应用
-
点击左侧菜单「应用管理」
-
在「自建」区域点击「创建应用」
image2503×1384 222 KB
-
填写应用信息:
- 应用名称:例如 “AI 助手”
- 应用 logo:上传一个图标
- 可见范围:选择可以使用该应用的部门/成员
image2503×1384 164 KB
-
点击「创建应用」
3. 获取应用凭证
创建成功后,进入应用详情页,记录以下信息:
- AgentId:应用的唯一标识(如
1000002) - Secret:点击查看获取(这就是
corpSecret)
image2503×1384 242 KB
4. 获取企业 ID
- 点击左侧菜单「我的企业」
- 在「企业信息」页面底部找到「企业 ID」
- 记录这个 ID(这就是
corpId)
image2503×1384 210 KB
步骤二:配置接收消息服务器
1. 进入应用设置
- 在应用详情页,找到「接收消息」设置
- 点击「设置 API 接收」
2. 填写服务器配置
- URL:你的公网回调地址,例如
https://your.domain/wecom-app - Token:自定义一个字符串,例如
your-random-token - EncodingAESKey:点击「随机获取」生成 43 位字符
image2503×1384 221 KB
重要:先配置好 OpenClaw,再点击「保存」,否则验证会失败。
image2503×1384 217 KB
3. 配置 IP 白名单
在应用详情页的「企业可信 IP」设置中,添加你服务器的公网 IP 地址。
image2503×1384 231 KB
如果不知道服务器 IP,可以先尝试发送消息,查看错误日志获取 IP。
步骤三:配置 OpenClaw
使用命令行配置
Linux/macOS:
openclaw config set channels.wecom-app '{
"enabled": true,
"webhookPath": "/wecom-app",
"token": "your-random-token",
"encodingAESKey": "your-43-char-encoding-aes-key",
"corpId": "your-corp-id",
"corpSecret": "your-app-secret",
"agentId": 1000002
}' --json
Windows CMD:
openclaw config set channels.wecom-app.enabled true
openclaw config set channels.wecom-app.webhookPath /wecom-app
openclaw config set channels.wecom-app.token your-random-token
openclaw config set channels.wecom-app.encodingAESKey your-43-char-encoding-aes-key
openclaw config set channels.wecom-app.corpId your-corp-id
openclaw config set channels.wecom-app.corpSecret your-app-secret
openclaw config set channels.wecom-app.agentId 1000002
或直接编辑配置文件
编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"wecom-app": {
"enabled": true,
"webhookPath": "/wecom-app",
"token": "your-random-token",
"encodingAESKey": "your-43-char-encoding-aes-key",
"corpId": "your-corp-id",
"corpSecret": "your-app-secret",
"agentId": 1000002
}
}
}
配置说明
| 字段 | 必填 | 说明 |
|---|---|---|
enabled |
是否启用该渠道 | |
webhookPath |
回调路径,需与企业微信后台配置一致 | |
token |
消息校验 Token,需与企业微信后台配置一致 | |
encodingAESKey |
消息加密密钥(43 位),需与企业微信后台配置一致 | |
corpId |
企业 ID | |
corpSecret |
应用的 Secret | |
agentId |
应用的 AgentId | |
welcomeText |
用户首次进入时的欢迎语 | |
inboundMedia.enabled |
是否启用入站媒体落盘(默认启用) | |
inboundMedia.dir |
入站媒体归档目录(跨平台默认:~/.openclaw/media/wecom-app/inbound) |
|
inboundMedia.maxBytes |
单个入站媒体最大字节数(默认 10MB) | |
inboundMedia.keepDays |
入站媒体保留天数(默认 7 天;用于自动清理) |
步骤四:重启 Gateway
openclaw gateway restart
步骤五:验证配置
1. 回到企业微信后台保存配置
现在 OpenClaw 已启动,回到企业微信后台的「接收消息」设置,点击「保存」。
如果配置正确,会提示保存成功。
2. 测试消息收发
- 在企业微信 App 中打开你创建的应用
- 发送一条消息
- 查看 OpenClaw 日志确认消息接收
- 等待 AI 回复
步骤六:在个人微信使用
1.回到企业微信后台
回到企业微信后台的「我的企业」设置下的微信插件
image2503×1384 243 KB
用个人微信扫码「邀请关注」的二维码就可以在个人微信上打开入口
入站媒体(图片/语音/文件)落盘说明
为了支持图片 OCR、回发原图、以及排查问题,wecom-app 会把入站媒体文件落盘保存。
-
文件会被归档到:
inboundMedia.dir/YYYY-MM-DD/ -
消息正文里会显示:
[image] saved:<本地路径>(该路径为稳定归档路径,便于后续处理) -
自动清理由
inboundMedia.keepDays控制(默认 7 天)
为什么还会用 tmp 中转?
内部会先下载到系统临时目录,再原子移动到归档目录,以避免“半文件/下载失败”污染归档目录。
跨平台默认路径
-
Linux/macOS:
~/.openclaw/media/wecom-app/inbound -
Windows:
%USERPROFILE%\.openclaw\media\wecom-app\inbound
如需自定义,请设置:channels.wecom-app.inboundMedia.dir
常见问题
Q: Unknown target “xxx” / Action send requires a target?
这类问题通常不是“权限问题”,而是 target 写法不正确 或 OpenClaw 无法解析。
结论:最稳的写法是使用显式前缀:
- 私聊用户:
user:<UserId>(例如:user:CaiHongYu) - 群聊:
chatid:<ChatId>(如果你拿到了 chatid)
排查步骤:
- 确认你用的是
user:/chatid:前缀,而不是“显示名/昵称”。 - 如果你只有显示名:优先去企业微信后台/通讯录确认真实
UserId。 - 查看 Gateway 日志中 wecom-app 的目录解析输出(关键词一般为
wecom-app/directory/target)。
经验:显示名在不同租户/同名用户/大小写场景下会导致解析失败;用
user:<UserId>基本不会错。
Q: 为什么 SVG 发出去不是图片?
企业微信自建应用对 图片消息 的支持通常偏向 png/jpg。svg 经常会被客户端当作“文件”,或者走图片通道失败。
- 建议:发送
png/jpg。 - 如果你必须发
svg:把它当 文件 发(本插件已对.svg强制按文件发送,避免误判)。
Q: 为什么 WAV/MP3 语音发不出去(ok=false)?
企业微信的“语音消息(voice)”通常要求 amr/speex 等格式;wav/mp3 很常见会导致上传/发送失败,或无法按语音气泡展示。
推荐方案(自动兜底)
开启 voiceTranscode.enabled=true 后:
- 系统存在
ffmpeg:遇到 wav/mp3 会 自动转码为 amr 再发送 voice - 没有
ffmpeg:会 自动降级为 file 发送(保证可达)
配置示例(openclaw.json):
{
"channels": {
"wecom-app": {
"voiceTranscode": {
"enabled": true,
"prefer": "amr"
}
}
}
}
手动转码(ffmpeg)
ffmpeg -i in.wav -ar 8000 -ac 1 -c:a amr_nb out.amr
Q: 保存配置时提示验证失败?
- 检查 OpenClaw 是否已启动并监听正确端口
- 确认
webhookPath与后台 URL 路径一致 - 确认
token和encodingAESKey与后台配置完全一致 - 确认服务器公网可访问(可用
curl测试)
Q: 消息接收成功但发送失败?
- 检查
corpId、corpSecret、agentId是否正确 - 检查是否已配置 IP 白名单
- 查看 OpenClaw 日志获取详细错误信息
Q: 如何获取服务器 IP 地址?
运行以下命令:
curl ifconfig.me
或查看 OpenClaw 发送消息的错误日志,企业微信会返回需要添加白名单的 IP。
Q: Token 和 EncodingAESKey 可以自己生成吗?
- Token:可以是任意字符串
- EncodingAESKey:必须是 43 位的 Base64 字符,建议使用企业微信后台的「随机获取」功能
高级配置
访问控制
{
"channels": {
"wecom-app": {
"enabled": true,
"dmPolicy": "open",
"groupPolicy": "open",
"requireMention": false,
"allowFrom": [],
"groupAllowFrom": []
}
}
}
| 字段 | 说明 |
|---|---|
dmPolicy |
私聊策略:open(任何人)/ allowlist(白名单) |
groupPolicy |
群聊策略:open(任何群)/ allowlist(白名单)/ disabled(禁用) |
requireMention |
群聊是否需要 @机器人 |
allowFrom |
私聊白名单用户 ID 列表 |
groupAllowFrom |
群聊白名单群 ID 列表 |
多账户配置
如需配置多个自建应用,可以使用 accounts 对象(键为账户 ID):
{
"channels": {
"wecom-app": {
"enabled": true,
"accounts": {
"app1": {
"webhookPath": "/wecom-app-1",
"token": "token-1",
"encodingAESKey": "key-1",
"corpId": "corp-id",
"corpSecret": "secret-1",
"agentId": 1000002
},
"app2": {
"webhookPath": "/wecom-app-2",
"token": "token-2",
"encodingAESKey": "key-2",
"corpId": "corp-id",
"corpSecret": "secret-2",
"agentId": 1000003
}
}
}
}
}
(可选)安装 wecom-app 运维/使用 Skill
本仓库提供本地技能包:extensions/wecom-app/skills/wecom-app-ops,用于指导 wecom-app 常见操作(如何获取/规范化 target、如何回发图片/录音/文件、如何使用 saved 路径做 OCR、常见报错排障等)。
安装到全局
mkdir -p ~/.openclaw/skills
cp -a ~/.openclaw/extensions/openclaw-china/extensions/wecom-app/skills/wecom-app-ops ~/.openclaw/skills/
复制后一般无需重启网关;如果你希望立刻出现在“可触发 skills 列表”里,建议重启一次 Gateway 以刷新 skills 索引。
wecom-app 已实现功能清单(Feature List)
本插件当前已实现/覆盖:
入站(接收消息)
-
Webhook 接收回调
-
签名校验 + 解密/加密回包
-
支持 JSON + XML 两种入站格式
-
长文本分片(企业微信单条约 2048 bytes 限制)
-
stream 占位/刷新(为适配企业微信 5 秒响应限制的缓冲式输出)
入站媒体(产品级留存)
Why / 设计动机
-
产品化目标是“消息里的
saved:路径可长期复用”,而不是依赖/tmp这类易被清理的短期目录。 -
这样 OCR/MCP、二次回发、归档/审计等流程才不会因为文件丢失而不稳定。
-
支持
image/voice/file/mixed -
优先通过
MediaId下载媒体;必要时回退 URL(如图片 PicUrl) -
媒体落盘:先 tmp 中转,再归档到
inboundMedia.dir/YYYY-MM-DD/ -
消息体注入稳定路径:
[image] saved:/.../[voice] saved:/.../[file] saved:/... -
过期清理:按
inboundMedia.keepDays延迟清理(避免“回复后立刻删”导致 OCR/回发失败) -
大小限制:按
inboundMedia.maxBytes限制单文件大小
出站(主动发送)
-
支持主动发送文本
-
支持主动发送媒体(按 MIME/扩展名识别 image/voice/file)
-
Markdown 降级:
stripMarkdown()将 Markdown 转为企业微信可显示的纯文本
目标解析与路由
-
支持多种 target 输入格式:
-
wecom-app:user:<id>/wecom-app:group:<id> -
user:<id>/group:<id> -
裸 id(默认当 user)
-
xxx@accountId(带账号选择)
多账号与策略
-
支持
defaultAccount+accounts多账号 -
DM 策略:
dmPolicy(open/pairing/allowlist/disabled) -
群策略:
groupPolicy(open/allowlist/disabled) -
群 @ 要求:
requireMention -
allowlist:
allowFrom/groupAllowFrom -
入站媒体配置:
inboundMedia.enabled/dir/maxBytes/keepDays
GitHub - RainbowRain9/openclaw-china: Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
Clawdbot/OpenClaw中国插件:支持飞书,钉钉,QQ,企业微信
都看到最后了,希望可以点个小或者给我的项目点个
网友解答:--【壹】--:
前面在公司github看到了这个项目,还想着把现有的换成这个集成,没想到下班就刷到佬友的帖子了,感谢佬友
--【贰】--: 彩虹雨:
wecom-app
wecom-app有点难搞,还必须有个公网回调地址
--【叁】--:
要有一个公网ip地址做回调
--【肆】--:
某动物:你等着,马上叫一群律师给你函
--【伍】--:
一般来说配 OpenClaw 的人都会有一个自己的公网ip吧。
--【陆】--:
Mark
--【柒】--:
感谢分享
--【捌】--:
企业微信相对安全一些,微信别碰。
当然,都是玄学
--【玖】--:
mairk一下
--【拾】--:
需要配置API吗
--【拾壹】--:
这是用的官方渠道。没有用hook之类的特殊手段,应该没事吧
--【拾贰】--: 彩虹雨:
pnpm(用于构建插件)
以前创建的企业微信应用不需要配置可信IP,现在的都要了
--【拾叁】--:
感谢大佬教程
--【拾肆】--:
这居然是佬友写的好厉害
--【拾伍】--:
个人会不会容易封号,之前玩的那个部署到微信的AI,玩了几天差点被封(
--【拾陆】--:
企业微信? 个人用户怎么弄?
--【拾柒】--:
谢谢佬友分享
--【拾捌】--:
去企业微信随便创建一下就行,不用认证
--【拾玖】--:
前排围观支持一下!

