# 企业微信自建应用配置指南 本指南帮助你在企业微信中创建自建应用,并配置 OpenClaw 接入。
⭐ 如果这个项目对你有帮助,请给我们一个Star!⭐
您的支持是我们持续改进的动力
---
### 对话效果
### 3. 创建应用
1. 点击左侧菜单「应用管理」
2. 在「自建」区域点击「创建应用」
3. 填写应用信息:
- **应用名称**:例如 "AI 助手"
- **应用 logo**:上传一个图标
- **可见范围**:选择可以使用该应用的部门/成员
4. 点击「创建应用」
### 4. 获取应用凭证
创建成功后,进入应用详情页,记录以下信息:
- **AgentId**:应用的唯一标识(如 `1000002`)
- **Secret**:点击查看获取(这就是 `corpSecret`)
---
## 步骤二:配置接收消息服务器
### 1. 填写服务器配置
- **URL**:OpenClaw Gateway 的公网访问地址(企业微信会向这个地址发送消息回调)
**格式**:`<协议>://<域名或IP>:<端口>/<路径>`
**示例**:
- 使用域名:`https://your.domain.com/wecom-app`
- 使用 IP 地址(推荐,最简单):`http://123.45.67.89:18789/wecom-app`
**说明**:
- **域名/IP**:填写你服务器的公网域名或公网 IP 地址
- **端口**:填写 OpenClaw Gateway 监听的端口(默认 `18789`)
- **路径**:必须与配置文件中的 `webhookPath` 一致(默认 `/wecom-app`)
> 💡 **如何获取公网 IP**:在服务器上运行 `curl ifconfig.me` 或访问 [ifconfig.me](https://ifconfig.me)
>
> **⚠️ 重要:在这里你可以暂停并开始【步骤三】**
>
> 1. 回调必须先将Wecom-app的OpenClaw配置完毕,并且 OpenClaw处于运行状态。
>
> 2. 必须执行 `openclaw config set gateway.bind lan` 否则后续可能会出现 回调地址不通过 的错误
### 2. 配置 IP 白名单
在应用详情页的「企业可信 IP」设置中,添加你服务器的公网 IP 地址。
> 💡 如果不知道服务器 IP,可以先尝试发送消息,查看错误日志获取 IP。
---
## 步骤三:配置 OpenClaw
### 使用命令行配置
**Linux/macOS**:
推荐:优先通过「配置向导」`openclaw china setup` 完成配置;下方命令用于手动配置。
```bash
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,
"apiBaseUrl": "https://wecom-proxy.example.com"
}' --json
openclaw config set gateway.bind lan
```
**Windows CMD**:
```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 config set channels.wecom-app.apiBaseUrl https://wecom-proxy.example.com
openclaw config set gateway.bind lan
```
### 或直接编辑配置文件
编辑 `~/.openclaw/openclaw.json`:
```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,
"apiBaseUrl": "https://wecom-proxy.example.com",
"asr": {
"enabled": true,
"appId": "your-tencent-app-id",
"secretId": "your-tencent-secret-id",
"secretKey": "your-tencent-secret-key"
},
"inboundMedia": {
"enabled": true,
"maxBytes": 10485760,
"keepDays": 7
}
}
}
}
```
### 配置说明
| 字段 | 必填 | 说明 |
| :------------------------ | :--: | :---------------------------------------------------------------------- |
| `enabled` | ✅ | 是否启用该渠道 |
| `webhookPath` | ✅ | 回调路径,需与企业微信后台配置一致 |
| `token` | ✅ | 消息校验 Token,需与企业微信后台配置一致 |
| `encodingAESKey` | ✅ | 消息加密密钥(43 位),需与企业微信后台配置一致 |
| `corpId` | ✅ | 企业 ID |
| `corpSecret` | ✅ | 应用的 Secret |
| `agentId` | ✅ | 应用的 AgentId |
| `apiBaseUrl` | ❌ | 企业微信 API 基础地址;默认 `https://qyapi.weixin.qq.com`,可改为 VPS 代理地址 |
| `welcomeText` | ❌ | 用户首次进入时的欢迎语 |
| `asr.enabled` | ❌ | 是否启用语音转文本(腾讯云 Flash ASR) |
| `asr.appId` | ❌ | 腾讯云 ASR AppID |
| `asr.secretId` | ❌ | 腾讯云 ASR SecretId |
| `asr.secretKey` | ❌ | 腾讯云 ASR SecretKey |
| `asr.engineType` | ❌ | ASR 引擎类型,默认 `16k_zh` |
| `asr.timeoutMs` | ❌ | ASR 请求超时(毫秒),默认 `30000` |
| `inboundMedia.enabled` | ❌ | 是否启用入站媒体落盘(默认启用) |
| `inboundMedia.dir` | ❌ | 入站媒体归档目录(跨平台默认:`~/.openclaw/media/wecom-app/inbound`) |
| `inboundMedia.maxBytes` | ❌ | 单个入站媒体最大字节数(默认 10MB) |
| `inboundMedia.keepDays` | ❌ | 入站媒体保留天数(默认 7 天;用于自动清理) |
### (可选)家庭局域网 + VPS 代理企微 API
当 OpenClaw 跑在家庭网络,但企业微信后台可信 IP 配置在 VPS 时,可以把 `apiBaseUrl` 指向你的 VPS 代理地址(例如 `https://wecom-proxy.example.com`)。
- 插件会在该地址后自动拼接 `/cgi-bin/...` 路径
- 不配置时默认使用 `https://qyapi.weixin.qq.com`
- 默认账号也可通过环境变量 `WECOM_APP_API_BASE_URL` 覆盖
---
## 步骤四:重启 Gateway
```bash
openclaw gateway restart
```
---
## 步骤五:验证配置
### 1. 回到企业微信后台保存配置
现在 OpenClaw 已启动,回到企业微信后台的「接收消息」设置,点击「保存」。
如果配置正确,会提示保存成功。
### 2. 测试消息收发
1. 在企业微信 App 中打开你创建的应用
2. 发送一条消息
3. 查看 OpenClaw 日志确认消息接收
4. 等待 AI 回复
### 3. 验证 `/verbose on` 实时输出(可选)
如果你经常使用工具调用、文件读取或命令执行,建议顺手验证一下 verbose 输出是否正常:
1. 先在企业微信会话里发送 `/verbose on`
2. 再发送一个会触发多步执行的请求,例如“读取几个文件后总结差异”
3. 正常情况下,verbose 日志会**按段陆续发送**
4. 不会等全部任务完成后,再把所有日志合并成一条消息统一发出
> 提示:
> - 这个能力依赖 `corpId`、`corpSecret`、`agentId` 已正确配置,且企业微信 IP 白名单允许当前出口 IP。
> - 如果你刚升级插件,请记得执行一次 `openclaw gateway restart`。
---
## 步骤六:在个人微信使用
### 1.回到企业微信后台
回到企业微信后台的「我的企业」设置下的微信插件

用个人微信扫码「邀请关注」的二维码就可以在个人微信上打开入口
---
## 步骤七(可选):开启语音转文本(ASR)
如果你希望企业微信语音消息自动转文字后再交给 Agent 处理,可按下面步骤配置腾讯云 ASR(录音文件识别极速版)。
> [!IMPORTANT]
> 当前 QQ 渠道的腾讯云 ASR 仅支持国内网络下启用。
### 1. 开通 ASR 服务
访问腾讯云语音识别产品页并点击“立即使用”:
https://cloud.tencent.com/product/asr
说明:腾讯云 ASR 提供每月免费额度(以腾讯云控制台最新计费规则为准),额度如下:
- 录音文件识别极速版(`asr/flash/v1`):5 小时/月

### 2. 创建 API 密钥
进入腾讯云控制台语音识别页(或对应 API 密钥管理页)创建密钥,获取:
- `appId`
- `secretId`
- `secretKey`
控制台入口:
https://console.cloud.tencent.com/asr


### 3. 在 OpenClaw 中配置
默认账号:
```bash
openclaw config set channels.wecom-app.asr.enabled true
openclaw config set channels.wecom-app.asr.appId your-tencent-app-id
openclaw config set channels.wecom-app.asr.secretId your-tencent-secret-id
openclaw config set channels.wecom-app.asr.secretKey your-tencent-secret-key
```
多账号(示例:`app1`):
```bash
openclaw config set channels.wecom-app.accounts.app1.asr.enabled true
openclaw config set channels.wecom-app.accounts.app1.asr.appId your-tencent-app-id
openclaw config set channels.wecom-app.accounts.app1.asr.secretId your-tencent-secret-id
openclaw config set channels.wecom-app.accounts.app1.asr.secretKey your-tencent-secret-key
```
### 4. 计费文档
请仔细查看腾讯云计费文档。
https://cloud.tencent.com/document/product/1093/35686?from=console_document_search#58abe873-a924-4b4d-b056-59510b66c4d3

---
## 入站媒体(图片/语音/文件)落盘说明
为了支持图片 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 无法解析。
#### ⚠️ 重要:target 不是"显示名/备注名"
在 wecom-app 通道中,**target 不是"显示名/备注名"**,而是插件能解析的"地址格式"。
**错误示例**:
```bash
# ❌ 错误:直接写用户名
send CaiHongYu 你好
# 报错:Unknown target "CaiHongYu"
```
**原因**:插件会把 `CaiHongYu` 当成一个"可解析的收件人标识"去查,但通讯录里并没有叫这个 key 的条目,所以报 **Unknown target**。
**正确示例**:
```bash
# ✅ 正确:使用 user: 前缀
send user:CaiHongYu 你好
# 成功发送(插件会归一化为 user:caihongyu)
```
#### Target 语法规则
**必须带类型前缀**,才能命中解析规则:
- **私聊用户**:`user: