@wecom/wecom-openclaw-plugin 2026.7.2 → 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 -70
- 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 -392
- package/skills/wecom-todo/examples/workflows.md +0 -163
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wecom-preflight
|
|
3
|
-
description: 企业微信插件前置条件检查。在执行任何 wecom_mcp 操作前,通过 shell 命令检查工具权限配置(profile 和白名单),若缺失则自动修复并提示用户重启 Gateway。所有使用 wecom_mcp 的技能都应在首次调用前执行此检查。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 企业微信前置条件检查
|
|
7
|
-
|
|
8
|
-
> 本技能确保 `wecom_mcp` 工具已正确获得执行权限。**所有使用 wecom_mcp 的技能在首次调用前,必须先执行本检查流程。**
|
|
9
|
-
|
|
10
|
-
## 触发条件
|
|
11
|
-
|
|
12
|
-
当满足以下**任一条件**时,执行前置检查:
|
|
13
|
-
|
|
14
|
-
1. 当前会话中**首次**需要调用 `wecom_mcp` 工具
|
|
15
|
-
2. 调用 `wecom_mcp` 时收到 `tool not allowed`、`not permitted`、`permission denied` 或类似权限错误
|
|
16
|
-
|
|
17
|
-
> 如果当前会话中已成功调用过 `wecom_mcp`(任何操作),则无需重复检查。
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 检查流程
|
|
22
|
-
|
|
23
|
-
> **重要**:以下所有步骤均为 **shell 命令**(在终端中执行),**不是** MCP tool 调用。
|
|
24
|
-
> `wecom_mcp` 在未加入白名单前对 AI Agent 不可见,因此不能用 tool 调用来探测。
|
|
25
|
-
|
|
26
|
-
### 步骤 1:检查 tools.profile
|
|
27
|
-
|
|
28
|
-
在终端执行以下命令,读取当前 `tools.profile` 配置:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
openclaw config get tools.profile
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
根据返回结果分流:
|
|
35
|
-
|
|
36
|
-
- **返回 `full`** → ✅ **检查通过**。`full` 模式无任何工具限制,所有工具(包括 `wecom_mcp`)直接可用,无需检查 `alsoAllow`,继续执行用户原始请求
|
|
37
|
-
- **返回其他值**(如 `coding`、`messaging`、`minimal`、`undefined` 或空)→ 进入步骤 1b(检查 alsoAllow)
|
|
38
|
-
- **命令执行失败**(如 `command not found: openclaw`、权限错误等)→ 进入步骤 3(环境异常)
|
|
39
|
-
|
|
40
|
-
### 步骤 1b:检查 tools.alsoAllow
|
|
41
|
-
|
|
42
|
-
在终端执行以下命令,读取当前 `tools.alsoAllow` 配置:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
openclaw config get tools.alsoAllow
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
根据返回结果分流:
|
|
49
|
-
|
|
50
|
-
- **返回内容包含 `wecom_mcp`**(如 `["wecom_mcp"]` 或 `["wecom_mcp", "other_tool"]`)→ ✅ 白名单已配置,检查通过,继续执行用户原始请求
|
|
51
|
-
- **返回内容不包含 `wecom_mcp`**(如空数组 `[]`、`undefined`、或列表中没有 `wecom_mcp`)→ 进入步骤 2(自动修复)
|
|
52
|
-
- **命令执行失败** → 进入步骤 3(环境异常)
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
### 步骤 2:自动修复 tools.alsoAllow
|
|
57
|
-
|
|
58
|
-
在终端执行以下命令,将 `wecom_mcp` 加入工具白名单:
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
openclaw config set tools.alsoAllow '["wecom_mcp"]'
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
> **注意**:如果步骤 1b 返回的列表中已有其他工具(如 `["other_tool"]`),需要合并后再写入,例如:
|
|
65
|
-
> ```bash
|
|
66
|
-
> openclaw config set tools.alsoAllow '["other_tool", "wecom_mcp"]'
|
|
67
|
-
> ```
|
|
68
|
-
|
|
69
|
-
根据执行结果分流:
|
|
70
|
-
|
|
71
|
-
#### 2a. 命令执行成功
|
|
72
|
-
|
|
73
|
-
向用户回复(**不要自动执行重启**):
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
✅ 已自动将 wecom_mcp 加入工具执行权限白名单(tools.alsoAllow)。
|
|
77
|
-
⚠️ 配置变更需要重启 Gateway 后才能生效,请在终端执行以下命令:
|
|
78
|
-
|
|
79
|
-
openclaw gateway restart
|
|
80
|
-
|
|
81
|
-
重启完成后请重新发送您的请求。
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
> **为什么不自动重启**:`openclaw gateway restart` 会中断当前所有活跃连接(包括本会话),
|
|
85
|
-
> 如果由 AI 自动执行,用户可能无法看到完整的提示信息。交由用户手动重启更可控。
|
|
86
|
-
|
|
87
|
-
#### 2b. 命令执行失败
|
|
88
|
-
|
|
89
|
-
向用户回复以下手动修复指引:
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
❌ 自动配置失败,请在终端手动执行以下命令:
|
|
93
|
-
|
|
94
|
-
openclaw config set tools.alsoAllow '["wecom_mcp"]'
|
|
95
|
-
openclaw gateway restart
|
|
96
|
-
|
|
97
|
-
完成后请重新发送您的请求。
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
### 步骤 3:环境异常处理
|
|
103
|
-
|
|
104
|
-
如果步骤 1 或 1b 的 `openclaw` 命令本身执行失败(如 `command not found`、权限不足等),说明 OpenClaw CLI 未正确安装或不在 PATH 中,直接告知用户:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
⚠️ OpenClaw CLI 不可用:<错误信息>
|
|
108
|
-
|
|
109
|
-
可能原因:
|
|
110
|
-
- OpenClaw 未安装或未加入系统 PATH
|
|
111
|
-
- OpenClaw 版本过低,不支持 config 子命令
|
|
112
|
-
- 当前 shell 环境缺少必要配置
|
|
113
|
-
|
|
114
|
-
请检查 OpenClaw 安装状态后重试。
|
|
115
|
-
参考:https://docs.openclaw.dev/installation
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## 注意事项
|
|
121
|
-
|
|
122
|
-
1. **全程使用 shell 命令**:本技能的所有探测和修复操作均通过 `openclaw` CLI 在终端中执行,**不涉及任何 MCP tool 调用**。这样可以避免"tool 未白名单 → tool 不可见 → 无法探测"的死锁问题
|
|
123
|
-
2. **profile 优先判断**:`tools.profile` 为 `full` 时所有工具无限制,无需检查 `alsoAllow`,可快速跳过
|
|
124
|
-
3. **幂等性**:如果 `tools.alsoAllow` 中已包含 `wecom_mcp`,`openclaw config set` 命令不会产生副作用
|
|
125
|
-
4. **保留已有配置**:修改 `tools.alsoAllow` 时,需保留列表中已有的其他工具名,仅追加 `wecom_mcp`
|
|
126
|
-
5. **不自动重启**:自动配置成功后仅提示用户重启并附上命令,由用户手动执行,避免会话中断导致信息丢失
|
|
127
|
-
6. **会话缓存**:在同一个会话中,一旦检查通过(profile 为 full 或 alsoAllow 包含 wecom_mcp),后续调用无需重复检查
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## 快速参考
|
|
132
|
-
|
|
133
|
-
| 场景 | 处理方式 |
|
|
134
|
-
|------|---------|
|
|
135
|
-
| 首次调用 wecom_mcp 前 | 执行 `openclaw config get tools.profile` 检查 |
|
|
136
|
-
| `tools.profile` 为 `full` | ✅ 跳过,直接执行原始请求 |
|
|
137
|
-
| profile 非 full + alsoAllow 已包含 wecom_mcp | ✅ 跳过,继续执行 |
|
|
138
|
-
| profile 非 full + alsoAllow 不包含 → 自动写入成功 | 提示已配置 + 附 `openclaw gateway restart` 命令让用户重启 |
|
|
139
|
-
| profile 非 full + alsoAllow 不包含 → 自动写入失败 | 给出手动修复指引 |
|
|
140
|
-
| openclaw CLI 不可用 | 告知用户检查 OpenClaw 安装 |
|
|
141
|
-
| 会话中已成功调用过 wecom_mcp | 跳过检查 |
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wecom-schedule
|
|
3
|
-
description: 企业微信日程管理技能。适用于用户对企业微信日程的各类管理需求。当用户需要:(1) 查询指定时间范围内的日程列表或获取日程详细信息(标题、时间、地点、参与者等),(2) 创建新日程并设置提醒、参与人等,(3) 修改已有日程的标题、时间、地点等信息或取消日程,(4) 添加或移除日程参与人,(5) 查询多个成员的闲忙状态并分析共同空闲时段以安排会议时使用此技能。
|
|
4
|
-
metadata:
|
|
5
|
-
{
|
|
6
|
-
"openclaw": { "emoji": "📅" },
|
|
7
|
-
}
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# 企业微信日程管理技能
|
|
11
|
-
|
|
12
|
-
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
13
|
-
|
|
14
|
-
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
15
|
-
|
|
16
|
-
通过 `wecom_mcp call schedule <接口名> '<json入参>'` 与企业微信日程系统交互。
|
|
17
|
-
|
|
18
|
-
## 注意事项
|
|
19
|
-
|
|
20
|
-
- 日程列表查询仅支持**当日前后 30 天**,时间格式 `YYYY-MM-DD` 或 `YYYY-MM-DD HH:MM:SS`
|
|
21
|
-
- 涉及参与者 userid 时,需先使用 **wecom-contact** 技能获取;存在同名时展示候选让用户选择(禁止暴露 userid)
|
|
22
|
-
- 创建/修改/取消前,先确认目标日程和参与者信息
|
|
23
|
-
- `errcode != 0` 时展示错误信息;返回的 `start_time`/`end_time` 为 Unix 时间戳(秒),需转为可读格式
|
|
24
|
-
- **注意时间格式转换**:接口入参使用字符串格式(如 `YYYY-MM-DD HH:MM:SS`),但返回值多为 Unix 时间戳,使用时需进行格式转换
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## 接口列表
|
|
29
|
-
|
|
30
|
-
### get_schedule_list_by_range — 查询日程 ID 列表
|
|
31
|
-
|
|
32
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule get_schedule_list_by_range '{"start_time": "YYYY-MM-DD HH:MM:SS", "end_time": "YYYY-MM-DD HH:MM:SS"}'`
|
|
33
|
-
|
|
34
|
-
返回 `schedule_id_list` 数组。仅支持当日前后 30 天。
|
|
35
|
-
|
|
36
|
-
### get_schedule_detail — 获取日程详情
|
|
37
|
-
|
|
38
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule get_schedule_detail '{"schedule_id_list": ["SCHEDULE_ID_1", "SCHEDULE_ID_2"]}'`
|
|
39
|
-
|
|
40
|
-
支持 1~50 个 ID,返回日程标题、时间、地点、参与者等。参见 [API 详情](references/api-get-schedule-detail.md)。
|
|
41
|
-
|
|
42
|
-
### create_schedule — 创建日程
|
|
43
|
-
|
|
44
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule create_schedule '{"schedule": {"start_time": "YYYY-MM-DD HH:MM:SS", "end_time": "YYYY-MM-DD HH:MM:SS", "summary": "日程标题", "attendees": [{"userid": "USER_ID"}], "reminders": {"is_remind": 1, "remind_before_event_secs": 3600, "timezone": 8}}}'`
|
|
45
|
-
|
|
46
|
-
参见 [API 详情](references/api-create-schedule.md) | [reminders 字段](references/ref-reminders.md)。
|
|
47
|
-
|
|
48
|
-
### update_schedule — 修改日程
|
|
49
|
-
|
|
50
|
-
只需传入需修改的字段,未传字段保持不变。
|
|
51
|
-
|
|
52
|
-
> ⚠️ **重要**:如果要把全天日程变成普通日程并修改时间,则一定要把 `is_whole_day` 设置为 `0`,否则日程仍会保持全天状态。
|
|
53
|
-
|
|
54
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule update_schedule '{"schedule": {"schedule_id": "SCHEDULE_ID", "summary": "更新后的标题"}}'`
|
|
55
|
-
|
|
56
|
-
参见 [API 详情](references/api-update-schedule.md)。
|
|
57
|
-
|
|
58
|
-
### cancel_schedule — 取消日程
|
|
59
|
-
|
|
60
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule cancel_schedule '{"schedule_id": "SCHEDULE_ID"}'`
|
|
61
|
-
|
|
62
|
-
### add_schedule_attendees / del_schedule_attendees — 管理参与人
|
|
63
|
-
|
|
64
|
-
- 添加参与人:使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule add_schedule_attendees '{"schedule_id": "SCHEDULE_ID", "attendees": [{"userid": "USER_ID"}]}'`
|
|
65
|
-
- 移除参与人:使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule del_schedule_attendees '{"schedule_id": "SCHEDULE_ID", "attendees": [{"userid": "USER_ID"}]}'`
|
|
66
|
-
|
|
67
|
-
### check_availability — 查询闲忙
|
|
68
|
-
|
|
69
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule check_availability '{"check_user_list": ["USER_ID_1", "USER_ID_2"], "start_time": "YYYY-MM-DD HH:MM:SS", "end_time": "YYYY-MM-DD HH:MM:SS"}'`
|
|
70
|
-
|
|
71
|
-
支持 1~10 个用户,返回各用户的忙碌时段列表。参见 [API 详情](references/api-check-availability.md)。
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## 典型工作流
|
|
76
|
-
|
|
77
|
-
### 查询日程
|
|
78
|
-
|
|
79
|
-
**经典 query 示例:**
|
|
80
|
-
- "我今天有哪些日程?"
|
|
81
|
-
- "帮我看看这周三下午有没有会议"
|
|
82
|
-
- "明天的日程安排是什么?"
|
|
83
|
-
- "查一下最近有没有关于项目评审的日程"
|
|
84
|
-
- "我下周一到周五的日程都有哪些?"
|
|
85
|
-
|
|
86
|
-
**流程:**
|
|
87
|
-
1. 根据用户意图计算时间范围(如"今天"→当日 00:00:00 至 23:59:59,"这周"→本周一至周日)
|
|
88
|
-
2. 调用 `get_schedule_list_by_range` 获取日程 ID 列表
|
|
89
|
-
3. 调用 `get_schedule_detail` 批量获取详情,将 Unix 时间戳转为可读时间
|
|
90
|
-
4. 若用户提到关键词(如"项目评审"),在 `summary` 中匹配筛选;未找到则逐步扩大范围至前后 30 天上限
|
|
91
|
-
5. 展示日程列表时包含标题、时间、地点、参与者等关键信息,方便用户快速了解
|
|
92
|
-
|
|
93
|
-
### 创建日程
|
|
94
|
-
|
|
95
|
-
**经典 query 示例:**
|
|
96
|
-
- "帮我创建一个明天下午 2 点到 3 点的会议,标题叫需求评审"
|
|
97
|
-
- "安排一个周五全天的团建活动"
|
|
98
|
-
- "创建日程:后天上午 10 点和张三、李四开产品方案讨论会,地点在 3 楼会议室"
|
|
99
|
-
- "帮我建个日程,下周一 14:00-15:00,提前 15 分钟提醒"
|
|
100
|
-
- "约一个明天上午的日程,邀请王伟参加"
|
|
101
|
-
|
|
102
|
-
**流程:**
|
|
103
|
-
1. 解析用户意图,提取时间、标题、地点、参与人、提醒设置等信息
|
|
104
|
-
2. 若涉及参与人,先通过 **wecom-contact** 查询 userid;存在同名时展示候选让用户选择
|
|
105
|
-
3. 若用户未指定提醒,默认设置提前 15 分钟提醒(`remind_before_event_secs: 900`)
|
|
106
|
-
4. 若用户说"全天",设置 `is_whole_day: 1`,时间设为当天 00:00:00 至 23:59:59
|
|
107
|
-
5. 向用户确认日程信息(标题、时间、地点、参与人等)后调用 `create_schedule`
|
|
108
|
-
|
|
109
|
-
### 修改日程
|
|
110
|
-
|
|
111
|
-
**经典 query 示例:**
|
|
112
|
-
- "把明天的需求评审改到后天下午 3 点"
|
|
113
|
-
- "帮我修改下今天下午的会议标题,改成技术方案评审"
|
|
114
|
-
- "我今天 14 点的日程地点改成线上腾讯会议"
|
|
115
|
-
- "把周五的团建活动推迟一个小时"
|
|
116
|
-
- "帮我给明天的周会加个描述:讨论 Q2 规划"
|
|
117
|
-
|
|
118
|
-
**流程:**
|
|
119
|
-
1. 先通过查询工作流定位目标日程(根据用户提到的时间、标题等关键词匹配)
|
|
120
|
-
2. 若匹配到多个日程,展示候选列表让用户确认
|
|
121
|
-
3. 向用户确认要修改的字段和目标值
|
|
122
|
-
4. 调用 `update_schedule`,只传入需修改的字段
|
|
123
|
-
|
|
124
|
-
### 取消日程
|
|
125
|
-
|
|
126
|
-
**经典 query 示例:**
|
|
127
|
-
- "取消明天下午的需求评审"
|
|
128
|
-
- "帮我把周五的团建日程删掉"
|
|
129
|
-
- "我不想开今天 15 点的会了,帮我取消"
|
|
130
|
-
|
|
131
|
-
**流程:**
|
|
132
|
-
1. 先通过查询工作流定位目标日程
|
|
133
|
-
2. 向用户确认取消的日程信息(标题、时间等),避免误操作
|
|
134
|
-
3. 确认后调用 `cancel_schedule`
|
|
135
|
-
|
|
136
|
-
### 管理参与人
|
|
137
|
-
|
|
138
|
-
**经典 query 示例:**
|
|
139
|
-
- "把张三加到明天的需求评审会议里"
|
|
140
|
-
- "帮我把李四从周五的日程里移除"
|
|
141
|
-
- "明天下午的会议再邀请一下王伟和赵敏"
|
|
142
|
-
- "把我后天那个技术分享的参与人里去掉刘强"
|
|
143
|
-
|
|
144
|
-
**流程:**
|
|
145
|
-
1. 通过 **wecom-contact** 获取目标人员 userid;存在同名时展示候选让用户选择
|
|
146
|
-
2. 通过查询工作流定位目标日程
|
|
147
|
-
3. 调用 `add_schedule_attendees` 或 `del_schedule_attendees` 完成添加/移除
|
|
148
|
-
|
|
149
|
-
### 查询闲忙并安排会议
|
|
150
|
-
|
|
151
|
-
**经典 query 示例:**
|
|
152
|
-
- "帮我看看张三和李四明天下午有没有空"
|
|
153
|
-
- "查一下我和王伟这周的空闲时间,想约个会"
|
|
154
|
-
- "我想跟产品组的小明、小红开个会,看看大家什么时候有空"
|
|
155
|
-
- "找一个明天下午大家都有空的时段,安排一个 1 小时的会议"
|
|
156
|
-
|
|
157
|
-
**流程:**
|
|
158
|
-
1. 通过 **wecom-contact** 获取相关人员 userid
|
|
159
|
-
2. 调用 `check_availability` 查询指定时间范围内各用户的忙碌时段
|
|
160
|
-
3. 分析所有用户的忙碌时段,计算出共同空闲时段并推荐给用户
|
|
161
|
-
4. 用户确认时段后,调用 `create_schedule` 创建会议并自动添加参与人
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# check_availability API
|
|
2
|
-
|
|
3
|
-
查询指定用户在某时间范围内的忙碌时段。
|
|
4
|
-
|
|
5
|
-
## 参数说明
|
|
6
|
-
|
|
7
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
8
|
-
|------|------|------|------|
|
|
9
|
-
| `check_user_list` | array | ✅ | 用户 ID 列表,1~10 个 |
|
|
10
|
-
| `start_time` | string | ✅ | 查询开始时间 |
|
|
11
|
-
| `end_time` | string | ✅ | 查询结束时间 |
|
|
12
|
-
|
|
13
|
-
## 请求示例
|
|
14
|
-
|
|
15
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule check_availability '{"check_user_list": ["USER_ID_1", "USER_ID_2"], "start_time": "YYYY-MM-DD HH:MM:SS", "end_time": "YYYY-MM-DD HH:MM:SS"}'`
|
|
16
|
-
|
|
17
|
-
## 返回字段
|
|
18
|
-
|
|
19
|
-
| 字段 | 类型 | 说明 |
|
|
20
|
-
|------|------|------|
|
|
21
|
-
| `errcode` | integer | 返回码,`0` 表示成功 |
|
|
22
|
-
| `errmsg` | string | 错误信息 |
|
|
23
|
-
| `user_busy_list` | array | 用户忙碌时段列表 |
|
|
24
|
-
|
|
25
|
-
### user_busy_list[] 数组中每项字段
|
|
26
|
-
|
|
27
|
-
| 字段 | 类型 | 说明 |
|
|
28
|
-
|------|------|------|
|
|
29
|
-
| `userid` | string | 用户 ID |
|
|
30
|
-
| `busy_slots` | array | 忙碌时段列表 |
|
|
31
|
-
| `busy_slots[].start_time` | string | 忙碌时段开始时间 |
|
|
32
|
-
| `busy_slots[].end_time` | string | 忙碌时段结束时间 |
|
|
33
|
-
| `busy_slots[].schedule_id` | string | 关联的日程 ID |
|
|
34
|
-
| `busy_slots[].subject` | string | 日程标题 |
|
|
35
|
-
|
|
36
|
-
## 响应示例
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
{
|
|
40
|
-
"errcode": 0,
|
|
41
|
-
"errmsg": "ok",
|
|
42
|
-
"user_busy_list": [
|
|
43
|
-
{
|
|
44
|
-
"userid": "USER_ID",
|
|
45
|
-
"busy_slots": [
|
|
46
|
-
{
|
|
47
|
-
"start_time": "YYYY-MM-DD HH:MM:SS",
|
|
48
|
-
"end_time": "YYYY-MM-DD HH:MM:SS",
|
|
49
|
-
"schedule_id": "SCHEDULE_ID",
|
|
50
|
-
"subject": "日程标题"
|
|
51
|
-
}
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
```
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# create_schedule API
|
|
2
|
-
|
|
3
|
-
创建新日程,支持设置标题、时间、地点、参与者、提醒和重复规则。
|
|
4
|
-
|
|
5
|
-
## 参数说明(`schedule` 对象内)
|
|
6
|
-
|
|
7
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
8
|
-
|------|------|------|------|
|
|
9
|
-
| `start_time` | string | ✅ | 开始时间 |
|
|
10
|
-
| `end_time` | string | ✅ | 结束时间 |
|
|
11
|
-
| `summary` | string | ❌ | 日程标题,最长 128 字 |
|
|
12
|
-
| `description` | string | ❌ | 日程描述,最长 1000 字 |
|
|
13
|
-
| `location` | string | ❌ | 地点,最长 128 字 |
|
|
14
|
-
| `is_whole_day` | integer | ❌ | 是否全天:`0`-否(默认),`1`-是 |
|
|
15
|
-
| `attendees` | array | ❌ | 参与者列表,每项含 `userid` |
|
|
16
|
-
| `reminders` | object | ❌ | 提醒与重复设置(见 [reminders 字段参考](ref-reminders.md)) |
|
|
17
|
-
|
|
18
|
-
## 请求示例
|
|
19
|
-
|
|
20
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule create_schedule '{"schedule": {"start_time": "YYYY-MM-DD HH:MM:SS", "end_time": "YYYY-MM-DD HH:MM:SS", "summary": "日程标题", "attendees": [{"userid": "USER_ID"}], "reminders": {"is_remind": 1, "remind_before_event_secs": 3600, "timezone": 8}, "location": "会议地点"}}'`
|
|
21
|
-
|
|
22
|
-
## 返回字段
|
|
23
|
-
|
|
24
|
-
| 字段 | 类型 | 说明 |
|
|
25
|
-
|------|------|------|
|
|
26
|
-
| `errcode` | integer | 返回码,`0` 表示成功 |
|
|
27
|
-
| `errmsg` | string | 错误信息 |
|
|
28
|
-
| `schedule_id` | string | 创建成功的日程 ID |
|
|
29
|
-
|
|
30
|
-
## 响应示例
|
|
31
|
-
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"errcode": 0,
|
|
35
|
-
"errmsg": "ok",
|
|
36
|
-
"schedule_id": "SCHEDULE_ID"
|
|
37
|
-
}
|
|
38
|
-
```
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# get_schedule_detail API
|
|
2
|
-
|
|
3
|
-
通过日程 ID 批量获取日程详细信息。
|
|
4
|
-
|
|
5
|
-
## 参数说明
|
|
6
|
-
|
|
7
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
8
|
-
|------|------|------|------|
|
|
9
|
-
| `schedule_id_list` | array | ✅ | 日程 ID 列表,1~50 个 |
|
|
10
|
-
|
|
11
|
-
## 请求示例
|
|
12
|
-
|
|
13
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule get_schedule_detail '{"schedule_id_list": ["SCHEDULE_ID_1", "SCHEDULE_ID_2"]}'`
|
|
14
|
-
|
|
15
|
-
## 返回字段
|
|
16
|
-
|
|
17
|
-
| 字段 | 类型 | 说明 |
|
|
18
|
-
|------|------|------|
|
|
19
|
-
| `errcode` | integer | 返回码,`0` 表示成功 |
|
|
20
|
-
| `errmsg` | string | 错误信息 |
|
|
21
|
-
| `schedule` | array | 日程详情列表 |
|
|
22
|
-
|
|
23
|
-
### schedule[] 字段
|
|
24
|
-
|
|
25
|
-
| 字段 | 类型 | 说明 |
|
|
26
|
-
|------|------|------|
|
|
27
|
-
| `schedule_id` | string | 日程唯一 ID |
|
|
28
|
-
| `summary` | string | 日程标题 |
|
|
29
|
-
| `description` | string | 日程描述 |
|
|
30
|
-
| `start_time` | integer | 开始时间(Unix 时间戳,秒) |
|
|
31
|
-
| `end_time` | integer | 结束时间(Unix 时间戳,秒) |
|
|
32
|
-
| `location` | string | 地点 |
|
|
33
|
-
| `status` | integer | `0`-正常,`1`-已取消 |
|
|
34
|
-
| `is_whole_day` | integer | `0`-否,`1`-是 |
|
|
35
|
-
| `admins` | array | 管理员 userid 列表 |
|
|
36
|
-
| `attendees` | array | 参与者列表 |
|
|
37
|
-
| `attendees[].userid` | string | 参与者 userid |
|
|
38
|
-
| `attendees[].response_status` | integer | 响应状态(见下表) |
|
|
39
|
-
| `reminders` | object | 提醒设置(见 [reminders 字段参考](ref-reminders.md)) |
|
|
40
|
-
|
|
41
|
-
### response_status 枚举
|
|
42
|
-
|
|
43
|
-
| 值 | 含义 |
|
|
44
|
-
|----|------|
|
|
45
|
-
| `1` | 待定 |
|
|
46
|
-
| `2` | 接受 |
|
|
47
|
-
| `3` | 接受单次 |
|
|
48
|
-
| `4` | 拒绝 |
|
|
49
|
-
| `5` | 接受本次及未来 |
|
|
50
|
-
| `6` | 待定单次 |
|
|
51
|
-
| `7` | 待定本次及未来 |
|
|
52
|
-
| `8` | 拒绝单次 |
|
|
53
|
-
| `9` | 拒绝本次及未来 |
|
|
54
|
-
|
|
55
|
-
## 响应示例
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{
|
|
59
|
-
"errcode": 0,
|
|
60
|
-
"errmsg": "ok",
|
|
61
|
-
"schedule": [
|
|
62
|
-
{
|
|
63
|
-
"schedule_id": "SCHEDULE_ID",
|
|
64
|
-
"summary": "日程标题",
|
|
65
|
-
"start_time": 1700000000,
|
|
66
|
-
"end_time": 1700003600,
|
|
67
|
-
"location": "会议室",
|
|
68
|
-
"status": 0,
|
|
69
|
-
"is_whole_day": 0,
|
|
70
|
-
"attendees": [
|
|
71
|
-
{"userid": "USER_ID","tmp_external_userid": "tmp_external_userid_example","response_status": 2}
|
|
72
|
-
],
|
|
73
|
-
"reminders": {
|
|
74
|
-
"is_remind": 1,
|
|
75
|
-
"remind_before_event_secs": 3600,
|
|
76
|
-
"timezone": 8
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
```
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# update_schedule API
|
|
2
|
-
|
|
3
|
-
修改已有日程,只需传入需要修改的字段,未传字段保持不变。
|
|
4
|
-
|
|
5
|
-
## 参数说明(`schedule` 对象内)
|
|
6
|
-
|
|
7
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
8
|
-
|------|------|------|------|
|
|
9
|
-
| `schedule_id` | string | ✅ | 目标日程 ID |
|
|
10
|
-
| `start_time` | string | ❌ | 开始时间 |
|
|
11
|
-
| `end_time` | string | ❌ | 结束时间 |
|
|
12
|
-
| `summary` | string | ❌ | 日程标题,最长 128 字 |
|
|
13
|
-
| `description` | string | ❌ | 日程描述,最长 1000 字 |
|
|
14
|
-
| `location` | string | ❌ | 地点,最长 128 字 |
|
|
15
|
-
| `is_whole_day` | integer | ❌ | 是否全天:`0`-否,`1`-是 |
|
|
16
|
-
| `attendees` | array | ❌ | 参与者列表,每项含 `userid` |
|
|
17
|
-
| `reminders` | object | ❌ | 提醒与重复设置(见 [reminders 字段参考](ref-reminders.md)) |
|
|
18
|
-
|
|
19
|
-
> 仅传需修改的字段,其余保持不变。
|
|
20
|
-
>
|
|
21
|
-
> ⚠️ **重要**:如果要把全天日程变成普通日程并修改时间,则一定要把 `is_whole_day` 设置为 `0`,否则日程仍会保持全天状态。
|
|
22
|
-
|
|
23
|
-
## 请求示例
|
|
24
|
-
|
|
25
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call schedule update_schedule '{"schedule": {"schedule_id": "SCHEDULE_ID", "summary": "更新后的标题", "start_time": "YYYY-MM-DD HH:MM:SS", "end_time": "YYYY-MM-DD HH:MM:SS"}}'`
|
|
26
|
-
|
|
27
|
-
## 返回字段
|
|
28
|
-
|
|
29
|
-
| 字段 | 类型 | 说明 |
|
|
30
|
-
|------|------|------|
|
|
31
|
-
| `errcode` | integer | 返回码,`0` 表示成功 |
|
|
32
|
-
| `errmsg` | string | 错误信息 |
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# reminders 字段参考
|
|
2
|
-
|
|
3
|
-
提醒设置对象,用于 `create_schedule` 和 `update_schedule` 接口。
|
|
4
|
-
|
|
5
|
-
## 字段说明
|
|
6
|
-
|
|
7
|
-
| 字段 | 类型 | 说明 |
|
|
8
|
-
|------|------|------|
|
|
9
|
-
| `is_remind` | integer | 是否提醒:`0`-否,`1`-是 |
|
|
10
|
-
| `remind_before_event_secs` | integer | 提前提醒秒数,可选值:`0`/`300`/`900`/`3600`/`86400` |
|
|
11
|
-
| `remind_time_diffs` | array | 提醒时间差(秒),可选值:`-604800`/`-172800`/`-86400`/`-3600`/`-900`/`-300`/`0`/`32400` |
|
|
12
|
-
| `timezone` | integer | 时区,`-12` ~ `12`,中国为 `8` |
|
|
13
|
-
|
|
14
|
-
## 使用示例
|
|
15
|
-
|
|
16
|
-
### 基本提醒(提前 1 小时)
|
|
17
|
-
|
|
18
|
-
```json
|
|
19
|
-
{
|
|
20
|
-
"is_remind": 1,
|
|
21
|
-
"remind_before_event_secs": 3600,
|
|
22
|
-
"timezone": 8
|
|
23
|
-
}
|
|
24
|
-
```
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wecom-sheet
|
|
3
|
-
description: 企业微信在线表格(sheet)管理技能。提供在线表格的新建、内容读取、内容修改、追加行数据,以及子工作表的增删管理。适用场景:(1) 新建空白在线表格 (2) 读取表格完整内容(Markdown)(3) 读取基础信息与子表列表 (4) 读取子表数据 (5) 修改指定区域内容 (6) 末尾追加一行数据 (7) 添加/删除子工作表。当用户提到「企业微信表格」「企业微信在线表格」「企微 excel 表格」,或链接形如 `https://doc.weixin.qq.com/sheet/xxx` 时触发该技能。注意:智能表格(`/smartsheet/*`)请用 `wecom-smartsheet`;普通文档(`/doc/*`)请用 `wecom-doc`;智能文档/智能主页(`/smartpage/*`)请用 `wecom-smartpage`。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 企业微信在线表格管理
|
|
7
|
-
|
|
8
|
-
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
9
|
-
|
|
10
|
-
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
11
|
-
|
|
12
|
-
资源型技能,负责**在线表格**(`/sheet/*`)的新建、内容读写以及子工作表管理。
|
|
13
|
-
|
|
14
|
-
## 调用方式
|
|
15
|
-
|
|
16
|
-
通过 `wecom_mcp` tool 调用,品类名为 `doc`:
|
|
17
|
-
|
|
18
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call doc <tool_name> '<json_params>'` 调用指定技能
|
|
19
|
-
|
|
20
|
-
## 返回格式说明
|
|
21
|
-
|
|
22
|
-
所有接口返回 JSON 对象,包含以下公共字段:
|
|
23
|
-
|
|
24
|
-
| 字段 | 类型 | 说明 |
|
|
25
|
-
|------|------|------|
|
|
26
|
-
| `errcode` | integer | 返回码,`0` 表示成功,非 `0` 表示失败 |
|
|
27
|
-
| `errmsg` | string | 错误信息,成功时为 `"ok"` |
|
|
28
|
-
|
|
29
|
-
当 `errcode` 不为 `0` 时,说明接口调用失败,可重试 1 次;若仍失败,将 `errcode` 和 `errmsg` 展示给用户。
|
|
30
|
-
|
|
31
|
-
### 特殊错误码
|
|
32
|
-
|
|
33
|
-
| errcode | errmsg | 含义 | 处理方式 |
|
|
34
|
-
|---------|--------|------|----------|
|
|
35
|
-
| `851002` | `incompatible doc type` | 文档品类与所调用的接口不匹配 | 确认目标 URL 为 `/sheet/*`;若不是,请跳转到对应品类的 skill |
|
|
36
|
-
|
|
37
|
-
## 接口路由表
|
|
38
|
-
|
|
39
|
-
> **硬规则**:第二列是 `references/xxx.md` 链接的,命中这一行后**先 `read` 对应 references 文件,再构造命令**。写入/读取子表数据前,先用 `sheet_get_info` 拿到目标子表的 `sheet_id`。
|
|
40
|
-
|
|
41
|
-
| 用户意图 | 参考位置 |
|
|
42
|
-
|---|---|
|
|
43
|
-
| 读取在线表格完整内容(Markdown 概览) | 见下方「读取完整内容」 |
|
|
44
|
-
| 读取在线表格基础信息与子表列表 | 见下方「读取基础信息」 |
|
|
45
|
-
| 从零新建在线表格(空白) | 见下方「新建在线表格」 |
|
|
46
|
-
| 修改在线表格指定区域内容 | [references/sheet-update-range-data.md](references/sheet-update-range-data.md) |
|
|
47
|
-
| 在线表格末尾追加一行数据 | [references/sheet-append-data.md](references/sheet-append-data.md) |
|
|
48
|
-
| 添加在线表格子工作表 | [references/sheet-add-sub.md](references/sheet-add-sub.md) |
|
|
49
|
-
| 删除在线表格子工作表 | [references/sheet-delete-sub.md](references/sheet-delete-sub.md) |
|
|
50
|
-
|
|
51
|
-
## 接口详述
|
|
52
|
-
|
|
53
|
-
### create_doc — 新建在线表格
|
|
54
|
-
|
|
55
|
-
从零新建一篇企微**在线表格**:空白。创建成功后返回 `docid` 和 `url`。
|
|
56
|
-
|
|
57
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call doc create_doc '{"doc_type": 4, "doc_name": "项目数据表"}'`
|
|
58
|
-
|
|
59
|
-
**参数**
|
|
60
|
-
|
|
61
|
-
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
62
|
-
|---|---|---|---|---|
|
|
63
|
-
| `doc_type` | int | 是 | — | 固定传 `4`(在线表格) |
|
|
64
|
-
| `doc_name` | string | 是 | — | 表格标题 |
|
|
65
|
-
|
|
66
|
-
**注意事项**
|
|
67
|
-
|
|
68
|
-
- 本接口仅创建**空白**在线表格,不支持携带初始内容;如需写入数据,请在创建后先用 `sheet_get_info` 拿到子表 `sheet_id`,再通过 `sheet_update_range_data` / `sheet_append_data` 写入。
|
|
69
|
-
|
|
70
|
-
### get_doc_content — 读取完整内容
|
|
71
|
-
|
|
72
|
-
获取**在线表格**的完整内容数据,统一以 Markdown 格式返回。采用**异步轮询机制**:首次调用无需传 `task_id`,接口返回 `task_id`;若 `task_done` 为 `false`,需携带该 `task_id` 再次调用,直到 `task_done` 为 `true` 时返回完整内容。适合快速概览或读取整篇表格内容。
|
|
73
|
-
|
|
74
|
-
- 首次调用(不传 task_id):使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"docid": "DOCID", "type": 2}'`
|
|
75
|
-
- 轮询(携带上次返回的 task_id):使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"docid": "DOCID", "type": 2, "task_id": "xxx"}'`
|
|
76
|
-
- 通过 URL:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"url": "https://doc.weixin.qq.com/sheet/xxx", "type": 2}'`
|
|
77
|
-
|
|
78
|
-
**参数**
|
|
79
|
-
|
|
80
|
-
| 字段 | 类型 | 必填 | 默认值 | 语义 |
|
|
81
|
-
|---|---|---|---|---|
|
|
82
|
-
| `docid` | string | 与 `url` 二选一 | — | 在线表格的 docid |
|
|
83
|
-
| `url` | string | 与 `docid` 二选一 | — | 在线表格的访问链接 |
|
|
84
|
-
| `type` | int | 是 | — | 内容返回格式,固定传 `2`(Markdown) |
|
|
85
|
-
| `task_id` | string | 否 | — | 任务 ID,首次不传,轮询时填上次返回的 `task_id` |
|
|
86
|
-
|
|
87
|
-
**返回**
|
|
88
|
-
|
|
89
|
-
| 字段 | 类型 | 说明 |
|
|
90
|
-
|---|---|---|
|
|
91
|
-
| `content` | string | `task_done` 为 `true` 时返回的完整 Markdown 内容 |
|
|
92
|
-
| `task_id` | string | 任务 ID,未完成时用于下次轮询 |
|
|
93
|
-
| `task_done` | bool | 任务是否完成,`false` 时需携带 `task_id` 继续轮询 |
|
|
94
|
-
|
|
95
|
-
**使用规则**
|
|
96
|
-
|
|
97
|
-
- 首次调用不传 `task_id`;若 `task_done` 为 `false`,记录 `task_id` 后携带其再次调用,直到 `task_done` 为 `true` 取 `content`。
|
|
98
|
-
|
|
99
|
-
### sheet_get_info — 读取基础信息
|
|
100
|
-
|
|
101
|
-
读取**在线表格**的基础信息,包括工作表列表、文档名称与访问链接。所有后续需要 `sheet_id` 的接口(`sheet_update_range_data` / `sheet_append_data` / `sheet_delete_sub` 等)的 `sheet_id` 都从本接口返回的 `sheets[]` 中取。
|
|
102
|
-
|
|
103
|
-
- 通过 docid:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc sheet_get_info '{"docid": "DOCID"}'`
|
|
104
|
-
- 通过 URL:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc sheet_get_info '{"url": "https://doc.weixin.qq.com/sheet/xxx"}'`
|
|
105
|
-
|
|
106
|
-
**参数**
|
|
107
|
-
|
|
108
|
-
| 字段 | 类型 | 必填 | 默认值 | 语义 |
|
|
109
|
-
|---|---|---|---|---|
|
|
110
|
-
| `docid` | string | 与 `url` 二选一 | — | 在线表格的 docid |
|
|
111
|
-
| `url` | string | 与 `docid` 二选一 | — | 在线表格的访问链接 |
|
|
112
|
-
|
|
113
|
-
**返回**
|
|
114
|
-
|
|
115
|
-
| 字段 | 类型 | 说明 |
|
|
116
|
-
|---|---|---|
|
|
117
|
-
| `sheets` | array | 工作表列表;每项含 `sheet_id` / `title` / `row_count` / `column_count` / `data_range` 等基础信息 |
|
|
118
|
-
| `url` | string | 文档访问链接 |
|
|
119
|
-
| `name` | string | 文档名称 |
|
|
120
|
-
|
|
121
|
-
**使用规则**
|
|
122
|
-
|
|
123
|
-
- `docid` 与 `url` 二选一,至少传其一。
|
|
124
|
-
- **读 → 写 链路**:当需要往具体子表写内容(`sheet_update_range_data` / `sheet_append_data`)时,应先用 `get_doc_content` 读取并识别出各子表的**标题**与**具体数据**,再调用本接口拿到 `sheets[]` 中每个子表的 `sheet_id` 与行列数(`row_count` / `column_count`);通过**子表标题与 `title` 匹配**确定目标 `sheet_id`,并结合行列数核对写入区域范围,从而打通「读 → 写」的完整链路。
|
|
125
|
-
|
|
126
|
-
## 跨技能依赖
|
|
127
|
-
|
|
128
|
-
| 依赖技能 | 典型协作场景 | 数据流向 |
|
|
129
|
-
|---|---|---|
|
|
130
|
-
| `wecom-contact` | 表格里需要写入人员信息时按姓名查 userid | `get_userlist` 查到 userid → 本 skill 写入 |
|
|
131
|
-
| `wecom-msg` | 用户要求把在线表格链接发给某人/某群 | 本 skill 新建后返回 `url` → `wecom-msg` 发送链接 |
|