@sunnoy/wecom 2.1.0 → 2.2.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 +6 -2
- package/index.js +2 -0
- package/openclaw.plugin.json +3 -0
- package/package.json +5 -3
- package/skills/wecom-contact-lookup/SKILL.md +167 -0
- package/skills/wecom-doc-manager/SKILL.md +106 -0
- package/skills/wecom-doc-manager/references/api-create-doc.md +56 -0
- package/skills/wecom-doc-manager/references/api-edit-doc-content.md +68 -0
- package/skills/wecom-doc-manager/references/api-export-document.md +88 -0
- package/skills/wecom-edit-todo/SKILL.md +254 -0
- package/skills/wecom-get-todo-detail/SKILL.md +148 -0
- package/skills/wecom-get-todo-list/SKILL.md +132 -0
- package/skills/wecom-meeting-create/SKILL.md +163 -0
- package/skills/wecom-meeting-create/references/example-full.md +30 -0
- package/skills/wecom-meeting-create/references/example-reminder.md +46 -0
- package/skills/wecom-meeting-create/references/example-security.md +22 -0
- package/skills/wecom-meeting-manage/SKILL.md +141 -0
- package/skills/wecom-meeting-query/SKILL.md +335 -0
- package/skills/wecom-preflight/SKILL.md +103 -0
- package/skills/wecom-schedule/SKILL.md +164 -0
- package/skills/wecom-schedule/references/api-check-availability.md +56 -0
- package/skills/wecom-schedule/references/api-create-schedule.md +38 -0
- package/skills/wecom-schedule/references/api-get-schedule-detail.md +81 -0
- package/skills/wecom-schedule/references/api-update-schedule.md +30 -0
- package/skills/wecom-schedule/references/ref-reminders.md +24 -0
- package/skills/wecom-smartsheet-data/SKILL.md +76 -0
- package/skills/wecom-smartsheet-data/references/api-get-records.md +61 -0
- package/skills/wecom-smartsheet-data/references/cell-value-formats.md +120 -0
- package/skills/wecom-smartsheet-schema/SKILL.md +96 -0
- package/skills/wecom-smartsheet-schema/references/field-types.md +43 -0
- package/wecom/accounts.js +1 -0
- package/wecom/callback-inbound.js +133 -33
- package/wecom/channel-plugin.js +107 -125
- package/wecom/constants.js +83 -3
- package/wecom/mcp-config.js +146 -0
- package/wecom/mcp-tool.js +660 -0
- package/wecom/media-uploader.js +208 -0
- package/wecom/openclaw-compat.js +302 -0
- package/wecom/reqid-store.js +146 -0
- package/wecom/target.js +3 -2
- package/wecom/workspace-template.js +107 -21
- package/wecom/ws-monitor.js +778 -328
- package/image-processor.js +0 -175
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wecom-meeting-create
|
|
3
|
+
description: 企业微信会议创建技能, 支持创建预约会议. 当用户需要"创建会议", "预约会议", "约会议", "安排会议"时触发.
|
|
4
|
+
---
|
|
5
|
+
# 企业微信会议创建技能
|
|
6
|
+
|
|
7
|
+
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
8
|
+
|
|
9
|
+
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
10
|
+
|
|
11
|
+
> ⚠️ **路径与停止规则**:
|
|
12
|
+
> - 如果要读取本 skill,必须直接使用 `<available_skills>` 或 `skillsSnapshot` 中给出的精确绝对路径。
|
|
13
|
+
> - 不要猜测或改写为 `/data/openclaw/skills/wecom-*`、`/workspace/.openclaw/skills/...`、`/root/.openclaw/workspace-*/.openclaw/skills/...`,也不要用 `exec` + `ls/find` 探路。
|
|
14
|
+
> - 若 `wecom_mcp` 返回 `errcode: 846609` 或 `unsupported mcp biz type`,表示当前 bot 未开通该 category,不是路径、白名单或 sandbox 问题;立即停止继续 `read`、`list`、`find`、memory fallback 探索,直接告知用户对应 category 未开通。
|
|
15
|
+
|
|
16
|
+
## 概述
|
|
17
|
+
|
|
18
|
+
wecom-meeting-create 提供企业微信预约会议的创建能力, 支持设置会议参数, 邀请参与人等.
|
|
19
|
+
|
|
20
|
+
## 命令调用方式
|
|
21
|
+
|
|
22
|
+
查看可用命令列表:使用 `wecom_mcp` tool 调用 `wecom_mcp list meeting`
|
|
23
|
+
|
|
24
|
+
执行指定命令:使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting <tool_name> '<json_params>'`
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 命令详细说明
|
|
29
|
+
|
|
30
|
+
### 创建预约会议 (create_meeting)
|
|
31
|
+
|
|
32
|
+
创建一个预约会议, 支持设置会议参数配置等.
|
|
33
|
+
|
|
34
|
+
#### 执行命令
|
|
35
|
+
|
|
36
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting create_meeting '{"title": "<会议标题>", "meeting_start_datetime": "<会议开始时间>", "meeting_duration": <会议持续时长(秒)>}'`
|
|
37
|
+
|
|
38
|
+
#### 入参说明
|
|
39
|
+
|
|
40
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
41
|
+
| -------------------------- | ------- | ---- | ------------------------------------------------- |
|
|
42
|
+
| `title` | string | 是 | 会议标题 |
|
|
43
|
+
| `meeting_start_datetime` | string | 是 | 会议开始时间, 格式:`YYYY-MM-DD HH:mm` |
|
|
44
|
+
| `meeting_duration` | integer | 是 | 会议持续时长 (秒), 例如 3600 = 1 小时 |
|
|
45
|
+
| `description` | string | 否 | 会议描述 |
|
|
46
|
+
| `location` | string | 否 | 会议地点 |
|
|
47
|
+
| `invitees` | object | 是 | 被邀请人, 格式:`{"userid": ["lisi", "wangwu"]}` |
|
|
48
|
+
| `settings` | object | 否 | 会议设置 (详见下方) |
|
|
49
|
+
|
|
50
|
+
> 被邀请人 userid 通过 `wecom-contact-lookup` 技能获取
|
|
51
|
+
|
|
52
|
+
**settings 字段:**
|
|
53
|
+
|
|
54
|
+
| 参数 | 类型 | 说明 |
|
|
55
|
+
| --------------------------- | ------- | --------------------------------------------- |
|
|
56
|
+
| `password` | string | 会议密码 |
|
|
57
|
+
| `enable_waiting_room` | boolean | 是否启用等候室 |
|
|
58
|
+
| `allow_enter_before_host` | boolean | 是否允许成员在主持人进入前加入 |
|
|
59
|
+
| `enable_enter_mute` | integer | 入会时静音设置 (枚举: 0: 关闭, 1: 开启) |
|
|
60
|
+
| `allow_external_user` | boolean | 是否允许外部用户入会 |
|
|
61
|
+
| `enable_screen_watermark` | boolean | 是否开启屏幕水印 |
|
|
62
|
+
| `remind_scope` | integer | 提醒范围 (1: 不提醒, 2: 仅提醒主持人, 3: 提醒所有成员, 4: 指定部分人响铃, 默认仅提醒主持人) |
|
|
63
|
+
| `ring_users` | object | 响铃用户, 格式:`{"userid": ["lisi"]}` |
|
|
64
|
+
|
|
65
|
+
> 响铃用户 userid 通过 `wecom-contact-lookup` 技能获取
|
|
66
|
+
|
|
67
|
+
#### 返回参数
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"errcode": 0,
|
|
72
|
+
"errmsg": "ok",
|
|
73
|
+
"meetingid": "会议ID字符串",
|
|
74
|
+
"meeting_code": "会议号码字符串",
|
|
75
|
+
"meeting_link": "会议链接URL",
|
|
76
|
+
"excess_users": ["无效会议账号的userid"]
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
| 字段 | 类型 | 说明 |
|
|
81
|
+
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
|
|
82
|
+
| `meetingid` | string | 会议 ID |
|
|
83
|
+
| `meeting_code` | string | 会议号码, 向用户展示时需在回复**开头**单独一行纯文字展示, 格式 `#会议号: xxx-xxx-xxx` (每3位用 `-` 分隔) |
|
|
84
|
+
| `meeting_link` | string | 会议链接 |
|
|
85
|
+
| `excess_users` | array | 参会人中包含无效会议账号的 userid, 仅在购买会议专业版企业由于部分参会人无有效会议账号时返回 |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 典型工作流
|
|
90
|
+
|
|
91
|
+
### 工作流 1: 最简创建 (无邀请人)
|
|
92
|
+
|
|
93
|
+
**用户意图**: "帮我约一个明天下午3点的会议, 主题是周例会, 时长1小时"
|
|
94
|
+
|
|
95
|
+
**步骤:**
|
|
96
|
+
|
|
97
|
+
1. **解析用户意图**: 时间 + 主题已有, 邀请人未提及则默认留空, 直接创建.
|
|
98
|
+
2. **调用创建命令**:
|
|
99
|
+
|
|
100
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting create_meeting '{"title": "周例会", "meeting_start_datetime": "2026-03-18 15:00", "meeting_duration": 3600}'`
|
|
101
|
+
|
|
102
|
+
3. **展示结果**:
|
|
103
|
+
|
|
104
|
+
#会议号: <会议号>
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
✅ 会议创建成功!
|
|
108
|
+
|
|
109
|
+
📅 <会议标题>
|
|
110
|
+
🕐 时间: <开始时间>, 时长 <时长>
|
|
111
|
+
🔗 会议链接: <会议链接>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 工作流 2: 带邀请人 + 地点 + 描述
|
|
115
|
+
|
|
116
|
+
**用户意图**: "帮我约一个明天下午3点的会议, 主题是技术方案评审, 邀请张三和李四, 地点在3楼会议室, 时长1小时"
|
|
117
|
+
|
|
118
|
+
**步骤:**
|
|
119
|
+
|
|
120
|
+
1. **解析用户意图**: 有邀请人, 需先查询通讯录获取 userid.
|
|
121
|
+
2. **通讯录查询**: 调用 `wecom-contact-lookup` 技能获取通讯录成员, 按姓名筛选出参与者的 userid.
|
|
122
|
+
|
|
123
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
|
|
124
|
+
|
|
125
|
+
在返回的 `userlist` 中筛选 `name` 包含 "张三" 和 "李四" 的成员, 获取其 `userid`.
|
|
126
|
+
|
|
127
|
+
3. **信息已充分, 直接调用创建命令** (禁止暴露内部 ID):
|
|
128
|
+
|
|
129
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting create_meeting '{"title": "技术方案评审", "meeting_start_datetime": "2026-03-18 15:00", "meeting_duration": 3600, "location": "3楼会议室", "invitees": {"userid": ["zhangsan", "lisi"]}}'`
|
|
130
|
+
|
|
131
|
+
4. **展示结果**:
|
|
132
|
+
|
|
133
|
+
#会议号: <会议号>
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
✅ 会议创建成功!
|
|
137
|
+
|
|
138
|
+
📅 <会议标题>
|
|
139
|
+
🕐 时间: <开始时间>, 时长 <时长>
|
|
140
|
+
👥 参与人: <参与者姓名列表>
|
|
141
|
+
🔗 会议链接: <会议链接>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 复杂场景样例
|
|
147
|
+
|
|
148
|
+
按场景按需加载, 避免一次性引入过多无关示例:
|
|
149
|
+
|
|
150
|
+
| 文件 | 适用场景 |
|
|
151
|
+
| ---- | -------- |
|
|
152
|
+
| [references/example-security.md](references/example-security.md) | 会议密码, 等候室, 外部用户限制 |
|
|
153
|
+
| [references/example-reminder.md](references/example-reminder.md) | 响铃提醒, 指定部分人响铃 |
|
|
154
|
+
| [references/example-full.md](references/example-full.md) | 全参数综合场景 (含静音, 屏幕水印, 等候室等设置) |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 注意事项
|
|
159
|
+
|
|
160
|
+
- **信息追问**: 缺少时间或主题时, 简洁追问用户; 未提及邀请人则默认留空
|
|
161
|
+
- **通讯录查询**: 涉及参与人时, 需先通过 `wecom-contact-lookup` 技能的 `get_userlist` 接口获取全量通讯录成员, 再按姓名/别名本地筛选匹配出对应的 `userid`. 该接口无入参, 返回当前用户可见范围内的成员列表 (含 `userid`, `name`, `alias`)
|
|
162
|
+
- **直接创建**: 时间 + 主题已知即可直接创建, 邀请人有则带上, 无则留空; 无论信息是一次性提供还是上下文可推断, 非必要则均不请求确认, 直接创建即可
|
|
163
|
+
- **时间格式**: 统一使用 `YYYY-MM-DD HH:mm` 格式
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 创建会议 - 全参数综合场景示例
|
|
2
|
+
|
|
3
|
+
## 场景 1: 高规格会议 (全参数)
|
|
4
|
+
|
|
5
|
+
**用户意图**: "帮我创建一个高规格的季度战略会议: 下周一上午9点, 时长4小时, 邀请全团队, 设置密码, 开启等候室, 开启屏幕水印, 全员静音"
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"title": "Q2季度战略规划会",
|
|
10
|
+
"meeting_start_datetime": "2026-03-23 09:00",
|
|
11
|
+
"meeting_duration": 14400,
|
|
12
|
+
"description": "Q2季度战略规划, 请各部门负责人提前准备汇报材料",
|
|
13
|
+
"location": "总部大会议室",
|
|
14
|
+
"invitees": {
|
|
15
|
+
"userid": ["zhangsan", "lisi", "wangwu", "zhaoliu", "sunqi"]
|
|
16
|
+
},
|
|
17
|
+
"settings": {
|
|
18
|
+
"password": "2026",
|
|
19
|
+
"enable_waiting_room": true,
|
|
20
|
+
"allow_enter_before_host": false,
|
|
21
|
+
"enable_enter_mute": 1,
|
|
22
|
+
"allow_external_user": false,
|
|
23
|
+
"enable_screen_watermark": true,
|
|
24
|
+
"remind_scope": 3,
|
|
25
|
+
"ring_users": {
|
|
26
|
+
"userid": ["zhangsan", "lisi", "wangwu", "zhaoliu", "sunqi"]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 创建会议 - 响铃提醒场景示例
|
|
2
|
+
|
|
3
|
+
## 场景 2: 仅提醒主持人 + 提前提醒时间
|
|
4
|
+
|
|
5
|
+
**用户意图**: "帮我创建一个会议, 只提醒主持人, 并在会议开始前15分钟和1小时各提醒一次"
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"title": "项目启动会",
|
|
10
|
+
"meeting_start_datetime": "2026-03-21 10:00",
|
|
11
|
+
"meeting_duration": 3600,
|
|
12
|
+
"invitees": {
|
|
13
|
+
"userid": ["zhangsan", "lisi"]
|
|
14
|
+
},
|
|
15
|
+
"settings": {
|
|
16
|
+
"remind_scope": 2,
|
|
17
|
+
"ring_users": {
|
|
18
|
+
"userid": ["zhangsan"]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 场景 3: 指定部分人响铃 (remind_scope=4)
|
|
27
|
+
|
|
28
|
+
**用户意图**: "帮我创建一个会议, 只响铃提醒张三和李四, 其他人不提醒"
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"title": "紧急故障复盘",
|
|
33
|
+
"meeting_start_datetime": "2026-03-18 20:00",
|
|
34
|
+
"meeting_duration": 3600,
|
|
35
|
+
"invitees": {
|
|
36
|
+
"userid": ["zhangsan", "lisi", "wangwu", "zhaoliu"]
|
|
37
|
+
},
|
|
38
|
+
"settings": {
|
|
39
|
+
"remind_scope": 4,
|
|
40
|
+
"ring_users": {
|
|
41
|
+
"userid": ["zhangsan", "lisi"]
|
|
42
|
+
},
|
|
43
|
+
"allow_enter_before_host": true
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# 创建会议 - 安全设置场景示例
|
|
2
|
+
|
|
3
|
+
## 场景 4: 会议密码 + 等候室 + 主持人设置
|
|
4
|
+
|
|
5
|
+
**用户意图**: "帮我创建一个重要的客户汇报会议, 需要设置密码1234, 开启等候室, 不允许外部人员入会"
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"title": "客户汇报会议",
|
|
10
|
+
"meeting_start_datetime": "2026-03-19 14:00",
|
|
11
|
+
"meeting_duration": 5400,
|
|
12
|
+
"invitees": {
|
|
13
|
+
"userid": ["zhangsan", "lisi", "wangwu"]
|
|
14
|
+
},
|
|
15
|
+
"settings": {
|
|
16
|
+
"password": "1234",
|
|
17
|
+
"enable_waiting_room": true,
|
|
18
|
+
"allow_enter_before_host": false,
|
|
19
|
+
"allow_external_user": false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wecom-meeting-manage
|
|
3
|
+
description: 企业微信会议管理技能, 支持取消会议和更新会议受邀成员. 当用户需要"取消会议", "删除会议", "修改会议成员", "添加会议参与人", "移除会议成员"时触发.
|
|
4
|
+
---
|
|
5
|
+
# 企业微信会议管理技能
|
|
6
|
+
|
|
7
|
+
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
8
|
+
|
|
9
|
+
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
10
|
+
|
|
11
|
+
> ⚠️ **路径与停止规则**:
|
|
12
|
+
> - 如果要读取本 skill,必须直接使用 `<available_skills>` 或 `skillsSnapshot` 中给出的精确绝对路径。
|
|
13
|
+
> - 不要猜测或改写为 `/data/openclaw/skills/wecom-*`、`/workspace/.openclaw/skills/...`、`/root/.openclaw/workspace-*/.openclaw/skills/...`,也不要用 `exec` + `ls/find` 探路。
|
|
14
|
+
> - 若 `wecom_mcp` 返回 `errcode: 846609` 或 `unsupported mcp biz type`,表示当前 bot 未开通该 category,不是路径、白名单或 sandbox 问题;立即停止继续 `read`、`list`、`find`、memory fallback 探索,直接告知用户对应 category 未开通。
|
|
15
|
+
|
|
16
|
+
## 概述
|
|
17
|
+
|
|
18
|
+
wecom-meeting-manage 提供企业微信会议管理能力, 包含以下功能:
|
|
19
|
+
|
|
20
|
+
1. **取消会议** - 取消指定的预约会议
|
|
21
|
+
2. **更新会议受邀成员** - 修改会议的参与人列表
|
|
22
|
+
|
|
23
|
+
## 命令调用方式
|
|
24
|
+
|
|
25
|
+
查看可用命令列表:使用 `wecom_mcp` tool 调用 `wecom_mcp list meeting`
|
|
26
|
+
|
|
27
|
+
调用指定命令:使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting <tool_name> '<json_params>'`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 命令详细说明
|
|
32
|
+
|
|
33
|
+
### 1. 取消会议 (cancel_meeting)
|
|
34
|
+
|
|
35
|
+
取消指定的预约会议.
|
|
36
|
+
|
|
37
|
+
#### 调用命令
|
|
38
|
+
|
|
39
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting cancel_meeting '{"meetingid": "<会议id>"}'`
|
|
40
|
+
|
|
41
|
+
#### 入参说明
|
|
42
|
+
|
|
43
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
44
|
+
| ----------------- | ------ | ---- | ---------------------------------- |
|
|
45
|
+
| `meetingid` | string | 是 | 会议 ID, 通过 `wecom-meeting-query` 技能获取 |
|
|
46
|
+
|
|
47
|
+
#### 返回参数
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"errcode": 0,
|
|
52
|
+
"errmsg": "ok"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### 2. 更新会议受邀成员 (set_invite_meeting_members)
|
|
59
|
+
|
|
60
|
+
更新会议的受邀成员列表 (全量覆盖).
|
|
61
|
+
|
|
62
|
+
#### 调用命令
|
|
63
|
+
|
|
64
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting set_invite_meeting_members '{"meetingid": "<会议id>", "invitees": [{"userid": "lisi"}, {"userid": "wangwu"}]}'`
|
|
65
|
+
|
|
66
|
+
#### 入参说明
|
|
67
|
+
|
|
68
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
69
|
+
| ------------- | ------ | ---- | -------------------------------------- |
|
|
70
|
+
| `meetingid` | string | 是 | 会议 ID, 通过 `wecom-meeting-query` 技能获取 |
|
|
71
|
+
| `invitees` | array | 否 | 受邀成员列表, 每项包含 `userid` 字段 |
|
|
72
|
+
|
|
73
|
+
> **注意**: invitees 为全量覆盖, 传入的列表将替换现有成员列表.
|
|
74
|
+
> invitees 的 userid 通过 `wecom-contact-lookup` 技能获取
|
|
75
|
+
|
|
76
|
+
#### 返回参数
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"errcode": 0,
|
|
81
|
+
"errmsg": "ok"
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 典型工作流
|
|
88
|
+
|
|
89
|
+
### 工作流 1: 取消会议
|
|
90
|
+
|
|
91
|
+
**示例**: 用户说 "帮我取消明天的技术方案评审会议"
|
|
92
|
+
|
|
93
|
+
**步骤:**
|
|
94
|
+
|
|
95
|
+
1. **定位会议**: 通过 `wecom-meeting-query` 技能查询会议列表 + 关键词匹配找到目标会议.
|
|
96
|
+
2. **直接执行取消**:
|
|
97
|
+
|
|
98
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting cancel_meeting '{"meetingid": "<target_meetingid>"}'`
|
|
99
|
+
|
|
100
|
+
4. **展示结果**:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
✅ 会议已取消: 技术方案评审
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### 工作流 2: 更新会议成员
|
|
109
|
+
|
|
110
|
+
**示例**: 用户说 "把王五加到技术方案评审会议里"
|
|
111
|
+
|
|
112
|
+
**步骤:**
|
|
113
|
+
|
|
114
|
+
1. **定位会议**: 通过 `wecom-meeting-query` 技能查询会议列表 + 匹配找到目标会议.
|
|
115
|
+
2. **获取当前受邀成员**: `set_invite_members` 为全量覆盖, 必须先通过 `wecom-meeting-query` 技能的 `get_meeting_info` 获取会议详情, 获取现有成员后再合并.
|
|
116
|
+
3. **通讯录查询**: 调用 `wecom-contact-lookup` 技能获取通讯录成员, 按姓名筛选出王五的 userid.
|
|
117
|
+
|
|
118
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
|
|
119
|
+
|
|
120
|
+
在返回的 `userlist` 中筛选 `name` 包含 "王五" 的成员, 获取其 `userid`.
|
|
121
|
+
|
|
122
|
+
4. **合并成员列表**: 将现有成员 + 新增成员合并 (全量覆盖).
|
|
123
|
+
5. **执行更新**:
|
|
124
|
+
|
|
125
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting set_invite_meeting_members '{"meetingid": "<target_meetingid>", "invitees": [{"userid": "zhangsan"}, {"userid": "lisi"}, {"userid": "wangwu"}]}'`
|
|
126
|
+
|
|
127
|
+
7. **展示结果**:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
✅ 会议成员已更新: 技术方案评审
|
|
131
|
+
👥 当前成员: 张三, 李四, 王五
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 注意事项
|
|
137
|
+
|
|
138
|
+
- **参与人仅支持企业内成员**, 不支持外部人员
|
|
139
|
+
- **通讯录查询**: 涉及参与人时, 需先通过 `wecom-contact-lookup` 技能的 `get_userlist` 接口获取全量通讯录成员, 再按姓名/别名本地筛选匹配出对应的 `userid`. 该接口无入参, 返回当前用户可见范围内的成员列表 (含 `userid`, `name`, `alias`)
|
|
140
|
+
- **定位会议**: 管理操作需先通过 `wecom-meeting-query` 技能查询到目标会议的 meetingid
|
|
141
|
+
- **成员更新为全量覆盖**: `set_invite_members` 传入的列表将替换现有成员列表, 需先获取当前成员再合并
|