ylib-wecom-openclaw-plugin 2026.4.29

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.
Files changed (180) hide show
  1. package/README.md +596 -0
  2. package/dist/index.d.ts +10 -0
  3. package/dist/index.js +99 -0
  4. package/dist/src/accounts.d.ts +57 -0
  5. package/dist/src/accounts.js +247 -0
  6. package/dist/src/agent/api-client.d.ts +95 -0
  7. package/dist/src/agent/api-client.js +425 -0
  8. package/dist/src/agent/handler.d.ts +64 -0
  9. package/dist/src/agent/handler.js +731 -0
  10. package/dist/src/agent/index.d.ts +5 -0
  11. package/dist/src/agent/index.js +21 -0
  12. package/dist/src/agent/webhook.d.ts +25 -0
  13. package/dist/src/agent/webhook.js +294 -0
  14. package/dist/src/agent/xml.d.ts +21 -0
  15. package/dist/src/agent/xml.js +43 -0
  16. package/dist/src/channel.d.ts +5 -0
  17. package/dist/src/channel.js +815 -0
  18. package/dist/src/chat-queue.d.ts +31 -0
  19. package/dist/src/chat-queue.js +53 -0
  20. package/dist/src/config-schema.d.ts +587 -0
  21. package/dist/src/config-schema.js +146 -0
  22. package/dist/src/const.d.ts +128 -0
  23. package/dist/src/const.js +168 -0
  24. package/dist/src/dm-policy.d.ts +29 -0
  25. package/dist/src/dm-policy.js +146 -0
  26. package/dist/src/dynamic-agent.d.ts +37 -0
  27. package/dist/src/dynamic-agent.js +67 -0
  28. package/dist/src/dynamic-routing.d.ts +65 -0
  29. package/dist/src/dynamic-routing.js +62 -0
  30. package/dist/src/endpoint-dispatch.d.ts +54 -0
  31. package/dist/src/endpoint-dispatch.js +967 -0
  32. package/dist/src/endpoint-event-adapter.d.ts +15 -0
  33. package/dist/src/endpoint-event-adapter.js +427 -0
  34. package/dist/src/group-policy.d.ts +30 -0
  35. package/dist/src/group-policy.js +126 -0
  36. package/dist/src/http.d.ts +27 -0
  37. package/dist/src/http.js +168 -0
  38. package/dist/src/im-runtime-telemetry.d.ts +25 -0
  39. package/dist/src/im-runtime-telemetry.js +68 -0
  40. package/dist/src/interface.d.ts +192 -0
  41. package/dist/src/interface.js +5 -0
  42. package/dist/src/markdown-chunk.d.ts +1 -0
  43. package/dist/src/markdown-chunk.js +396 -0
  44. package/dist/src/mcp/index.d.ts +6 -0
  45. package/dist/src/mcp/index.js +28 -0
  46. package/dist/src/mcp/interceptors/biz-error.d.ts +11 -0
  47. package/dist/src/mcp/interceptors/biz-error.js +73 -0
  48. package/dist/src/mcp/interceptors/doc-auth-error.d.ts +10 -0
  49. package/dist/src/mcp/interceptors/doc-auth-error.js +235 -0
  50. package/dist/src/mcp/interceptors/index.d.ts +35 -0
  51. package/dist/src/mcp/interceptors/index.js +143 -0
  52. package/dist/src/mcp/interceptors/msg-media.d.ts +11 -0
  53. package/dist/src/mcp/interceptors/msg-media.js +201 -0
  54. package/dist/src/mcp/interceptors/smartpage-create.d.ts +30 -0
  55. package/dist/src/mcp/interceptors/smartpage-create.js +252 -0
  56. package/dist/src/mcp/interceptors/smartpage-export.d.ts +17 -0
  57. package/dist/src/mcp/interceptors/smartpage-export.js +135 -0
  58. package/dist/src/mcp/interceptors/smartsheet-upload.d.ts +22 -0
  59. package/dist/src/mcp/interceptors/smartsheet-upload.js +388 -0
  60. package/dist/src/mcp/interceptors/types.d.ts +64 -0
  61. package/dist/src/mcp/interceptors/types.js +8 -0
  62. package/dist/src/mcp/schema.d.ts +11 -0
  63. package/dist/src/mcp/schema.js +115 -0
  64. package/dist/src/mcp/tool.d.ts +63 -0
  65. package/dist/src/mcp/tool.js +318 -0
  66. package/dist/src/mcp/transport.d.ts +94 -0
  67. package/dist/src/mcp/transport.js +702 -0
  68. package/dist/src/media-handler.d.ts +55 -0
  69. package/dist/src/media-handler.js +306 -0
  70. package/dist/src/media-uploader.d.ts +142 -0
  71. package/dist/src/media-uploader.js +446 -0
  72. package/dist/src/message-parser.d.ts +104 -0
  73. package/dist/src/message-parser.js +232 -0
  74. package/dist/src/message-sender.d.ts +54 -0
  75. package/dist/src/message-sender.js +210 -0
  76. package/dist/src/monitor.d.ts +69 -0
  77. package/dist/src/monitor.js +1846 -0
  78. package/dist/src/onboarding.d.ts +8 -0
  79. package/dist/src/onboarding.js +248 -0
  80. package/dist/src/openclaw-compat.d.ts +148 -0
  81. package/dist/src/openclaw-compat.js +839 -0
  82. package/dist/src/proactive-markdown-send.d.ts +14 -0
  83. package/dist/src/proactive-markdown-send.js +205 -0
  84. package/dist/src/reqid-store.d.ts +23 -0
  85. package/dist/src/reqid-store.js +136 -0
  86. package/dist/src/runtime.d.ts +2 -0
  87. package/dist/src/runtime.js +7 -0
  88. package/dist/src/shared/command-auth.d.ts +23 -0
  89. package/dist/src/shared/command-auth.js +112 -0
  90. package/dist/src/shared/xml-parser.d.ts +46 -0
  91. package/dist/src/shared/xml-parser.js +228 -0
  92. package/dist/src/state-dir-resolve.d.ts +2 -0
  93. package/dist/src/state-dir-resolve.js +33 -0
  94. package/dist/src/state-manager.d.ts +115 -0
  95. package/dist/src/state-manager.js +413 -0
  96. package/dist/src/target.d.ts +35 -0
  97. package/dist/src/target.js +71 -0
  98. package/dist/src/template-card-manager.d.ts +55 -0
  99. package/dist/src/template-card-manager.js +316 -0
  100. package/dist/src/template-card-parser.d.ts +37 -0
  101. package/dist/src/template-card-parser.js +672 -0
  102. package/dist/src/timeout.d.ts +20 -0
  103. package/dist/src/timeout.js +57 -0
  104. package/dist/src/types/account.d.ts +29 -0
  105. package/dist/src/types/account.js +5 -0
  106. package/dist/src/types/config.d.ts +98 -0
  107. package/dist/src/types/config.js +8 -0
  108. package/dist/src/types/constants.d.ts +42 -0
  109. package/dist/src/types/constants.js +45 -0
  110. package/dist/src/types/index.d.ts +7 -0
  111. package/dist/src/types/index.js +17 -0
  112. package/dist/src/types/message.d.ts +238 -0
  113. package/dist/src/types/message.js +6 -0
  114. package/dist/src/utils.d.ts +148 -0
  115. package/dist/src/utils.js +92 -0
  116. package/dist/src/version.d.ts +2 -0
  117. package/dist/src/version.js +28 -0
  118. package/dist/src/webhook/command-auth.d.ts +47 -0
  119. package/dist/src/webhook/command-auth.js +137 -0
  120. package/dist/src/webhook/gateway.d.ts +36 -0
  121. package/dist/src/webhook/gateway.js +297 -0
  122. package/dist/src/webhook/handler.d.ts +19 -0
  123. package/dist/src/webhook/handler.js +481 -0
  124. package/dist/src/webhook/helpers.d.ts +157 -0
  125. package/dist/src/webhook/helpers.js +936 -0
  126. package/dist/src/webhook/http.d.ts +27 -0
  127. package/dist/src/webhook/http.js +168 -0
  128. package/dist/src/webhook/index.d.ts +11 -0
  129. package/dist/src/webhook/index.js +43 -0
  130. package/dist/src/webhook/media.d.ts +30 -0
  131. package/dist/src/webhook/media.js +152 -0
  132. package/dist/src/webhook/monitor.d.ts +59 -0
  133. package/dist/src/webhook/monitor.js +1672 -0
  134. package/dist/src/webhook/state.d.ts +220 -0
  135. package/dist/src/webhook/state.js +568 -0
  136. package/dist/src/webhook/target.d.ts +41 -0
  137. package/dist/src/webhook/target.js +165 -0
  138. package/dist/src/webhook/types.d.ts +348 -0
  139. package/dist/src/webhook/types.js +36 -0
  140. package/dist/src/webhook/video-frame.d.ts +13 -0
  141. package/dist/src/webhook/video-frame.js +108 -0
  142. package/openclaw.plugin.json +19 -0
  143. package/package.json +96 -0
  144. package/schema.json +534 -0
  145. package/scripts/generate-schema.mjs +33 -0
  146. package/skills/wecom-contact/SKILL.md +162 -0
  147. package/skills/wecom-doc/SKILL.md +162 -0
  148. package/skills/wecom-doc/references/create-doc.md +56 -0
  149. package/skills/wecom-doc/references/edit-doc-content.md +68 -0
  150. package/skills/wecom-doc/references/get-doc-content.md +88 -0
  151. package/skills/wecom-doc/references/smartpage-create.md +125 -0
  152. package/skills/wecom-doc/references/smartpage-export.md +160 -0
  153. package/skills/wecom-meeting/SKILL.md +441 -0
  154. package/skills/wecom-meeting/references/example-full.md +30 -0
  155. package/skills/wecom-meeting/references/example-reminder.md +46 -0
  156. package/skills/wecom-meeting/references/example-security.md +22 -0
  157. package/skills/wecom-meeting/references/response-get-meeting-info.md +148 -0
  158. package/skills/wecom-msg/SKILL.md +157 -0
  159. package/skills/wecom-msg/references/api-get-messages.md +93 -0
  160. package/skills/wecom-msg/references/api-get-msg-chat-list.md +58 -0
  161. package/skills/wecom-msg/references/api-get-msg-media.md +44 -0
  162. package/skills/wecom-msg/references/api-send-message.md +39 -0
  163. package/skills/wecom-preflight/SKILL.md +141 -0
  164. package/skills/wecom-schedule/SKILL.md +161 -0
  165. package/skills/wecom-schedule/references/api-check-availability.md +56 -0
  166. package/skills/wecom-schedule/references/api-create-schedule.md +38 -0
  167. package/skills/wecom-schedule/references/api-get-schedule-detail.md +81 -0
  168. package/skills/wecom-schedule/references/api-update-schedule.md +32 -0
  169. package/skills/wecom-schedule/references/ref-reminders.md +24 -0
  170. package/skills/wecom-send-media/SKILL.md +68 -0
  171. package/skills/wecom-send-template-card/SKILL.md +157 -0
  172. package/skills/wecom-send-template-card/references/api-template-card-types.md +358 -0
  173. package/skills/wecom-smartsheet/SKILL.md +164 -0
  174. package/skills/wecom-smartsheet/references/smartsheet-cell-value-formats.md +163 -0
  175. package/skills/wecom-smartsheet/references/smartsheet-field-types.md +44 -0
  176. package/skills/wecom-smartsheet/references/smartsheet-get-records.md +96 -0
  177. package/skills/wecom-smartsheet/references/webhook-examples.md +185 -0
  178. package/skills/wecom-smartsheet/references/webhook-fallback.md +184 -0
  179. package/skills/wecom-todo/SKILL.md +392 -0
  180. package/skills/wecom-todo/examples/workflows.md +163 -0
@@ -0,0 +1,160 @@
1
+ # smartpage_export_task / smartpage_get_export_result API
2
+
3
+ 导出智能文档(原智能主页)内容。采用异步两步操作:先通过 `smartpage_export_task` 提交导出任务获取 `task_id`,再通过 `smartpage_get_export_result` 轮询任务状态,直到任务完成后返回导出内容的本地文件路径。
4
+
5
+ ---
6
+
7
+ ## 第一步:smartpage_export_task — 提交导出任务
8
+
9
+ 发起智能文档内容导出任务(异步)。传入 `docid` 或 `url` 和 `content_type`,返回 `task_id`。
10
+
11
+ ### 技能定义
12
+
13
+ ```json
14
+ {
15
+ "name": "smartpage_export_task",
16
+ "description": "发起智能文档(原智能主页)内容导出任务(异步)。传入 docid(或 url)和 content_type,返回 task_id。需配合 smartpage_get_export_result 轮询查询导出进度,直到任务完成后获取导出文件路径。",
17
+ "inputSchema": {
18
+ "properties": {
19
+ "docid": {
20
+ "description": "智能文档的 docid,与 url 二选一传入",
21
+ "title": "Doc ID",
22
+ "type": "string"
23
+ },
24
+ "url": {
25
+ "description": "智能文档的访问链接,与 docid 二选一传入",
26
+ "title": "URL",
27
+ "type": "string"
28
+ },
29
+ "content_type": {
30
+ "description": "导出内容格式。0: Text,1: Markdown",
31
+ "enum": [0, 1],
32
+ "title": "Content Type",
33
+ "type": "integer"
34
+ }
35
+ },
36
+ "oneOf": [
37
+ { "required": ["docid", "content_type"] },
38
+ { "required": ["url", "content_type"] }
39
+ ],
40
+ "title": "smartpage_export_taskArguments",
41
+ "type": "object"
42
+ }
43
+ }
44
+ ```
45
+
46
+ ### 参数说明
47
+
48
+ | 参数 | 类型 | 必填 | 说明 |
49
+ | ------------ | ------- | --------------- | --------------------------------------------- |
50
+ | docid | string | 与 url 二选一 | 智能文档的 docid |
51
+ | url | string | 与 docid 二选一 | 智能文档的访问链接 |
52
+ | content_type | integer | 是 | 导出内容格式:0-Text,1-Markdown |
53
+
54
+ ### 请求示例
55
+
56
+ ```json
57
+ // 通过 docid
58
+ {
59
+ "docid": "DOCID",
60
+ "content_type": 1
61
+ }
62
+
63
+ // 通过 url
64
+ {
65
+ "url": "https://doc.weixin.qq.com/smartpage/a1_xxxxxx",
66
+ "content_type": 1
67
+ }
68
+ ```
69
+
70
+ ### 响应示例
71
+
72
+ ```json
73
+ {
74
+ "errcode": 0,
75
+ "errmsg": "ok",
76
+ "task_id": "TASK_ID"
77
+ }
78
+ ```
79
+
80
+ ---
81
+
82
+ ## 第二步:smartpage_get_export_result — 查询导出结果
83
+
84
+ 查询智能文档导出任务进度。传入 `task_id` 进行轮询,当 `task_done` 为 `true` 时返回导出内容的本地文件路径。
85
+
86
+ ### 技能定义
87
+
88
+ ```json
89
+ {
90
+ "name": "smartpage_get_export_result",
91
+ "description": "查询智能文档(原智能主页)导出任务进度。传入 task_id 轮询,当 task_done 为 true 时返回导出内容的本地文件路径 content_filepath,可通过读取该文件获取 Markdown 内容。",
92
+ "inputSchema": {
93
+ "properties": {
94
+ "task_id": {
95
+ "description": "导出任务 ID,由 smartpage_export_task 返回",
96
+ "title": "Task ID",
97
+ "type": "string"
98
+ }
99
+ },
100
+ "required": ["task_id"],
101
+ "title": "smartpage_get_export_resultArguments",
102
+ "type": "object"
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### 参数说明
108
+
109
+ | 参数 | 类型 | 必填 | 说明 |
110
+ | ------- | ------ | ---- | -------------------------------------------- |
111
+ | task_id | string | 是 | 导出任务 ID,由 `smartpage_export_task` 返回 |
112
+
113
+ ### 请求示例
114
+
115
+ ```json
116
+ {
117
+ "task_id": "TASK_ID"
118
+ }
119
+ ```
120
+
121
+ ### 响应示例
122
+
123
+ 任务未完成:
124
+
125
+ ```json
126
+ {
127
+ "errcode": 0,
128
+ "errmsg": "ok",
129
+ "task_done": false
130
+ }
131
+ ```
132
+
133
+ 任务完成:
134
+
135
+ ```json
136
+ {
137
+ "errcode": 0,
138
+ "errmsg": "ok",
139
+ "task_done": true,
140
+ "content_filepath": "/path/to/exported-content.md"
141
+ }
142
+ ```
143
+
144
+ ---
145
+
146
+ ## 异步轮询机制
147
+
148
+ 1. **调用 smartpage_export_task**:传入 `docid`(或 `url`)和 `content_type: 1`,获取 `task_id`
149
+ 2. **首次轮询**:传入 `task_id` 调用 `smartpage_get_export_result`
150
+ 3. **检查响应**:若 `task_done` 为 `false`,继续轮询
151
+ 4. **获取内容**:当 `task_done` 为 `true` 时,读取 `content_filepath` 指向的本地文件获取导出内容
152
+
153
+ ## 注意事项
154
+
155
+ - `smartpage_export_task` 是异步操作的第一步,调用后仅返回 `task_id`
156
+ - `content_type` 建议使用 `1`(Markdown)以获取可编辑的文本格式
157
+ - `docid` 和 `url` 二选一传入即可,无需同时传入
158
+ - `content_filepath` 仅在 `task_done` 为 `true` 时返回
159
+ - `content_filepath` 是本地文件路径,使用 Read 工具读取文件内容即可
160
+ - 如果轮询多次仍未完成,建议适当增加轮询间隔
@@ -0,0 +1,441 @@
1
+ ---
2
+ name: wecom-meeting
3
+ description: 企业微信会议技能,支持创建预约会议、查询会议列表、获取会议详情、取消会议、更新会议成员。当用户需要"创建会议"、"预约会议"、"约会议"、"安排会议"、"查看会议"、"查询会议列表"、"会议详情"、"什么时候开会"、"有哪些会议"、"查找会议"、"取消会议"、"删除会议"、"修改会议成员"、"添加会议参与人"、"移除会议成员"时触发。
4
+ ---
5
+ # 企业微信会议技能
6
+
7
+ > `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
8
+
9
+ > ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
10
+
11
+ ## 概述
12
+
13
+ wecom-meeting 提供企业微信会议的完整管理能力,包含以下功能:
14
+
15
+ 1. **创建预约会议** - 创建会议,支持设置会议参数,邀请参与人等
16
+ 2. **查询会议列表** - 按用户和时间范围查询会议 ID 列表 (限制: 当日及前后 30 天,上限 100 个)
17
+ 3. **获取会议详情** - 通过会议 ID 查询完整会议信息
18
+ 4. **取消会议** - 取消指定的预约会议
19
+ 5. **更新会议受邀成员** - 修改会议的参与人列表
20
+
21
+ ## 命令调用方式
22
+
23
+ 查看可用命令列表:使用 `wecom_mcp` tool 调用 `wecom_mcp list meeting`
24
+
25
+ 执行指定命令:使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting <tool_name> '<json_params>'`
26
+
27
+ ---
28
+
29
+ ## 命令详细说明
30
+
31
+ ### 1. 创建预约会议 (create_meeting)
32
+
33
+ 创建一个预约会议,支持设置会议参数配置等。
34
+
35
+ #### 执行命令
36
+
37
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting create_meeting '{"title": "<会议标题>", "meeting_start_datetime": "<会议开始时间>", "meeting_duration": <会议持续时长(秒)>}'`
38
+
39
+ #### 入参说明
40
+
41
+ | 参数 | 类型 | 必填 | 说明 |
42
+ | -------------------------- | ------- | ---- | ------------------------------------------------- |
43
+ | `title` | string | 是 | 会议标题 |
44
+ | `meeting_start_datetime` | string | 是 | 会议开始时间,格式:`YYYY-MM-DD HH:mm` |
45
+ | `meeting_duration` | integer | 是 | 会议持续时长 (秒),例如 3600 = 1 小时 |
46
+ | `description` | string | 否 | 会议描述 |
47
+ | `location` | string | 否 | 会议地点 |
48
+ | `invitees` | object | 否 | 被邀请人,格式:`{"userid": ["lisi", "wangwu"]}` |
49
+ | `settings` | object | 否 | 会议设置 (详见下方) |
50
+
51
+ > 被邀请人 userid 通过 `wecom-contact` 技能获取
52
+
53
+ **settings 字段:**
54
+
55
+ | 参数 | 类型 | 说明 |
56
+ | --------------------------- | ------- | --------------------------------------------- |
57
+ | `password` | string | 会议密码 |
58
+ | `enable_waiting_room` | boolean | 是否启用等候室 |
59
+ | `allow_enter_before_host` | boolean | 是否允许成员在主持人进入前加入 |
60
+ | `enable_enter_mute` | integer | 入会时静音设置 (枚举: 0: 关闭,1: 开启) |
61
+ | `allow_external_user` | boolean | 是否允许外部用户入会 |
62
+ | `enable_screen_watermark` | boolean | 是否开启屏幕水印 |
63
+ | `remind_scope` | integer | 提醒范围 (1: 不提醒,2: 仅提醒主持人,3: 提醒所有成员,4: 指定部分人响铃,默认仅提醒主持人) |
64
+ | `ring_users` | object | 响铃用户,格式:`{"userid": ["lisi"]}` |
65
+
66
+ > 响铃用户 userid 通过 `wecom-contact` 技能获取
67
+
68
+ #### 返回参数
69
+
70
+ ```json
71
+ {
72
+ "errcode": 0,
73
+ "errmsg": "ok",
74
+ "meetingid": "会议ID字符串",
75
+ "meeting_code": "会议号码字符串",
76
+ "meeting_link": "会议链接URL",
77
+ "excess_users": ["无效会议账号的userid"]
78
+ }
79
+ ```
80
+
81
+ | 字段 | 类型 | 说明 |
82
+ | ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
83
+ | `meetingid` | string | 会议 ID |
84
+ | `meeting_code` | string | 会议号码,向用户展示时需在回复**开头**单独一行纯文字展示,格式 `#会议号: xxx-xxx-xxx` (每3位用 `-` 分隔) |
85
+ | `meeting_link` | string | 会议链接 |
86
+ | `excess_users` | array | 参会人中包含无效会议账号的 userid,仅在购买会议专业版企业由于部分参会人无有效会议账号时返回 |
87
+
88
+ ---
89
+
90
+ ### 2. 查询会议列表 (list_user_meetings)
91
+
92
+ 查询指定用户在时间范围内的会议 ID 列表。
93
+
94
+ #### 执行命令
95
+
96
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting list_user_meetings '{"begin_datetime": "2026-03-01 00:00", "end_datetime": "2026-03-31 23:59", "limit": 100}'`
97
+
98
+ #### 入参说明
99
+
100
+ | 参数 | 类型 | 必填 | 说明 |
101
+ | ------------------ | ------- | ---- | --------------------------------------- |
102
+ | `begin_datetime` | string | 否 | 查询起始时间,格式:`YYYY-MM-DD HH:mm` |
103
+ | `end_datetime` | string | 否 | 查询结束时间,格式:`YYYY-MM-DD HH:mm` |
104
+ | `cursor` | string | 否 | 分页游标,用于获取下一页数据 |
105
+ | `limit` | integer | 否 | 每页返回条数,最大 100 |
106
+
107
+ > **限制**: 时间范围仅支持当日及前后 30 天。
108
+
109
+ #### 返回参数
110
+
111
+ ```json
112
+ {
113
+ "errcode": 0,
114
+ "errmsg": "ok",
115
+ "next_cursor": "分页游标字符串,为空表示无更多",
116
+ "meetingid_list": ["会议ID_1", "会议ID_2"]
117
+ }
118
+ ```
119
+
120
+ | 字段 | 类型 | 说明 |
121
+ | ------------------ | ------ | ------------------------------ |
122
+ | `meetingid_list` | array | 会议 ID 列表 |
123
+ | `next_cursor` | string | 下一页游标,为空表示无更多数据 |
124
+
125
+ ---
126
+
127
+ ### 3. 获取会议详情 (get_meeting_info)
128
+
129
+ 通过会议 ID 查询会议的完整详情。
130
+
131
+ #### 执行命令
132
+
133
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting get_meeting_info '{"meetingid": "<会议id>"}'`
134
+
135
+ #### 入参说明
136
+
137
+ | 参数 | 类型 | 必填 | 说明 |
138
+ | ----------------- | ------ | ---- | --------------- |
139
+ | `meetingid` | string | 是 | 会议 ID,通过 `list_user_meetings` 获取 |
140
+ | `meeting_code` | string | 否 | 会议号码 |
141
+ | `sub_meetingid` | string | 否 | 子会议 ID |
142
+
143
+ #### 返回参数
144
+
145
+ > 完整的返回参数结构和字段说明详见 [references/response-get-meeting-info.md](references/response-get-meeting-info.md)
146
+
147
+ **核心字段速览:**
148
+
149
+ | 字段 | 类型 | 说明 |
150
+ | --- | --- | --- |
151
+ | `title` | string | 会议标题 |
152
+ | `meeting_start_datetime` | string | 会议开始时间 |
153
+ | `meeting_duration` | integer | 会议时长 (秒) |
154
+ | `status` | integer | 会议状态 (1: 待开始,2: 会议中,3: 已结束,4: 已取消,5: 已过期) |
155
+ | `meeting_type` | integer | 会议类型 (0: 一次性,1: 周期性,2: 微信专属,3: Rooms 投屏,5: 个人会议号,6: 网络研讨会) |
156
+ | `meeting_code` | string | 会议号码 |
157
+ | `meeting_link` | string | 会议链接 |
158
+ | `description` | string | 会议描述 |
159
+ | `location` | string | 会议地点 |
160
+ | `attendees.member[].status` | integer | 与会状态 (1: 已参与,2: 未参与) |
161
+
162
+ ---
163
+
164
+ ### 4. 取消会议 (cancel_meeting)
165
+
166
+ 取消指定的预约会议。
167
+
168
+ #### 执行命令
169
+
170
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting cancel_meeting '{"meetingid": "<会议id>"}'`
171
+
172
+ #### 入参说明
173
+
174
+ | 参数 | 类型 | 必填 | 说明 |
175
+ | ----------------- | ------ | ---- | ---------------------------------- |
176
+ | `meetingid` | string | 是 | 会议 ID,通过 `list_user_meetings` + `get_meeting_info` 获取 |
177
+
178
+ #### 返回参数
179
+
180
+ ```json
181
+ {
182
+ "errcode": 0,
183
+ "errmsg": "ok"
184
+ }
185
+ ```
186
+
187
+ ---
188
+
189
+ ### 5. 更新会议受邀成员 (set_invite_meeting_members)
190
+
191
+ 更新会议的受邀成员列表(全量覆盖)。
192
+
193
+ #### 执行命令
194
+
195
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting set_invite_meeting_members '{"meetingid": "<会议id>", "invitees": [{"userid": "lisi"}, {"userid": "wangwu"}]}'`
196
+
197
+ #### 入参说明
198
+
199
+ | 参数 | 类型 | 必填 | 说明 |
200
+ | ------------- | ------ | ---- | -------------------------------------- |
201
+ | `meetingid` | string | 是 | 会议 ID,通过 `list_user_meetings` + `get_meeting_info` 获取 |
202
+ | `invitees` | array | 是 | 受邀成员列表,每项包含 `userid` 字段 |
203
+
204
+ > **注意**: invitees 为全量覆盖,传入的列表将替换现有成员列表。
205
+ > invitees 的 userid 通过 `wecom-contact` 技能获取
206
+
207
+ #### 返回参数
208
+
209
+ ```json
210
+ {
211
+ "errcode": 0,
212
+ "errmsg": "ok"
213
+ }
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 典型工作流
219
+
220
+ ### 工作流 1: 最简创建 (无邀请人)
221
+
222
+ **用户意图**: "帮我约一个明天下午3点的会议,主题是周例会,时长1小时"
223
+
224
+ **步骤:**
225
+
226
+ 1. **解析用户意图**: 时间 + 主题已有,邀请人未提及则默认留空,直接创建。
227
+ 2. **调用创建命令**:
228
+
229
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting create_meeting '{"title": "周例会", "meeting_start_datetime": "2026-03-18 15:00", "meeting_duration": 3600}'`
230
+
231
+ 3. **展示结果**:
232
+
233
+ #会议号: <会议号>
234
+
235
+ ```
236
+ ✅ 会议创建成功!
237
+
238
+ 📅 <会议标题>
239
+ 🕐 时间: <开始时间>,时长 <时长>
240
+ 🔗 会议链接: <会议链接>
241
+ ```
242
+
243
+ ### 工作流 2: 带邀请人 + 地点 + 描述创建
244
+
245
+ **用户意图**: "帮我约一个明天下午3点的会议,主题是技术方案评审,邀请张三和李四,地点在3楼会议室,时长1小时"
246
+
247
+ **步骤:**
248
+
249
+ 1. **解析用户意图**: 有邀请人,需先查询通讯录获取 userid。
250
+ 2. **通讯录查询**: 调用 `wecom-contact` 技能获取通讯录成员,按姓名筛选出参与者的 userid。
251
+
252
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
253
+
254
+ 在返回的 `userlist` 中筛选 `name` 包含 "张三" 和 "李四" 的成员,获取其 `userid`。
255
+
256
+ 3. **信息已充分,直接调用创建命令** (禁止暴露内部 ID):
257
+
258
+ 使用 `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"]}}'`
259
+
260
+ 4. **展示结果**:
261
+
262
+ #会议号: <会议号>
263
+
264
+ ```
265
+ ✅ 会议创建成功!
266
+
267
+ 📅 <会议标题>
268
+ 🕐 时间: <开始时间>,时长 <时长>
269
+ 👥 参与人: <参与者姓名列表>
270
+ 🔗 会议链接: <会议链接>
271
+ ```
272
+
273
+ ---
274
+
275
+ ### 工作流 3: 查询会议列表
276
+
277
+ **示例**: 用户说 "帮我查一下本周有哪些会议"
278
+
279
+ **步骤:**
280
+
281
+ 1. **确定时间范围**: 根据当前日期计算本周的起止时间。
282
+ 2. **查询会议 ID 列表**:
283
+
284
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting list_user_meetings '{"begin_datetime": "2026-03-16 00:00", "end_datetime": "2026-03-22 23:59", "limit": 100}'`
285
+
286
+ 3. **逐个查询会议详情** (对返回的每个 meetingid):
287
+
288
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting get_meeting_info '{"meetingid": "<会议id1>"}'`
289
+
290
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting get_meeting_info '{"meetingid": "<会议id2>"}'`
291
+
292
+ 4. **汇总展示**:
293
+
294
+ ```
295
+ 📋 本周会议列表 (共 3 场):
296
+
297
+ 1. 📅 技术方案评审
298
+ 🕐 2026-03-17 10:00 - 11:00
299
+ 👥 张三,李四,王五
300
+
301
+ 2. 📅 产品需求沟通
302
+ 🕐 2026-03-18 14:00 - 15:00
303
+ 👥 赵六,钱七
304
+
305
+ 3. 📅 周五周会
306
+ 🕐 2026-03-21 09:00 - 10:00
307
+ 👥 全组成员
308
+ ```
309
+
310
+ > **分页处理**: 如果 `next_cursor` 不为空,使用 `cursor` 参数继续拉取下一页。
311
+
312
+ ---
313
+
314
+ ### 工作流 4: 获取会议详情
315
+
316
+ **示例**: 用户说 "帮我看下技术方案评审会议的详情"
317
+
318
+ **步骤:**
319
+
320
+ 1. **定位会议**: 先通过会议列表查询找到目标会议的 meetingid (按关键词匹配)。
321
+ 2. **查询详情**:
322
+
323
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting get_meeting_info '{"meetingid": "<target_meetingid>"}'`
324
+
325
+ 3. **展示结果**:
326
+
327
+ #会议号: <会议号>
328
+
329
+ ```
330
+ 📅 <会议标题>
331
+
332
+ 🕐 时间: <开始时间>,时长 <时长>
333
+ 📍 地点: <会议地点>
334
+ 📝 描述: <会议描述>
335
+ 👤 创建者: <创建者姓名>
336
+ 👥 参与者: <参与者姓名列表>
337
+ 🔗 会议链接: <会议链接>
338
+ ```
339
+
340
+ ---
341
+
342
+ ### 工作流 5: 根据关键词查找会议
343
+
344
+ **示例**: 用户说 "技术评审会议是什么时候?"
345
+
346
+ **查询策略:**
347
+
348
+ 1. **确定查询范围**: 默认查当日前后 30 天 (接口限制范围)。
349
+ 2. **拉取会议列表**:
350
+
351
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting list_user_meetings '{"begin_datetime": "2026-02-15 00:00", "end_datetime": "2026-04-16 23:59", "limit": 100}'`
352
+
353
+ 3. **逐个查询详情并匹配标题关键词**。
354
+ 4. **找到匹配后停止查询,展示结果**:
355
+
356
+ #会议号: <会议号>
357
+
358
+ ```
359
+ ✅ 找到会议: "<会议标题>"
360
+
361
+ 📅 时间: <开始时间>,时长 <时长>
362
+ 📍 地点: <会议地点>
363
+ 👥 参与者: <参与者姓名列表>
364
+ 🔗 会议链接: <会议链接>
365
+ ```
366
+
367
+ 5. **未找到处理**: 告知用户在前后 30 天范围内未找到匹配会议,请确认会议名称。
368
+
369
+ ---
370
+
371
+ ### 工作流 6: 取消会议
372
+
373
+ **示例**: 用户说 "帮我取消明天的技术方案评审会议"
374
+
375
+ **步骤:**
376
+
377
+ 1. **定位会议**: 通过 `list_user_meetings` + `get_meeting_info` 查询会议列表 + 关键词匹配找到目标会议。
378
+ 2. **直接执行取消**:
379
+
380
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting cancel_meeting '{"meetingid": "<target_meetingid>"}'`
381
+
382
+ 3. **展示结果**:
383
+
384
+ ```
385
+ ✅ 会议已取消: 技术方案评审
386
+ ```
387
+
388
+ ---
389
+
390
+ ### 工作流 7: 更新会议成员
391
+
392
+ **示例**: 用户说 "把王五加到技术方案评审会议里"
393
+
394
+ **步骤:**
395
+
396
+ 1. **定位会议**: 通过 `list_user_meetings` + `get_meeting_info` 查询会议列表 + 匹配找到目标会议。
397
+ 2. **获取当前受邀成员**: `set_invite_meeting_members` 为全量覆盖,必须先通过 `get_meeting_info` 获取会议详情,获取现有成员后再合并。
398
+ 3. **通讯录查询**: 调用 `wecom-contact` 技能获取通讯录成员,按姓名筛选出王五的 userid。
399
+
400
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
401
+
402
+ 在返回的 `userlist` 中筛选 `name` 包含 "王五" 的成员,获取其 `userid`。
403
+
404
+ 4. **合并成员列表**: 将现有成员 + 新增成员合并 (全量覆盖)。
405
+ 5. **执行更新**:
406
+
407
+ 使用 `wecom_mcp` tool 调用 `wecom_mcp call meeting set_invite_meeting_members '{"meetingid": "<target_meetingid>", "invitees": [{"userid": "zhangsan"}, {"userid": "lisi"}, {"userid": "wangwu"}]}'`
408
+
409
+ 6. **展示结果**:
410
+
411
+ ```
412
+ ✅ 会议成员已更新: 技术方案评审
413
+ 👥 当前成员: 张三,李四,王五
414
+ ```
415
+
416
+ ---
417
+
418
+ ## 复杂场景样例
419
+
420
+ 按场景按需加载,避免一次性引入过多无关示例:
421
+
422
+ | 文件 | 适用场景 |
423
+ | ---- | -------- |
424
+ | [references/response-get-meeting-info.md](references/response-get-meeting-info.md) | 获取会议详情完整返回参数结构和字段说明 |
425
+ | [references/example-security.md](references/example-security.md) | 会议密码,等候室,外部用户限制 |
426
+ | [references/example-reminder.md](references/example-reminder.md) | 响铃提醒,指定部分人响铃 |
427
+ | [references/example-full.md](references/example-full.md) | 全参数综合场景 (含静音,屏幕水印,等候室等设置) |
428
+
429
+ ---
430
+
431
+ ## 注意事项
432
+
433
+ - **信息追问**: 缺少时间或主题时,简洁追问用户;未提及邀请人则默认留空
434
+ - **通讯录查询**: 涉及参与人时,需先通过 `wecom-contact` 技能的 `get_userlist` 接口获取全量通讯录成员,再按姓名/别名本地筛选匹配出对应的 `userid`。该接口无入参,返回当前用户可见范围内的成员列表 (含 `userid`,`name`,`alias`)
435
+ - **直接创建**: 时间 + 主题已知即可直接创建,邀请人有则带上,无则留空;无论信息是一次性提供还是上下文可推断,非必要则均不请求确认,直接创建即可
436
+ - **时间格式**: 统一使用 `YYYY-MM-DD HH:mm` 格式
437
+ - **会议列表时间范围限制**: 仅支持查询当日及前后 30 天内的会议
438
+ - **查询详情需两步**: 先通过 `list_user_meetings` 获取会议 ID 列表,再通过 `get_meeting_info` 逐个获取详情
439
+ - **定位会议**: 取消会议和更新成员等管理操作需先通过查询定位到目标会议的 meetingid
440
+ - **成员更新为全量覆盖**: `set_invite_meeting_members` 传入的列表将替换现有成员列表,需先获取当前成员再合并
441
+ - **参与人仅支持企业内成员**,不支持外部人员
@@ -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
+ ```