@wecom/wecom-openclaw-plugin 2026.7.2-beta.1 → 2026.8.17-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -4
- package/dist/index.js +14 -21
- package/dist/src/cli/argv.d.ts +36 -0
- package/dist/src/cli/argv.js +155 -0
- package/dist/src/cli/const.d.ts +94 -0
- package/dist/src/cli/const.js +107 -0
- package/dist/src/cli/credentials.d.ts +54 -0
- package/dist/src/cli/credentials.js +342 -0
- package/dist/src/cli/index.d.ts +5 -0
- package/dist/src/cli/index.js +5 -0
- package/dist/src/cli/legacy-tool-warning.d.ts +12 -0
- package/dist/src/cli/legacy-tool-warning.js +20 -0
- package/dist/src/cli/locate.d.ts +32 -0
- package/dist/src/cli/locate.js +196 -0
- package/dist/src/cli/process-launcher.d.ts +1 -0
- package/dist/src/cli/process-launcher.js +1 -0
- package/dist/src/cli/process-output.d.ts +14 -0
- package/dist/src/cli/process-output.js +43 -0
- package/dist/src/cli/tool.d.ts +46 -0
- package/dist/src/cli/tool.js +363 -0
- package/dist/src/const.d.ts +0 -8
- package/dist/src/const.js +0 -14
- package/dist/src/monitor.js +1 -12
- package/dist/src/state-manager.d.ts +0 -19
- package/dist/src/state-manager.js +1 -34
- package/dist/src/utils.d.ts +27 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -3
- package/skills/wecom-send-media/SKILL.md +2 -0
- package/skills/wecom-send-template-card/SKILL.md +1 -1
- package/skills/wecomcli-calendar/SKILL.md +302 -0
- package/skills/wecomcli-calendar/references/calendar-agenda.md +228 -0
- package/skills/wecomcli-calendar/references/calendar-cancel.md +110 -0
- package/skills/wecomcli-calendar/references/calendar-create.md +240 -0
- package/skills/wecomcli-calendar/references/calendar-freebusy.md +209 -0
- package/skills/wecomcli-calendar/references/calendar-meeting-room.md +172 -0
- package/skills/wecomcli-calendar/references/calendar-search.md +208 -0
- package/skills/wecomcli-calendar/references/calendar-update.md +274 -0
- package/skills/wecomcli-contact/SKILL.md +59 -0
- package/skills/wecomcli-disk/SKILL.md +401 -0
- package/skills/wecomcli-doc/SKILL.md +140 -0
- package/skills/wecomcli-doc/references/doc-contents-append.md +22 -0
- package/skills/wecomcli-doc/references/doc-contents-overwrite.md +29 -0
- package/skills/wecomcli-doc/references/doc-create.md +161 -0
- package/skills/wecomcli-doc/scripts/build_docx.py +1375 -0
- package/skills/wecomcli-doc-manage/SKILL.md +135 -0
- package/skills/wecomcli-doc-manage/references/doc-members-update.md +26 -0
- package/skills/wecomcli-doc-manage/references/doc-names-update.md +22 -0
- package/skills/wecomcli-doc-manage/references/doc-rules-update.md +24 -0
- package/skills/wecomcli-email/SKILL.md +216 -0
- package/skills/wecomcli-email/references/forward-mail.md +131 -0
- package/skills/wecomcli-email/references/get-mail.md +168 -0
- package/skills/wecomcli-email/references/reply-mail.md +140 -0
- package/skills/wecomcli-email/references/search-mail.md +113 -0
- package/skills/wecomcli-email/references/security.md +53 -0
- package/skills/wecomcli-email/references/send-mail.md +186 -0
- package/skills/wecomcli-email/references/send-schedule.md +83 -0
- package/skills/wecomcli-media/SKILL.md +100 -0
- package/skills/wecomcli-meeting/SKILL.md +374 -0
- package/skills/wecomcli-meeting/references/meeting-cancel.md +115 -0
- package/skills/wecomcli-meeting/references/meeting-create.md +169 -0
- package/skills/wecomcli-meeting/references/meeting-list.md +228 -0
- package/skills/wecomcli-meeting/references/meeting-original-get.md +100 -0
- package/skills/wecomcli-meeting/references/meeting-search.md +175 -0
- package/skills/wecomcli-meeting/references/meeting-update.md +219 -0
- package/skills/wecomcli-message/SKILL.md +213 -0
- package/skills/wecomcli-preflight/SKILL.md +147 -0
- package/skills/wecomcli-sheet/SKILL.md +177 -0
- package/skills/wecomcli-sheet/references/sheet-contents-update.md +49 -0
- package/skills/wecomcli-sheet/references/sheet-ranges-get.md +47 -0
- package/skills/wecomcli-sheet/references/sheet-rows-append.md +47 -0
- package/skills/wecomcli-sheet/references/sheet-subsheets-add.md +28 -0
- package/skills/wecomcli-sheet/references/sheet-subsheets-delete.md +22 -0
- package/skills/wecomcli-smartpage/SKILL.md +172 -0
- package/skills/wecomcli-smartpage/references/data-driven-pages.md +50 -0
- package/skills/wecomcli-smartpage/references/formula/arraylist.md +369 -0
- package/skills/wecomcli-smartpage/references/formula/datetime.md +283 -0
- package/skills/wecomcli-smartpage/references/formula/logic.md +247 -0
- package/skills/wecomcli-smartpage/references/formula/math.md +362 -0
- package/skills/wecomcli-smartpage/references/formula/operators.md +246 -0
- package/skills/wecomcli-smartpage/references/formula/pageblock.md +76 -0
- package/skills/wecomcli-smartpage/references/formula/templates.md +410 -0
- package/skills/wecomcli-smartpage/references/formula/text.md +377 -0
- package/skills/wecomcli-smartpage/references/formula/user.md +22 -0
- package/skills/wecomcli-smartpage/references/formula-reference.md +192 -0
- package/skills/wecomcli-smartpage/references/mdx-syntax.md +739 -0
- package/skills/wecomcli-smartpage/references/smartpage-edit.md +519 -0
- package/skills/wecomcli-smartsheet/SKILL.md +153 -0
- package/skills/wecomcli-smartsheet/assets/templates/README.md +53 -0
- package/skills/wecomcli-smartsheet/assets/templates/ai_efficiency.md +709 -0
- package/skills/wecomcli-smartsheet/assets/templates/connect_to_app.md +380 -0
- package/skills/wecomcli-smartsheet/assets/templates/financial_accounting.md +369 -0
- package/skills/wecomcli-smartsheet/assets/templates/hr_and_administration.md +475 -0
- package/skills/wecomcli-smartsheet/assets/templates/ledger_records.md +156 -0
- package/skills/wecomcli-smartsheet/assets/templates/manufacturing.md +395 -0
- package/skills/wecomcli-smartsheet/assets/templates/marketing.md +186 -0
- package/skills/wecomcli-smartsheet/assets/templates/office_essentials.md +299 -0
- package/skills/wecomcli-smartsheet/assets/templates/personal_efficiency.md +70 -0
- package/skills/wecomcli-smartsheet/assets/templates/procurement_logistics.md +325 -0
- package/skills/wecomcli-smartsheet/assets/templates/project_management.md +564 -0
- package/skills/wecomcli-smartsheet/assets/templates/rd_process_customer.md +222 -0
- package/skills/wecomcli-smartsheet/assets/templates/rd_process_ops.md +105 -0
- package/skills/wecomcli-smartsheet/assets/templates/rd_process_project.md +109 -0
- package/skills/wecomcli-smartsheet/assets/templates/rd_process_research.md +92 -0
- package/skills/wecomcli-smartsheet/assets/templates/sales_and_operations.md +446 -0
- package/skills/wecomcli-smartsheet/assets/templates/store_management.md +431 -0
- package/skills/wecomcli-smartsheet/assets/templates/team_tasks.md +274 -0
- package/skills/wecomcli-smartsheet/assets/templates/wechat_customer.md +384 -0
- package/skills/wecomcli-smartsheet/assets/templates/work_report.md +100 -0
- package/skills/wecomcli-smartsheet/references/common.md +145 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-chart-types.md +95 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-edit.md +611 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-field-types.md +438 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-formula.md +845 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-read.md +411 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-record-values.md +203 -0
- package/skills/wecomcli-smartsheet/references/smart-sheet-view-types.md +356 -0
- package/skills/{wecom-smartsheet/references/webhook-examples.md → wecomcli-smartsheet/references/smart-sheet-webhook-examples.md} +23 -32
- package/skills/wecomcli-smartsheet/references/smart-sheet-webhook.md +169 -0
- package/skills/wecomcli-todo/SKILL.md +75 -0
- package/skills/wecomcli-todo/references/todo-create.md +139 -0
- package/skills/wecomcli-todo/references/todo-delete.md +65 -0
- package/skills/wecomcli-todo/references/todo-finish.md +74 -0
- package/skills/wecomcli-todo/references/todo-get.md +68 -0
- package/skills/wecomcli-todo/references/todo-list.md +135 -0
- package/skills/wecomcli-todo/references/todo-update.md +114 -0
- package/dist/src/mcp/index.d.ts +0 -6
- package/dist/src/mcp/index.js +0 -10
- package/dist/src/mcp/interceptors/biz-error.d.ts +0 -11
- package/dist/src/mcp/interceptors/biz-error.js +0 -69
- package/dist/src/mcp/interceptors/doc-auth-error.d.ts +0 -10
- package/dist/src/mcp/interceptors/doc-auth-error.js +0 -171
- package/dist/src/mcp/interceptors/index.d.ts +0 -35
- package/dist/src/mcp/interceptors/index.js +0 -72
- package/dist/src/mcp/interceptors/msg-media.d.ts +0 -11
- package/dist/src/mcp/interceptors/msg-media.js +0 -133
- package/dist/src/mcp/interceptors/smartpage-create.d.ts +0 -30
- package/dist/src/mcp/interceptors/smartpage-create.js +0 -132
- package/dist/src/mcp/interceptors/smartpage-export.d.ts +0 -17
- package/dist/src/mcp/interceptors/smartpage-export.js +0 -87
- package/dist/src/mcp/interceptors/smartsheet-upload.d.ts +0 -22
- package/dist/src/mcp/interceptors/smartsheet-upload.js +0 -263
- package/dist/src/mcp/interceptors/types.d.ts +0 -64
- package/dist/src/mcp/interceptors/types.js +0 -7
- package/dist/src/mcp/schema.d.ts +0 -11
- package/dist/src/mcp/schema.js +0 -99
- package/dist/src/mcp/tool.d.ts +0 -63
- package/dist/src/mcp/tool.js +0 -224
- package/dist/src/mcp/transport.d.ts +0 -94
- package/dist/src/mcp/transport.js +0 -549
- package/skills/wecom-contact/SKILL.md +0 -162
- package/skills/wecom-doc/SKILL.md +0 -127
- package/skills/wecom-meeting/SKILL.md +0 -441
- package/skills/wecom-meeting/references/example-full.md +0 -30
- package/skills/wecom-meeting/references/example-reminder.md +0 -46
- package/skills/wecom-meeting/references/example-security.md +0 -22
- package/skills/wecom-meeting/references/response-get-meeting-info.md +0 -148
- package/skills/wecom-msg/SKILL.md +0 -157
- package/skills/wecom-msg/references/api-get-messages.md +0 -93
- package/skills/wecom-msg/references/api-get-msg-chat-list.md +0 -58
- package/skills/wecom-msg/references/api-get-msg-media.md +0 -44
- package/skills/wecom-msg/references/api-send-message.md +0 -39
- package/skills/wecom-preflight/SKILL.md +0 -141
- package/skills/wecom-schedule/SKILL.md +0 -161
- package/skills/wecom-schedule/references/api-check-availability.md +0 -56
- package/skills/wecom-schedule/references/api-create-schedule.md +0 -38
- package/skills/wecom-schedule/references/api-get-schedule-detail.md +0 -81
- package/skills/wecom-schedule/references/api-update-schedule.md +0 -32
- package/skills/wecom-schedule/references/ref-reminders.md +0 -24
- package/skills/wecom-sheet/SKILL.md +0 -131
- package/skills/wecom-sheet/references/sheet-add-sub.md +0 -54
- package/skills/wecom-sheet/references/sheet-append-data.md +0 -64
- package/skills/wecom-sheet/references/sheet-delete-sub.md +0 -38
- package/skills/wecom-sheet/references/sheet-update-range-data.md +0 -95
- package/skills/wecom-smartpage/SKILL.md +0 -119
- package/skills/wecom-smartpage/references/smartpage-create.md +0 -130
- package/skills/wecom-smartpage/references/smartpage-export.md +0 -168
- package/skills/wecom-smartsheet/SKILL.md +0 -241
- package/skills/wecom-smartsheet/references/smartsheet-cell-value-formats.md +0 -163
- package/skills/wecom-smartsheet/references/smartsheet-field-types.md +0 -44
- package/skills/wecom-smartsheet/references/smartsheet-get-records.md +0 -187
- package/skills/wecom-smartsheet/references/webhook-fallback.md +0 -183
- package/skills/wecom-todo/SKILL.md +0 -272
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
# 智能表格 Webhook 兜底写入
|
|
2
|
-
|
|
3
|
-
> 本文档是 `smartsheet_add_records` / `smartsheet_update_records` 的 **fallback 参考**。
|
|
4
|
-
> 当通过 `wecom_mcp` tool 调用因企业规模限制(可见范围 > 10 人)报错、无法写入智能表格时,切换到本方案,通过企业微信智能表格的 Webhook 接口直接写入数据。
|
|
5
|
-
>
|
|
6
|
-
> ⚠️ **格式隔离**:以下字段值格式仅适用于 Webhook 接口,与 `wecom_mcp` tool 侧 `smartsheet_add_records` / `smartsheet_update_records` 的参数结构**不同**(例如文本、URL、图片、日期的写法均有差异),请勿与 [cell-value-formats.md](cell-value-formats.md) 的格式混用。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 一、Fallback 触发流程
|
|
11
|
-
|
|
12
|
-
### 何时切换到 Webhook
|
|
13
|
-
|
|
14
|
-
先走 `wecom_mcp` tool 正常链路(`smartsheet_add_records` / `smartsheet_update_records`)。仅在出现以下情况时才切换到 Webhook:
|
|
15
|
-
|
|
16
|
-
- **优先判据**:返回 `errcode: 851003`,或 `errmsg` 包含 `no authority` —— 无文档权限。在编辑场景,通常是因为机器人不允许编辑由企业成员创建的文档
|
|
17
|
-
- 或 `errmsg` / 提示信息明显指向**无文档权限**(例如"超出可见范围"、"成员数超限"等相关描述)- 其他错误(参数错误、字段 ID 错误、文档不存在等)**不应**切换到 Webhook,应按原错误排查
|
|
18
|
-
|
|
19
|
-
### 切换时向用户索取的两样东西
|
|
20
|
-
|
|
21
|
-
切换触发后,**每次对话内临时获取,用完即弃,不保存到本地任何位置**:
|
|
22
|
-
|
|
23
|
-
1. **Webhook 完整 URL**
|
|
24
|
-
- 在智能表格右上角菜单 → 「接收外部数据」→ 选择目标工作表 → 开启 → 复制
|
|
25
|
-
- 格式形如 `https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key=XXXXXX`
|
|
26
|
-
- 该 URL 相当于该表的写入密钥,用户随时可以在智能表格里关闭「接收外部数据」使其失效
|
|
27
|
-
2. **schema 示例 JSON**
|
|
28
|
-
- 同一「接收外部数据」页面即可复制
|
|
29
|
-
- 包含字段 ID → 字段名的映射(`schema`)和各字段的写入格式示例(`add_records`)
|
|
30
|
-
|
|
31
|
-
示例:
|
|
32
|
-
|
|
33
|
-
```json
|
|
34
|
-
{
|
|
35
|
-
"schema": {
|
|
36
|
-
"fABCD1": "任务名称",
|
|
37
|
-
"fABCD2": "状态",
|
|
38
|
-
"fABCD3": "负责人",
|
|
39
|
-
"fABCD4": "截止日期"
|
|
40
|
-
},
|
|
41
|
-
"add_records": [
|
|
42
|
-
{
|
|
43
|
-
"values": {
|
|
44
|
-
"fABCD1": "示例任务",
|
|
45
|
-
"fABCD2": [{"text": "未开始"}],
|
|
46
|
-
"fABCD3": [{"user_id": ""}],
|
|
47
|
-
"fABCD4": "1742400000000"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 向用户告知的话术参考
|
|
55
|
-
|
|
56
|
-
- “通过 `wecom_mcp` 写入接口返回了 `851003 no authority`,无文档权限(在编辑场景,通常是因为机器人不允许编辑由企业成员创建的文档)。请把目标表的 Webhook 地址和「接收外部数据」页面的示例 JSON 发我,我帮你通过 Webhook 写入。该信息仅本轮使用,不会保存到本地。”
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 二、构建请求
|
|
61
|
-
|
|
62
|
-
### 字段匹配
|
|
63
|
-
|
|
64
|
-
用户描述通常是自然语言(“标题”“状态”“处理人”),需从用户提供的 `schema` 中找对应字段 ID:
|
|
65
|
-
|
|
66
|
-
- 模糊匹配:`标题` → 标题 / 名称 / 主题;`状态` → 状态 / 阶段;`处理人` → 负责人 / 责任人
|
|
67
|
-
- 不确定时先问用户确认,避免写错字段
|
|
68
|
-
|
|
69
|
-
各字段类型的值写法见下方 [字段类型格式规范](#三字段类型格式规范);真实场景示例见 [webhook-examples.md](webhook-examples.md)。
|
|
70
|
-
|
|
71
|
-
### 日期处理
|
|
72
|
-
|
|
73
|
-
用户说“今天”“明天”“3 月 15 日”“2025-03-01 09:00”等自然语言日期时,**在 payload 构造阶段**根据当前日期推算为**毫秒时间戳字符串**(如 `"1742400000000"`)。Webhook 侧**不接受**可读日期字符串。
|
|
74
|
-
|
|
75
|
-
### 请求结构
|
|
76
|
-
|
|
77
|
-
Webhook 是标准 HTTP 接口,不经过 `wecom_mcp`,请按执行环境选择合适的工具发送(`curl`、`node` 内置 `fetch`、`python` 的 `requests` / `urllib` 等均可,优先用当前环境最便捷的方式):
|
|
78
|
-
|
|
79
|
-
| 项 | 值 |
|
|
80
|
-
|---|---|
|
|
81
|
-
| Method | `POST` |
|
|
82
|
-
| URL | 用户提供的 Webhook 完整 URL(含 `?key=XXX`) |
|
|
83
|
-
| Header | `Content-Type: application/json` |
|
|
84
|
-
| Body | JSON 对象,包含 `add_records` 和/或 `update_records` 字段 |
|
|
85
|
-
|
|
86
|
-
### Body 结构
|
|
87
|
-
|
|
88
|
-
- 仅新增:
|
|
89
|
-
|
|
90
|
-
```json
|
|
91
|
-
{
|
|
92
|
-
"add_records": [
|
|
93
|
-
{ "values": { "fABCD1": "...", "fABCD2": [{"text": "..."}] } }
|
|
94
|
-
]
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
- 仅更新(需提供 `record_id`,且**只能更新通过 Webhook 写入的记录**,人工创建的记录无法更新):
|
|
99
|
-
|
|
100
|
-
```json
|
|
101
|
-
{
|
|
102
|
-
"update_records": [
|
|
103
|
-
{ "record_id": "REC_xxx", "values": { "fABCD2": [{"text": "已完成"}] } }
|
|
104
|
-
]
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
- 同一请求同时新增和更新:
|
|
109
|
-
|
|
110
|
-
```json
|
|
111
|
-
{
|
|
112
|
-
"add_records": [ { "values": { ... } } ],
|
|
113
|
-
"update_records": [ { "record_id": "REC_xxx", "values": { ... } } ]
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 成功后
|
|
118
|
-
|
|
119
|
-
简洁告知结果,例如:
|
|
120
|
-
|
|
121
|
-
> “已通过 Webhook 写入,record_id: `REC_xxx`”
|
|
122
|
-
|
|
123
|
-
返回非 0 `errcode` 时参考下方 [常见错误码](#六常见错误码)。
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## 三、字段类型格式规范
|
|
128
|
-
|
|
129
|
-
### 各类型写法
|
|
130
|
-
|
|
131
|
-
| 字段类型 | value 示例 | 说明 |
|
|
132
|
-
|---------|-----------|------|
|
|
133
|
-
| 文本 | `"产品登录页白屏"` 或 `[{"type":"text","text":"产品登录页白屏"}]` | 简单字符串更简洁 |
|
|
134
|
-
| 数字 / 货币 | `58000` | double,不要加引号 |
|
|
135
|
-
| 进度 / 百分数 | `30` | 传整数值,`30` = 30%;**不要传小数** `0.3`(那样会显示 0.3%) |
|
|
136
|
-
| 复选框 | `true` / `false` | bool |
|
|
137
|
-
| 日期 | `"1740806400000"` | 毫秒时间戳,字符串形式 |
|
|
138
|
-
| 成员 | `[{"user_id":"lisi"}]` 或 `["张三"]` 或 `[]` | userid 通常就是企业微信登录账号;不指定时传 `[]` |
|
|
139
|
-
| 单选 | `[{"text":"已完成"}]` | 数组,选项文本必须与表格预设完全一致 |
|
|
140
|
-
| 多选 | `[{"text":"前端"},{"text":"后端"}]` | 数组,每个选项一个对象 |
|
|
141
|
-
| 链接 | `[{"text":"需求文档","link":"https://doc.example.com"}]` | 数组 |
|
|
142
|
-
| 地理位置 | `[{"latitude":"31.23040","longitude":"121.47370","source_type":1,"title":"上海市徐汇区"}]` | 数组,最多 1 条 |
|
|
143
|
-
| 图片 | `[{"title":"screenshot.png","image_base64":"iVBORw0KGgo..."}]` | 纯 base64,**不要带 `data:image/...;base64,` 前缀**,否则报 errcode 2023033 |
|
|
144
|
-
| 电话 / 邮箱 / 条码 | `"13800138000"` | 字符串 |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 四、不支持的字段
|
|
149
|
-
|
|
150
|
-
以下字段由系统自动维护或结构特殊,Webhook 写入时**跳过即可,不要报错**:
|
|
151
|
-
|
|
152
|
-
公式、自动编号、查找引用、关联字段、创建人、最后编辑人、创建时间、最后编辑时间、群聊、文件附件。
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 五、频率限制
|
|
157
|
-
|
|
158
|
-
- 单工作表:≤ 3000 条/分钟
|
|
159
|
-
- 单文档:≤ 10000 条/分钟
|
|
160
|
-
|
|
161
|
-
数据量大时建议分批,每批不超过 500 条。
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## 六、常见错误码
|
|
166
|
-
|
|
167
|
-
| errcode | 原因 | 解决方法 |
|
|
168
|
-
|---------|------|---------|
|
|
169
|
-
| 2023033 | 图片 base64 携带了 `data:image/...;base64,` 前缀 | 去掉前缀,只传纯 base64 字符串 |
|
|
170
|
-
| 40014 | Webhook key 无效或已过期 | 请用户重新在智能表格「接收外部数据」获取 Webhook 地址 |
|
|
171
|
-
| 45033 | 超出频率限制 | 降低发送速率或分批发送 |
|
|
172
|
-
| -100035 | testapi 域名不稳定(超时) | 改用正式域名 `qyapi.weixin.qq.com` |
|
|
173
|
-
| 2023001 | 字段 ID 不存在 | 核对用户提供的 `schema`,确认字段 ID 拼写正确 |
|
|
174
|
-
| 2023010 | 单选/多选的选项值不在预设列表 | 确认选项文本与表格设置完全一致(区分大小写) |
|
|
175
|
-
| 2023012 | record_id 不存在(更新时) | 只能更新通过 Webhook 写入的记录,人工创建的记录无法更新 |
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## 七、参考文件
|
|
180
|
-
|
|
181
|
-
- 真实场景示例 → [webhook-examples.md](webhook-examples.md)
|
|
182
|
-
|
|
183
|
-
按需查阅,不用每次全读。
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wecom-todo
|
|
3
|
-
description: 企业微信待办事项管理技能,支持创建待办、更新待办、更改用户在待办中的状态、获取待办列表、批量获取待办详情、删除待办。在用户说"帮我创建一个待办"、"把这个任务分派给张三"、"标记待办完成"、"接受/拒绝这个待办"、"把我在这个待办里的状态改成已完成"、"删掉那个待办"、"帮我建个提醒"、"更新一下待办内容"、"把提醒时间改到下周"、"看看这个待办的详情"、"待办分派给谁了"、"看看我有哪些待办"、"列一下我最近的待办"等需要对待办进行读写操作的场景时使用。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 企业微信待办事项管理技能
|
|
7
|
-
|
|
8
|
-
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
9
|
-
|
|
10
|
-
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
11
|
-
|
|
12
|
-
## 概述
|
|
13
|
-
|
|
14
|
-
wecom-todo 提供企业微信待办事项的管理能力,包含以下功能:
|
|
15
|
-
|
|
16
|
-
1. **搜索 userid** - 根据姓名或别名搜索用户的 userid,用于在创建/更新待办、更改用户状态、查询待办列表时把姓名解析为 userid
|
|
17
|
-
2. **创建待办** - 创建新的待办事项,可指定内容、参与人、截止时间和提醒方式
|
|
18
|
-
3. **更新待办** - 修改已有待办的内容、参与人、待办状态、截止时间和提醒方式
|
|
19
|
-
4. **更改用户状态** - 更改某位参与人在某个待办中的状态(拒绝/接受/已完成)
|
|
20
|
-
5. **获取待办列表** - 获取指定用户的待办列表,支持按创建时间和提醒时间过滤
|
|
21
|
-
6. **获取待办详情** - 根据待办 ID 列表批量获取完整信息
|
|
22
|
-
7. **删除待办** - 删除指定的待办事项
|
|
23
|
-
|
|
24
|
-
## 命令调用方式
|
|
25
|
-
|
|
26
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo <tool_name> '<json格式的入参>'`
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 命令详细说明
|
|
31
|
-
|
|
32
|
-
### 1. 搜索 userid (search_todo_userid)
|
|
33
|
-
|
|
34
|
-
基础接口,根据姓名或别名搜索用户的 userid,用于在创建待办、更新待办时把用户姓名解析为 userid 进行传参。
|
|
35
|
-
|
|
36
|
-
#### 调用方式
|
|
37
|
-
|
|
38
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo search_todo_userid '<json格式的入参>'`
|
|
39
|
-
|
|
40
|
-
#### 入参说明
|
|
41
|
-
|
|
42
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
43
|
-
|------|------|------|------|
|
|
44
|
-
| `keyword` | string | 是 | 姓名或别名 |
|
|
45
|
-
|
|
46
|
-
#### 调用示例
|
|
47
|
-
|
|
48
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo search_todo_userid '{"keyword": "张三"}'`
|
|
49
|
-
|
|
50
|
-
#### 返回字段说明
|
|
51
|
-
|
|
52
|
-
- 返回与关键字匹配的用户的 `userid`(可能为多个候选)。
|
|
53
|
-
- 若有多个同名/相似用户,展示候选列表让用户确认后再使用;展示时只用姓名/别名/部门等可读信息区分,**禁止向用户暴露 `userid`**。
|
|
54
|
-
- 拿到的 `userid` 用于 `create_todo` / `update_todo` 的 `follower_list`,仅供内部传参,不在对话中展示。
|
|
55
|
-
- 调用前可先检查对话上下文是否已有该用户的 `userid`,若有则直接复用、无需再次查询;若本接口返回错误(查询失败、无结果等),则改用通讯录 `wecom-contact` 技能搜索(详见注意事项第 2 条)。
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
### 2. 创建待办 (create_todo)
|
|
60
|
-
|
|
61
|
-
创建一个新的待办事项,可指定内容、参与人、截止时间和提醒方式。
|
|
62
|
-
|
|
63
|
-
#### 调用方式
|
|
64
|
-
|
|
65
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo create_todo '<json格式的入参>'`
|
|
66
|
-
|
|
67
|
-
#### 入参说明
|
|
68
|
-
|
|
69
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
70
|
-
|------|------|----|-----------------------------------------------------------------|
|
|
71
|
-
| `content` | string | 是 | 待办内容 |
|
|
72
|
-
| `follower_list` | object | 是 | 参与人信息,对象中包含 `followers` 数组,格式见注意事项第 3 条 |
|
|
73
|
-
| `end_time` | string | 条件必填 | 截止时间(到期时间),格式:`YYYY-MM-DD HH:mm:ss`;提醒方式基于此时间计算偏移。当 `remind_type_list` 含非 `0`(即设置了实际提醒)时**必填** |
|
|
74
|
-
| `remind_type_list` | uint32[] | 否 | 提醒方式,相对 `end_time` 计算,可传入多个,取值见注意事项第 4 条 |
|
|
75
|
-
|
|
76
|
-
#### 调用示例
|
|
77
|
-
|
|
78
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo create_todo '{"content": "<待办的内容>", "follower_list": {"followers": [{"follower_id": "FOLLOWER_ID", "follower_status": 1}]}, "end_time": "2025-06-01 09:00:00", "remind_type_list": [3, 7]}'`
|
|
79
|
-
|
|
80
|
-
#### 返回字段说明
|
|
81
|
-
|
|
82
|
-
| 字段 | 类型 | 说明 |
|
|
83
|
-
|------|------|------|
|
|
84
|
-
| `todo_id` | string | 新创建的待办唯一 ID |
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
### 3. 更新待办 (update_todo)
|
|
89
|
-
|
|
90
|
-
修改已有待办事项的内容、参与人、待办状态、截止时间或提醒方式。
|
|
91
|
-
|
|
92
|
-
> 说明:本接口可更改待办状态(`todo_status`),但**不能更改参与人状态(`follower_status`)**。如需更改当前用户在某个待办中的状态,请使用 `change_todo_user_status`。
|
|
93
|
-
|
|
94
|
-
#### 调用方式
|
|
95
|
-
|
|
96
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo update_todo '<json格式的入参>'`
|
|
97
|
-
|
|
98
|
-
#### 入参说明
|
|
99
|
-
|
|
100
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
101
|
-
|------|------|------|----------------------------------------------------------|
|
|
102
|
-
| `todo_id` | string | 是 | 待办 ID |
|
|
103
|
-
| `content` | string | 否 | 新的待办内容 |
|
|
104
|
-
| `follower_list` | object | 否 | 新的参与人信息(全量替换,非追加),对象中包含 `followers` 数组,格式见注意事项第 3 条。若要新增参与人,需先查出现有参与人,合并后一起提交。**本接口不会更改参与人状态(`follower_status`),如需更改用户状态请使用 `change_todo_user_status`** |
|
|
105
|
-
| `todo_status` | uint32 | 否 | 新的待办状态:`0`-已完成,`1`-进行中 |
|
|
106
|
-
| `end_time` | string | 否 | 新的截止时间(到期时间),格式:`YYYY-MM-DD HH:mm:ss`;提醒方式基于此时间计算偏移 |
|
|
107
|
-
| `remind_type_list` | uint32[] | 否 | 新的提醒方式,相对 `end_time` 计算,可传入多个 |
|
|
108
|
-
|
|
109
|
-
#### 调用示例
|
|
110
|
-
|
|
111
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "content": "<待办的内容>", "end_time": "2025-07-01 09:00:00", "remind_type_list": [1]}'`
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
### 4. 更改用户在某个待办的状态 (change_todo_user_status)
|
|
116
|
-
|
|
117
|
-
更改某位参与人在某个待办中的状态(拒绝/接受/已完成)。
|
|
118
|
-
|
|
119
|
-
#### 调用方式
|
|
120
|
-
|
|
121
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo change_todo_user_status '<json格式的入参>'`
|
|
122
|
-
|
|
123
|
-
#### 入参说明
|
|
124
|
-
|
|
125
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
126
|
-
|------|------|------|------|
|
|
127
|
-
| `todo_id` | string | 是 | 待办 ID |
|
|
128
|
-
| `follower_id` | string | 是 | 参与人 `userid`,指定要修改哪一位参与人的状态。来源遵循注意事项第 2 条的 userid 获取规则(上下文已有 → `search_todo_userid` → `wecom-contact` 技能兜底),禁止自行猜测或构造 |
|
|
129
|
-
| `user_status` | uint32 | 是 | 用户状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
130
|
-
|
|
131
|
-
#### 调用示例
|
|
132
|
-
|
|
133
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo change_todo_user_status '{"todo_id": "TODO_ID", "follower_id": "FOLLOWER_ID", "user_status": 2}'`
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
### 5. 获取待办列表 (get_todo_list)
|
|
138
|
-
|
|
139
|
-
获取指定用户(由 `follower_id` 指定,可为任意用户)通过机器人的待办列表,支持当天前后一个月的待办,可按创建时间、提醒时间、截止时间和待办状态过滤。
|
|
140
|
-
|
|
141
|
-
#### 调用方式
|
|
142
|
-
|
|
143
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '<json格式的入参>'`
|
|
144
|
-
|
|
145
|
-
#### 入参说明
|
|
146
|
-
|
|
147
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
148
|
-
|------|------|------|------|
|
|
149
|
-
| `follower_id` | string | 是 | 参与人 `userid`,指定要查询哪一位用户的待办列表(可为任意用户),来源遵循注意事项第 2 条的 userid 获取规则,禁止自行猜测或构造 |
|
|
150
|
-
| `create_begin_time` | string | 否 | 创建开始时间 |
|
|
151
|
-
| `create_end_time` | string | 否 | 创建结束时间 |
|
|
152
|
-
| `remind_begin_time` | string | 否 | 提醒开始时间 |
|
|
153
|
-
| `remind_end_time` | string | 否 | 提醒结束时间 |
|
|
154
|
-
| `deadline_begin_time` | string | 否 | 截止开始时间 |
|
|
155
|
-
| `deadline_end_time` | string | 否 | 截止结束时间 |
|
|
156
|
-
| `todo_status` | uint32 | 否 | 待办状态:`0`-已完成,`1`-进行中 |
|
|
157
|
-
| `limit` | uint32 | 否 | 最大返回数量,默认为 10,最大为 20 |
|
|
158
|
-
| `cursor` | string | 否 | 游标,用于分页 |
|
|
159
|
-
|
|
160
|
-
> **查询时间范围限制**:
|
|
161
|
-
> - 用于筛选的时间(创建时间、提醒时间、截止时间)必须落在当天前后 30 天以内。
|
|
162
|
-
> - 若仅按 `todo_status` 筛选而未传任何时间范围,则默认按「创建时间在当天前后 30 天内」查询。
|
|
163
|
-
|
|
164
|
-
#### 调用示例
|
|
165
|
-
|
|
166
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{"follower_id": "FOLLOWER_ID", "create_begin_time": "2025-06-01 00:00:00", "create_end_time": "2025-06-30 23:59:59", "todo_status": 1, "limit": 20}'`
|
|
167
|
-
|
|
168
|
-
#### 返回字段说明
|
|
169
|
-
|
|
170
|
-
- 返回指定用户(`follower_id`)的待办列表,以及用于分页的游标。
|
|
171
|
-
- 拿到的 `todo_id` 可用于 `get_todo_detail` / `update_todo` / `delete_todo`,仅供内部传参,**禁止向用户暴露**。
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
### 6. 获取待办详情 (get_todo_detail)
|
|
176
|
-
|
|
177
|
-
根据待办 ID 列表批量查询完整详情,包含待办内容和参与人信息。
|
|
178
|
-
|
|
179
|
-
#### 调用方式
|
|
180
|
-
|
|
181
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '<json格式的入参>'`
|
|
182
|
-
|
|
183
|
-
#### 入参说明
|
|
184
|
-
|
|
185
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
186
|
-
|------|------|------|------|
|
|
187
|
-
| `todo_id_list` | string[] | 是 | 待办 ID 列表,至少 1 个,最多 20 个 |
|
|
188
|
-
|
|
189
|
-
#### 调用示例
|
|
190
|
-
|
|
191
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID_1", "TODO_ID_2"]}'`
|
|
192
|
-
|
|
193
|
-
#### 返回字段说明
|
|
194
|
-
|
|
195
|
-
| 字段 | 类型 | 说明 |
|
|
196
|
-
|---------------------------------------------------------|------|-----------------------------------|
|
|
197
|
-
| `data_list` | array | 待办详情列表,最多 20 条 |
|
|
198
|
-
| `data_list[].todo_id` | string | 待办 ID |
|
|
199
|
-
| `data_list[].todo_status` | number | 待办状态:`0`-已完成,`1`-进行中,`2`-已删除 |
|
|
200
|
-
| `data_list[].content` | string | 待办内容 |
|
|
201
|
-
| `data_list[].follower_list` | object | 参与人列表 |
|
|
202
|
-
| `data_list[].follower_list.followers[].follower_id` | string | 参与人 ID(即 userid) |
|
|
203
|
-
| `data_list[].follower_list.followers[].name` | string | 参与人姓名 |
|
|
204
|
-
| `data_list[].follower_list.followers[].follower_status` | number | 参与人状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
205
|
-
| `data_list[].follower_list.followers[].update_time` | string | 参与人状态更新时间 |
|
|
206
|
-
| `data_list[].creator_id` | string | 创建人 ID(即 userid) |
|
|
207
|
-
| `data_list[].user_status` | number | 当前用户在该待办中的状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
208
|
-
| `data_list[].end_time` | string | 截止时间(到期时间) |
|
|
209
|
-
| `data_list[].remind_type_list` | array | 提醒方式列表 |
|
|
210
|
-
| `data_list[].create_time` | string | 创建时间 |
|
|
211
|
-
| `data_list[].update_time` | string | 更新时间 |
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
### 7. 删除待办 (delete_todo)
|
|
216
|
-
|
|
217
|
-
删除指定的待办事项。
|
|
218
|
-
|
|
219
|
-
#### 调用方式
|
|
220
|
-
|
|
221
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo delete_todo '<json格式的入参>'`
|
|
222
|
-
|
|
223
|
-
#### 入参说明
|
|
224
|
-
|
|
225
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
226
|
-
|------|------|------|------|
|
|
227
|
-
| `todo_id` | string | 是 | 待办 ID |
|
|
228
|
-
|
|
229
|
-
#### 调用示例
|
|
230
|
-
|
|
231
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo delete_todo '{"todo_id": "TODO_ID"}'`
|
|
232
|
-
|
|
233
|
-
---
|
|
234
|
-
|
|
235
|
-
## 注意事项
|
|
236
|
-
|
|
237
|
-
1. **todo_id 来源规则**
|
|
238
|
-
- `todo_id` 可来自 `create_todo` 返回的结果,或 `get_todo_list` 查询到的列表,请务必保存好,禁止自行推测或构造
|
|
239
|
-
|
|
240
|
-
2. **userid 来源与隐私规则**
|
|
241
|
-
- 分派待办时,`follower_list` 中的 `follower_id` 即 `userid`,按以下优先级获取,禁止根据用户姓名自行猜测或构造 userid:
|
|
242
|
-
1. **对话上下文已有**:若对话上下文中已经提到对应用户的 `userid`,直接使用,无需再次查询
|
|
243
|
-
2. **search_todo_userid 查询**:若上下文中没有,则可先询问用户在企业内的用户名称(通常是姓名),再通过 `search_todo_userid` 接口按姓名/别名查询获取
|
|
244
|
-
3. **通讯录技能兜底**:若 `search_todo_userid` 返回错误(如当前企业不适用等),则改用通讯录 `wecom-contact` 技能搜索获取 `userid`
|
|
245
|
-
- `userid` 属于敏感标识,仅用于接口传参,**禁止在回复或候选列表中向用户展示**;需要让用户区分人员时,只展示姓名/别名/部门等可读信息
|
|
246
|
-
|
|
247
|
-
3. **follower_list 格式说明**
|
|
248
|
-
- 作为入参时,`follower_list` 为对象,内含 `followers` 数组,格式如下:
|
|
249
|
-
```json
|
|
250
|
-
"follower_list": {
|
|
251
|
-
"followers": [
|
|
252
|
-
{
|
|
253
|
-
"follower_id": "FOLLOWER_ID",
|
|
254
|
-
"follower_status": 1
|
|
255
|
-
}
|
|
256
|
-
]
|
|
257
|
-
}
|
|
258
|
-
```
|
|
259
|
-
- `follower_id` 即用户的 `userid`,其来源遵循上文「userid 来源与隐私规则」的优先级(上下文已有 → `search_todo_userid` → `wecom-contact` 技能兜底),禁止自行猜测或构造
|
|
260
|
-
- `follower_status` 为参与人状态:`0`-拒绝,`1`-接受,`2`-已完成;该字段仅在 `create_todo` 中生效
|
|
261
|
-
- 在 `update_todo` 中为全量替换(非追加):若要新增参与人,需先用 `get_todo_detail` 查出现有参与人,合并后一并提交;`update_todo` **不会更改参与人状态(`follower_status`)**,如需更改当前用户在某个待办中的状态,请使用 `change_todo_user_status`
|
|
262
|
-
|
|
263
|
-
4. **remind_type_list 提醒方式取值**
|
|
264
|
-
|
|
265
|
-
`remind_type_list` 是一个 uint32 数组,可同时传入多个提醒:
|
|
266
|
-
|
|
267
|
-
| 值 | 含义 | 值 | 含义 |
|
|
268
|
-
|----|------|----|------|
|
|
269
|
-
| `0` | 不提醒 | `6` | 提前 2 小时 |
|
|
270
|
-
| `1` | 到期时 | `7` | 提前 1 天 |
|
|
271
|
-
| `3` | 提前 15 分钟 | `8` | 提前 2 天 |
|
|
272
|
-
| `5` | 提前 1 小时 | `9` | 提前 1 周 |
|