@amaster.ai/pi-lark 0.1.2-beta.61 → 0.1.2-beta.63

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 (65) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-approval/SKILL.md +2 -2
  3. package/skills/lark-approval/references/lark-approval-instances-initiated.md +5 -0
  4. package/skills/lark-approval/references/lark-approval-tasks-add-sign.md +68 -20
  5. package/skills/lark-approval/references/lark-approval-tasks-query.md +5 -0
  6. package/skills/lark-base/SKILL.md +110 -7
  7. package/skills/lark-base/references/lark-base-data-query.md +2 -6
  8. package/skills/lark-base/references/lark-base-field-extension.md +170 -0
  9. package/skills/lark-base/references/lark-base-field-lookup.md +1 -1
  10. package/skills/lark-base/references/lark-base-filter-condition.md +32 -5
  11. package/skills/lark-base/references/lark-base-form-detail.md +1 -1
  12. package/skills/lark-base/references/lark-base-form-submit.md +2 -2
  13. package/skills/lark-base/references/lark-base-record-history-list.md +1 -1
  14. package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +95 -205
  15. package/skills/lark-base/references/lark-base-template-center.md +5 -1
  16. package/skills/lark-calendar/SKILL.md +6 -0
  17. package/skills/lark-calendar/references/lark-calendar-join-event.md +43 -0
  18. package/skills/lark-drive/references/lark-drive-member-remove.md +2 -1
  19. package/skills/lark-im/SKILL.md +14 -1
  20. package/skills/lark-markdown/SKILL.md +1 -1
  21. package/skills/lark-meeting/SKILL.md +6 -2
  22. package/skills/lark-meeting/references/lark-minutes-summary.md +1 -0
  23. package/skills/lark-meeting/references/lark-minutes-todo.md +39 -1
  24. package/skills/lark-meeting/references/lark-minutes-upload.md +6 -0
  25. package/skills/lark-meeting/references/lark-vc-agent-meeting-end.md +26 -0
  26. package/skills/lark-meeting/references/lark-vc-agent-meeting-invite.md +32 -0
  27. package/skills/lark-meeting/references/lark-vc-agent-meeting-join.md +8 -2
  28. package/skills/lark-meeting/references/lark-vc-meeting-countdown.md +103 -0
  29. package/skills/lark-meeting/references/lark-vc-meeting-events.md +1 -0
  30. package/skills/lark-meeting/references/lark-vc-meeting-screenshot.md +34 -0
  31. package/skills/lark-meeting/scenes/create-and-edit-minutes.md +25 -3
  32. package/skills/lark-meeting/scenes/live-meeting-attend.md +63 -6
  33. package/skills/lark-meeting/scenes/live-meeting-interact.md +32 -3
  34. package/skills/lark-sheets/SKILL.md +76 -60
  35. package/skills/lark-sheets/references/lark-sheets-batch-update.md +83 -14
  36. package/skills/lark-sheets/references/lark-sheets-chart.md +296 -159
  37. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +5 -3
  38. package/skills/lark-sheets/references/lark-sheets-filter.md +1 -1
  39. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +78 -65
  40. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +21 -17
  41. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +2 -1
  42. package/skills/lark-sheets/references/lark-sheets-range-operations.md +1 -1
  43. package/skills/lark-sheets/references/lark-sheets-read-data.md +7 -4
  44. package/skills/lark-sheets/references/lark-sheets-search-replace.md +4 -4
  45. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +2 -2
  46. package/skills/lark-sheets/references/lark-sheets-sparkline.md +1 -0
  47. package/skills/lark-sheets/references/lark-sheets-styles-put.md +3 -3
  48. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +6 -4
  49. package/skills/lark-sheets/references/lark-sheets-workbook.md +3 -1
  50. package/skills/lark-sheets/references/lark-sheets-write-cells.md +50 -48
  51. package/skills/lark-sheets/scripts/lark_chart_layout_check.py +472 -0
  52. package/skills/lark-slides/SKILL.md +2 -0
  53. package/skills/lark-slides/references/cli/lark-slides-add-slide.md +6 -6
  54. package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +3 -3
  55. package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +11 -11
  56. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +1 -1
  57. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +2 -2
  58. package/skills/lark-slides/references/workflow/slides-editing.md +11 -11
  59. package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +2 -0
  60. package/skills/lark-base/references/lark-base-cell-value.md +0 -165
  61. package/skills/lark-base/references/lark-base-data-analysis-pandas.md +0 -93
  62. package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +0 -120
  63. package/skills/lark-base/references/lark-base-record-batch-create.md +0 -63
  64. package/skills/lark-base/references/lark-base-record-batch-update.md +0 -57
  65. package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +0 -145
@@ -35,6 +35,10 @@ Chat (oc_xxx)
35
35
 
36
36
  ## Important Notes
37
37
 
38
+ ### AppLink and Share Links
39
+
40
+ Prefer CLI-returned links: use `chat_app_link` to open joined conversations, `message_app_link` to open messages, and `share_link` to invite others to groups. If manually building a joined-conversation AppLink, use `https://<applink_host>/client/chat/open?openChatId=<oc_xxx>`, never `chatId=<oc_xxx>` or `lark://...chat_id=<oc_xxx>`.
41
+
38
42
  ### Identity and Token Mapping
39
43
 
40
44
  - `--as user` means **user identity** and uses `user_access_token`. Calls run as the authorized end user, so permissions depend on both the app scopes and that user's own access to the target chat/message/resource.
@@ -60,7 +64,7 @@ The four message-pulling shortcuts (`+messages-mget`, `+chat-messages-list`, `+m
60
64
 
61
65
  ### Card Messages (Interactive)
62
66
 
63
- **Before sending or replying with any `interactive` card (`+messages-send` / `+messages-reply`), you MUST read [`references/card/lark-im-card-create.md`](references/card/lark-im-card-create.md) and follow its workflow.** The card JSON passed to `--msg-type interactive --content` must be the output of that workflow — never hand-write or copy a card payload.
67
+ **Before sending, replying with, or updating any `interactive` card (`+messages-send` / `+messages-reply` / `messages.patch`), you MUST read [`references/card/lark-im-card-create.md`](references/card/lark-im-card-create.md) and follow its workflow.** The card JSON passed to `--msg-type interactive --content` (send/reply) or `messages.patch --data` (update) must be the output of that workflow — never hand-write or copy a card payload.
64
68
 
65
69
  Card messages (`interactive` type) are not yet supported for compact conversion in event subscriptions. The raw event data will be returned instead, with a hint printed to stderr.
66
70
 
@@ -159,6 +163,11 @@ lark-cli im <resource> <method> [flags] # 调用 API
159
163
  - `update` — 设置自己的群昵称。Set or update your own nickname in the chat (self-only). Identity: `user` only (`user_access_token`); `nickname` must be a non-empty string (max 300 bytes). Use DELETE to clear it.
160
164
  - `delete` — 清空自己的群昵称。Clear your own nickname in the chat (self-only). Identity: `user` only (`user_access_token`).
161
165
 
166
+ ### chat.join_requests
167
+
168
+ - `list` — 列出群的待审批入群申请(仅群主/管理员,user_access_token)。List pending join requests for a chat. Identity: `user` only (`user_access_token`); the caller must be the chat owner or an admin. Paginated (`page_size` 1-100); stop on `has_more == false` — `page_token` is returned even on the last page, so paging while it is present never terminates.
169
+ - `handle` — 批量审批入群申请(approve/reject,仅群主/管理员,user_access_token)。Approve or reject pending join requests in bulk (1-50 items, processed in order). Identity: `user` only (`user_access_token`); the caller must be the chat owner or an admin. `results[]` mirrors `items[]` in count and order — check each `result` (`success` / `failed` / `already_handled`); exit 0 does not mean every item succeeded.
170
+
162
171
  ### chat.managers
163
172
 
164
173
  - `add_managers` — 指定群管理员。Identity: supports `user` and `bot`; only the group owner can add managers; max 10 managers per chat (20 for super-large chats), and at most 5 bots per request.
@@ -176,6 +185,7 @@ lark-cli im <resource> <method> [flags] # 调用 API
176
185
  - `forward` — 转发消息。Identity: supports `user` and `bot`.
177
186
  - `merge_forward` — 合并转发消息。Identity: `bot` only (`tenant_access_token`).
178
187
  - `read_users` — 查询消息已读信息。Identity: supports `user` and `bot`; the caller must still be in the chat. A user can query messages they sent within the last 7 days, while a bot can query only messages sent by that bot within the last 7 days.[Must-read](references/lark-im-message-read-status.md)
188
+ - `patch` — 更新已发送的消息卡片。Update an interactive message card sent by the app. Identity: supports `user` and `bot`; the message must have been sent within the last 14 days, and `content` must be a JSON-serialized string no larger than 30 KB.[Must-read](references/card/lark-im-card-create.md)
179
189
  - `urgent_app` — 发送应用内加急。Identity: `bot` only (`tenant_access_token`); the bot must be the message sender and must be in the conversation that contains the message.
180
190
  - `urgent_phone` — 发送电话加急。Identity: `bot` only (`tenant_access_token`); the bot must be the message sender and must be in the conversation that contains the message.
181
191
  - `urgent_sms` — 发送短信加急。Identity: `bot` only (`tenant_access_token`); the bot must be the message sender and must be in the conversation that contains the message.
@@ -232,6 +242,8 @@ lark-cli im <resource> <method> [flags] # 调用 API
232
242
  | `chat.managers.delete_managers` | `im:chat.managers:write_only` |
233
243
  | `chat.moderation.get` | `im:chat.moderation:read` |
234
244
  | `chat.moderation.update` | `im:chat:moderation:write_only` |
245
+ | `chat.join_requests.list` | `im:chat.membership_application:read` |
246
+ | `chat.join_requests.handle` | `im:chat.membership_application:write` |
235
247
  | `+messages-read-status` | user: `im:message:readonly` (recommended), `im:message`, or `im:message:get_as_user` |
236
248
  | `+message-read-users` | user: `im:message:readonly` (recommended), `im:message`, `im:message:basic`, or `im:message:get_as_user`; bot: `im:message:readonly` |
237
249
  | `messages.read_status` | `im:message:readonly` (recommended), `im:message`, or `im:message:get_as_user` |
@@ -239,6 +251,7 @@ lark-cli im <resource> <method> [flags] # 调用 API
239
251
  | `messages.forward` | `im:message` |
240
252
  | `messages.merge_forward` | `im:message` |
241
253
  | `messages.read_users` | user: `im:message:readonly` (recommended), `im:message`, `im:message:basic`, or `im:message:get_as_user`; bot: `im:message:readonly` |
254
+ | `messages.patch` | `im:message:update` |
242
255
  | `messages.urgent_app` | `im:message.urgent` |
243
256
  | `messages.urgent_phone` | `im:message.urgent:phone` |
244
257
  | `messages.urgent_sms` | `im:message.urgent:sms` |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: lark-markdown
3
3
  version: 1.2.2
4
- description: "飞书 Markdown:查看、创建、上传、编辑和比较 Markdown 文件。当用户需要创建或编辑 Markdown 文件、读取、修改、局部 patch 或比较差异时使用。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。"
4
+ description: "飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。"
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["lark-cli"]
@@ -105,8 +105,8 @@ lark-cli vc +meeting-events --as <source_identity> --meeting-id <meeting_id> --p
105
105
  - [查询妙记及其产物](scenes/query-minutes-and-artifacts.md):已有妙记 URL / `minute_token`,或按标题、所有者、参与者搜索妙记;读取总结、待办、章节、关键词、逐字稿,下载原始音视频,或查询关联智能纪要。
106
106
  - [生成和修改妙记、管理妙记权限](scenes/create-and-edit-minutes.md):将本地音视频生成妙记、逐字稿、总结、待办或章节;修改妙记标题、总结、待办、关键词或说话人;申请妙记权限,或查看、分配妙记协作者权限。
107
107
  - [查询智能纪要及关联产物](scenes/query-note-and-artifacts.md):已有 `note_id`、智能纪要 Docx URL/token,或需要查询纪要正文、逐字稿、妙记和共享文档等关联产物。
108
- - [应用机器人参会与会中互动](scenes/live-meeting-attend.md):完整编排应用机器人的活跃会议发现、真实入会、事件拉取、文本/表情互动和明确授权后的离会。
109
- - [会中事件与会中互动](scenes/live-meeting-interact.md):在不触发新的入会/离会操作时,使用用户身份或已在会中的应用身份查询活跃会议、查看发言/聊天/共享内容,或发送文本和表情。
108
+ - [应用机器人参会与会中互动](scenes/live-meeting-attend.md):完整编排应用机器人的活跃会议发现、发起或加入、邀请、事件拉取、会议截图、文本/表情/倒计时互动、结束会议和明确授权后的离会。
109
+ - [会中事件与会中互动](scenes/live-meeting-interact.md):在不触发新的入会/离会操作时,使用用户身份或已在会中的应用身份查询活跃会议、查看发言/聊天/共享内容、按需读取当前会议画面,或发送文本/表情、操作倒计时。
110
110
 
111
111
  ## 命令参考
112
112
 
@@ -119,7 +119,11 @@ lark-cli vc +meeting-events --as <source_identity> --meeting-id <meeting_id> --p
119
119
  | `vc +meeting-list-active` | 发现当前可见的进行中会议 | [lark-vc-meeting-list-active](references/lark-vc-meeting-list-active.md) |
120
120
  | `vc +meeting-events` | 读取会中事件和共享内容 | [lark-vc-meeting-events](references/lark-vc-meeting-events.md) |
121
121
  | `vc +meeting-message-send` | 发送会中文本消息或表情 | [lark-vc-meeting-message-send](references/lark-vc-meeting-message-send.md) |
122
+ | `vc +meeting-screenshot` | 获取视频会议截图 | [lark-vc-meeting-screenshot](references/lark-vc-meeting-screenshot.md) |
123
+ | `vc +meeting-countdown` | 设置、延长、提前结束或关闭会中倒计时 | [lark-vc-meeting-countdown](references/lark-vc-meeting-countdown.md) |
122
124
  | `vc +meeting-join` | 让应用机器人加入会议 | [lark-vc-agent-meeting-join](references/lark-vc-agent-meeting-join.md) |
125
+ | `vc +meeting-invite` | 以应用机器人邀请指定用户或全部合格日程参会人 | [lark-vc-agent-meeting-invite](references/lark-vc-agent-meeting-invite.md) |
126
+ | `vc +meeting-end` | 让当前 Host 应用机器人结束会议 | [lark-vc-agent-meeting-end](references/lark-vc-agent-meeting-end.md) |
123
127
  | `vc +meeting-leave` | 让应用机器人离开会议 | [lark-vc-agent-meeting-leave](references/lark-vc-agent-meeting-leave.md) |
124
128
  | `minutes +search` | 搜索妙记 | [lark-minutes-search](references/lark-minutes-search.md) |
125
129
  | `minutes minutes get` | 查询妙记基础信息 | `lark-cli minutes minutes get --help` |
@@ -112,6 +112,7 @@ lark-cli minutes +summary --minute-token obcnxxxxxxxxxxxxxxxxxxxx --summary @sum
112
112
  | 总结展示为原始 Markdown 文本 | — | 总结含链接、四级标题等妙记端无法渲染的语法 | 改用标题(#~###)、加粗、列表等可展示格式;接口不会因此报错 |
113
113
  | 参数无效 | — | `minute_token` 缺失或格式错误 | 检查 token 是否完整 |
114
114
  | 权限不足 | — | 缺少 `minutes:minutes:update` | 运行 `auth login --scope "minutes:minutes:update"` |
115
+ | `error.subtype` = `quota_exceeded` | 2091008 | 该妙记生成时 ASR/AI 额度已用尽,AI 总结未完整生成,替换无法落库 | 让用户去该妙记详情页查看额度详细信息;CLI 无法补充额度,重试不会成功 |
115
116
 
116
117
  ## 相关场景
117
118
  - [生成和修改妙记](../scenes/create-and-edit-minutes.md)
@@ -38,6 +38,9 @@ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation delet
38
38
 
39
39
  # 预览
40
40
  lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add --todo "新待办" --is-done --dry-run --as user
41
+
42
+ # 新增待办并指定负责人(负责人以内联 @ 提及写进 --todo 内容,这是妙记待办表示归属的既定写法)
43
+ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add --todo "跟进预算审批 @张三" --is-done=false --as user
41
44
  ```
42
45
 
43
46
  ## 参数
@@ -94,7 +97,41 @@ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add -
94
97
 
95
98
  `content` **不是 Markdown**,请直接传入待办描述文字。
96
99
 
97
- ### 3. 所需权限
100
+ ### 3. 负责人 / `@` 提及(既定写法,必读)
101
+
102
+ 用户说"负责人是某某"时,既定写法是把负责人以内联 `@某某` 追加进 `--todo` 内容:
103
+
104
+ - 用户已经直接给出姓名时(例如"负责人是张三"),**不做任何查找**,原文原样拼进 `--todo` 内容,写成纯文本 `@张三`(`--todo "xxx @张三"`)。
105
+ - 用户说"负责人是我"时,**必须**先取当前登录用户的真实姓名再拼接,禁止直接写成字面的 `@我`:
106
+ - 执行 `lark-cli contact +get-user --as user`,取返回中的姓名字段作为真实姓名,拼成 `--todo "xxx @<真实姓名>"`。
107
+ - 如果这一步失败或取不到姓名(无权限、报错等),**不要**写任何 `@` 提及占位——直接用不带负责人后缀的原始待办文本创建(`--todo "xxx"`),不要保留字面的 `@我`。
108
+ - **不要**因为要处理负责人而改路由到 [lark-task](../../lark-task/SKILL.md) 或做进一步的通讯录搜索——第一优先级永远是落地这条待办;姓名解析只影响追加的 `@` 文本,绝不能阻塞或取消待办创建。
109
+ - **不要**用"创建者是谁 / 以什么身份创建"来代替 `@` 提及——创建时用的 `--as user`/`--as bot` 身份和"负责人"是两件不相关的事,即使已知当前用户真实姓名,也必须把它拼进 `content` 文本,不能只在回复里用"以你的身份创建即归属于你"这类说法搪塞。
110
+ - 回复里**不要**主动提及或建议改用 `lark-task` 作为"想要明确负责人/可指派任务"的替代方案——用户说的负责人只是这条妙记待办里的一段文本,和 Task 完全无关,不要引入 Task 增加用户困惑。
111
+ - 内联 `@` 是妙记待办表示负责人的既定写法。回复只陈述结果(妙记、待办内容、负责人、完成状态),**不要**出现"接口只支持 content 和 is_done""没有独立的负责人字段""所以只能把负责人写进内容里"这类实现限制说明或解释性免责。
112
+
113
+ **结果示例**:
114
+
115
+ ```bash
116
+ # 姓名解析成功
117
+ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add --todo "跟进预算审批 @王小明" --is-done=false --as user
118
+
119
+ # "我"解析失败:不写 @ 提及,仅保留原始内容
120
+ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add --todo "跟进预算审批" --is-done=false --as user
121
+ ```
122
+
123
+ ```json
124
+ {
125
+ "minute_token": "obcnxxxxxxxxxxxxxxxxxxxx",
126
+ "count": 1,
127
+ "updated": true,
128
+ "operation": "add"
129
+ }
130
+ ```
131
+
132
+ 妙记里新增的这条待办的 `content` 字段就是最终拼好的文本本身(`"跟进预算审批 @王小明"` 或解析失败时的 `"跟进预算审批"`);CLI 和这个接口都不会、也不需要把它转换成真正可点击的用户提及。
133
+
134
+ ### 4. 所需权限
98
135
 
99
136
  | 身份 | 所需 scope |
100
137
  |------|-----------|
@@ -120,6 +157,7 @@ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add -
120
157
  | `--todos` 与单条 flags 冲突 | 二选一 |
121
158
  | `todos[i]` 校验失败 | 检查该条 `operation` 与字段组合 |
122
159
  | `error.subtype` = `permission_denied` | **妙记资源无编辑权**:向妙记所有者申请该妙记的编辑/协作权限;**不要**走 `auth login --scope` |
160
+ | `error.subtype` = `quota_exceeded` | **该妙记生成时 ASR/AI 额度已用尽**,AI 待办未完整生成,改待办无法落库:让用户去该妙记详情页查看额度详细信息;CLI 无法补充额度,重试不会成功 |
123
161
  | 缺少 OAuth scope(`error.missing_scopes` 含 `minutes:minutes:update`) | `lark-cli auth login --scope "minutes:minutes:update"` |
124
162
 
125
163
  ## 相关场景
@@ -61,5 +61,11 @@ API 会立即返回 `minute_url`,但妙记可能仍在异步生成中。`minut
61
61
  | `minute_url` | 生成的妙记访问链接 |
62
62
  | `minute_token` | 从 `minute_url` 提取出的妙记 Token,可直接传给 `minutes +detail --minute-tokens` |
63
63
 
64
+ ## 常见错误与排查
65
+
66
+ | 错误现象 | 错误码 | 根本原因 | 解决方案 |
67
+ |---------|--------|---------|---------|
68
+ | `error.subtype` = `quota_exceeded` | 2091008 | ASR/AI 额度已用尽,不足以转写这个音视频,妙记未创建 | 让用户去妙记详情页查看额度详细信息;CLI 无法补充或提升额度,重试同一个 `--file-token` 不会成功 |
69
+
64
70
  ## 相关场景
65
71
  - [生成和修改妙记](../scenes/create-and-edit-minutes.md)
@@ -0,0 +1,26 @@
1
+ # vc +meeting-end
2
+
3
+ 当前 Host 应用 Bot 结束会议。
4
+
5
+ ```bash
6
+ lark-cli vc +meeting-end --as bot --meeting-id 7628568141510692381 --yes
7
+ lark-cli vc +meeting-end --as bot --meeting-id 7628568141510692381 --dry-run
8
+ ```
9
+
10
+ 正常执行必须显式传入 `--yes`;`--dry-run` 不会结束会议。
11
+
12
+ ## 参数
13
+
14
+ | 参数 | 必填 | 说明 |
15
+ | --- | --- | --- |
16
+ | `--meeting-id` | 是 | 长数字 Meeting ID,不是 9 位会议号。 |
17
+
18
+ 仅支持应用身份,调用 `POST /open-apis/vc/v1/bots/end`;仅当前 Host Bot 可结束进行中的会议。
19
+
20
+ 所需应用 Scope:`vc:meeting.bot.manage:write`。
21
+
22
+ ## 常见失败原因
23
+
24
+ - 当前应用 Bot 不在会议中:先使用同一应用 Bot 发起或加入该 Calendar 会议,再执行结束。
25
+ - 应用 Bot 在会中但不是当前 Host:将 Host 转交给该 Bot,或由当前 Host/Owner 结束会议。
26
+ - 会议未启用 Agent 会议能力:确认会议设置及会议 Owner 的必要灰度开关。
@@ -0,0 +1,32 @@
1
+ # vc +meeting-invite
2
+
3
+ 通过 Agent Bot API 邀请指定用户,或一键邀请符合条件的 Calendar 参会人。
4
+
5
+ ```bash
6
+ lark-cli vc +meeting-invite --as bot --meeting-id 7628568141510692381 --type SELECTED --open-ids ou_xxx,ou_yyy
7
+ lark-cli vc +meeting-invite --as bot --meeting-id 7628568141510692381 --type ALL_SUGGESTED
8
+ lark-cli vc +meeting-invite --as bot --meeting-id 7628568141510692381 --type ALL_SUGGESTED --dry-run
9
+ ```
10
+
11
+ ## 参数
12
+
13
+ | 参数 | 必填 | 说明 |
14
+ | --- | --- | --- |
15
+ | `--meeting-id` | 是 | 长数字 Meeting ID,不是 9 位会议号。 |
16
+ | `--type` | 是 | `SELECTED` 或 `ALL_SUGGESTED`,大小写不敏感。 |
17
+ | `--open-ids` | `SELECTED` 时必填 | 用户 `open_id`(`ou_xxx`),支持逗号分隔或重复传入,最多 200 个;`ALL_SUGGESTED` 时不得传入。 |
18
+
19
+ 该 shortcut 仅支持 bot 身份,调用 `POST /open-apis/vc/v1/bots/invite`。
20
+
21
+ - `SELECTED` 显式发送用户 `open_id`;本地会在请求前拒绝超过 200 个 ID 的输入。
22
+ - `ALL_SUGGESTED` 只发送邀请类型。服务端根据 Calendar 状态解析一键邀请候选集,并应用 200 人上限。
23
+ - 请求契约:`SELECTED` 发送 `invite_type=2`、`invitees=[{"id":"ou_xxx","user_type":1}]` 和查询参数 `user_id_type=open_id`;`ALL_SUGGESTED` 发送 `invite_type=1` 且省略 `invitees`。
24
+ - 返回契约:`SELECTED` 可返回显式受邀人的 `invite_results`;CLI 会按响应 `id` 展示每项 `invited` 或 `failed` 状态。`ALL_SUGGESTED` 仅返回聚合字段,不返回逐用户 `invite_results`。
25
+ - `ALL_SUGGESTED` 的 `has_more=true` 表示候选人超过服务端单次 200 人上限,不是可翻页信号。该接口没有 continuation 或 `page_token`;CLI 会显示截断提示而不输出 `has_more`。
26
+
27
+ ## 权限与前置条件
28
+
29
+ - 目标必须是 Calendar VC 会议,且应用 Bot 已在会中。
30
+ - Agent Invite 依赖会议的 Agent 加入能力。日程未开启 AI/Agent 会议设置时,邀请请求会失败。
31
+ - 仅包含一名受邀人的 `SELECTED` 复用普通单点邀请策略,普通会中参会人也可能有权邀请该用户。
32
+ - `ALL_SUGGESTED` 和多用户 `SELECTED` 使用批量/建议列表邀请策略。实际调用时 Bot 应为当前 host 或 co-host;普通参会 Bot 可能没有批量邀请权限。
@@ -12,6 +12,9 @@
12
12
  ```bash
13
13
  # 仅指定会议号(无密码)
14
14
  lark-cli vc +meeting-join --as bot --meeting-number 123456789
15
+
16
+ # 发起日程会议(仅应用身份)
17
+ lark-cli vc +meeting-join --as bot --meeting-number 123456789 --action start
15
18
  ```
16
19
 
17
20
  ## 参数
@@ -21,6 +24,7 @@ lark-cli vc +meeting-join --as bot --meeting-number 123456789
21
24
  | `--meeting-number <no>` | 是 | 会议号,必须为 **9 位纯数字** |
22
25
  | `--password <pw>` | 否 | 会议密码,仅在该会议设置了入会密码时传入 |
23
26
  | `--call-id <id>` | 否 | 从 `vc.bot.meeting_invited_v1` 邀请事件透传的 `call_id`,原样回传即可。Agent 主动入会或无邀请事件来源时不传 |
27
+ | `--action join\|start` | 否 | 默认 `join`,保持普通入会链路;`start` 是日程发起专属参数,用同一 `bots/join` API 发起会议,且必须 `--as bot` |
24
28
  | `--dry-run` | 否 | 预览 API 调用,不实际加入会议;会议号或身份不确定时先用它确认请求 |
25
29
 
26
30
  ## 核心约束
@@ -29,6 +33,8 @@ lark-cli vc +meeting-join --as bot --meeting-number 123456789
29
33
 
30
34
  这是应用机器人入会能力,使用 `--as bot`。不要用当前登录用户身份尝试让应用机器人入会。
31
35
 
36
+ 默认 `join` 不会向请求体写入 `action` 字段,也不进入日程发起筛选。`--action start` 才写入 `action: 2`,单独进入日程发起的筛选与校验。
37
+
32
38
  ### 2. 会议号格式严格校验
33
39
 
34
40
  `--meeting-number` 必须是 9 位纯数字,否则本地校验直接报错:
@@ -40,7 +46,7 @@ lark-cli vc +meeting-join --as bot --meeting-number 123456789
40
46
 
41
47
  ### 3. 会议必须已开始且允许入会
42
48
 
43
- - 会议必须处于**进行中**状态,应用机器人无法加入尚未开始或已结束的会议。
49
+ - `--action join` 要求会议处于**进行中**状态;`--action start` 用于启动符合条件的日程会议。
44
50
  - 若会议设置了**等候室 / 入会审批**,应用机器人可能需要主持人放行后才真正入会。
45
51
  - 若返回 `HTTP 403: no permission`(错误码 `121003`),不要只理解成“账号没权限”。这类报错更常见的原因是:会议参数或会控配置当前不满足入会条件,例如会议号填错、密码未传或错误、会议尚未开始、等候室 / 入会审批未放行、会议禁止外部/特定身份加入等。应先确认这些配置项,再重试。
46
52
 
@@ -75,7 +81,7 @@ lark-cli vc +meeting-join --as bot --meeting-number 123456789
75
81
  |---------|---------|---------|
76
82
  | `--meeting-number must be exactly 9 digits` | 会议号不是 9 位纯数字 | 检查是否误传了会议链接或 meeting_id |
77
83
  | 会议密码错误 | `--password` 错误或未提供 | 向主持人确认会议密码 |
78
- | 会议不存在 / 已结束 | 会议号错误或会议未进行中 | 确认会议正在进行中 |
84
+ | 会议不存在 / 已结束 | 会议号错误或会议未进行中 | 确认会议正在进行中;启动日程会议时改用 `--action start` |
79
85
  | `HTTP 403: no permission` / `121003` | 入会前置条件不满足,通常不是单纯 scope 问题 | 依次确认:1)会议允许智能体加入;2)会议号正确;3)如有密码,已正确传入 `--password`;4)会议已开始;5)等候室 / 入会审批已放行;6)会议未禁止当前身份加入(如限制外部、限制应用机器人、仅特定成员可入会);确认后重试 |
80
86
  | 应用身份权限不足 | 应用权限、租户安装或权限可访问的数据范围未配置完整 | 不要执行 `auth login`。以 CLI 返回的 metadata / error envelope 为准确认缺失权限;检查应用发布/安装,以及开放平台“权限可访问的数据范围”:选择“按条件筛选”,条件为“会议的归属者 包含 与应用的可用范围一致”;配置正确仍失败时,保留错误码和 `log_id`,按服务端权限异常排查 |
81
87
  | 入会被拒绝 | 等候室 / 入会审批 / 限制外部入会 | 联系主持人放行或调整会议设置 |
@@ -0,0 +1,103 @@
1
+ # vc +meeting-countdown
2
+
3
+ 设置、延长、提前结束或关闭会中倒计时窗口。
4
+
5
+ 本 skill 对应 shortcut:`lark-cli vc +meeting-countdown`(调用 `POST /open-apis/vc/v1/bots/countdown`)。
6
+
7
+ ## 适用场景
8
+
9
+ - 用户要求在正在进行中的会议里设置倒计时,例如“设置 5 分钟倒计时”。
10
+ - 用户要求延长当前倒计时,例如“再延长 2 分钟”。
11
+ - 用户要求提前结束或关闭当前倒计时。
12
+ - 只用于正在进行中的会议;已结束会议不支持。
13
+
14
+ ## 身份规则
15
+
16
+ `meeting_id` 从哪种身份路径拿到,操作倒计时时就沿用哪种身份:
17
+
18
+ | meeting_id 来源 | 操作时身份 |
19
+ | --- | --- |
20
+ | `+meeting-list-active --as user` | `+meeting-countdown --as user` |
21
+ | `+meeting-list-active --as bot --user-id <user_open_id>` | `+meeting-countdown --as bot` |
22
+ | `+meeting-join --as bot` 返回的 `meeting.id` | `+meeting-countdown --as bot` |
23
+
24
+ 不要把用户身份发现的 `meeting_id` 改用应用身份操作,也不要把应用身份发现的 `meeting_id` 改用用户身份操作,除非用户明确要求切换。
25
+
26
+ ## 参数
27
+
28
+ | 参数 | 说明 |
29
+ | --- | --- |
30
+ | `--meeting-id` | 必填,长数字 `meeting_id`,不是 9 位会议号 |
31
+ | `--action` | 必填,`set`、`prolong`、`end_in_advance` 或 `close_window` |
32
+ | `--duration` | 倒计时时长,单位是分钟;`set` 和 `prolong` 必填 |
33
+ | `--need-play-audio-at-end` | 仅 `set` 可用,表示倒计时结束时播放提示音 |
34
+ | `--reminder-before-end` | 仅 `set` 可用,提醒点单位是分钟;只支持传一个值 |
35
+
36
+ `duration` 和 `reminder_before_end` 都是分钟;提醒时间必须大于 0 且小于 `duration`。
37
+
38
+ ## 设置倒计时
39
+
40
+ ```bash
41
+ lark-cli vc +meeting-countdown --as user \
42
+ --meeting-id <meeting_id> \
43
+ --action set \
44
+ --duration 5 \
45
+ --need-play-audio-at-end \
46
+ --reminder-before-end 1
47
+ ```
48
+
49
+ Dry-run 请求体示例:
50
+
51
+ ```json
52
+ {
53
+ "meeting_id": "<meeting_id>",
54
+ "action": "set",
55
+ "duration": 5,
56
+ "need_play_audio_at_end": true,
57
+ "reminder_before_end": 1
58
+ }
59
+ ```
60
+
61
+ ## 延长倒计时
62
+
63
+ ```bash
64
+ lark-cli vc +meeting-countdown --as bot \
65
+ --meeting-id <meeting_id> \
66
+ --action prolong \
67
+ --duration 2
68
+ ```
69
+
70
+ ## 提前结束或关闭倒计时
71
+
72
+ ```bash
73
+ lark-cli vc +meeting-countdown --as user --meeting-id <meeting_id> --action end_in_advance
74
+ lark-cli vc +meeting-countdown --as user --meeting-id <meeting_id> --action close_window
75
+ ```
76
+
77
+ 提前结束或关闭倒计时窗口时不要传 `--duration`、`--need-play-audio-at-end` 或 `--reminder-before-end`。
78
+
79
+ ## 9 位会议号处理
80
+
81
+ 如果用户给的是 9 位会议号并要求操作倒计时:
82
+
83
+ 1. 先按当前身份执行 `+meeting-list-active`。
84
+ 2. 在返回结果中按 `meeting_no` 匹配该 9 位会议号。
85
+ 3. 匹配到唯一会议后取长数字 `meeting_id`。
86
+ 4. 用发现该会议时的同一身份执行 `+meeting-countdown`。
87
+
88
+ 匹配失败时不要自动入会。只有用户明确要求“让应用机器人入会/旁听/代参会”时,才改用 `+meeting-join`。
89
+
90
+ ## 权限和前置条件
91
+
92
+ - 用户身份:当前用户必须正在该会议中。
93
+ - 应用身份:应用机器人必须正在该会议中。
94
+ - 需要 `vc:meeting.interaction:write` 权限;应用身份还需要应用已安装、数据范围已配置。
95
+
96
+ 应用身份权限错误时,不要引导用户反复 `auth login`。按主 skill 的“应用身份权限配置检查”处理。
97
+
98
+ ## 相关
99
+
100
+ - [lark-vc-meeting-list-active](lark-vc-meeting-list-active.md) — 发现当前进行中会议 ID
101
+ - [lark-vc-meeting-events](lark-vc-meeting-events.md) — 读取会中事件
102
+ - [lark-vc-meeting-message-send](lark-vc-meeting-message-send.md) — 发送会中文本或 reaction
103
+ - [lark-vc-agent-meeting-join](lark-vc-agent-meeting-join.md) — 应用机器人入会
@@ -252,6 +252,7 @@ lark-cli drive +list-replies \
252
252
  | `magic_share_started` | 开始共享内容 / 文档 |
253
253
  | `magic_share_ended` | 结束共享 |
254
254
  | `document_context_changed` | 评论聚焦、章节定位或元素预览上下文变化 |
255
+ | `countdown_changed` | 会中倒计时被设置、延长、提前结束、关闭窗口,或自然结束、临近提醒 |
255
256
 
256
257
  ### Forwarding meeting chat and reactions to IM
257
258
 
@@ -0,0 +1,34 @@
1
+ # `vc +meeting-screenshot`
2
+
3
+ 获取视频会议截图,并保存为 JPEG。
4
+
5
+ ## 常用用法
6
+
7
+ 使用当前用户身份截图,文件写入默认目录:
8
+
9
+ ```bash
10
+ lark-cli vc +meeting-screenshot --as user --meeting-id <long_meeting_id>
11
+ ```
12
+
13
+ 使用机器人身份截图,并指定输出路径:
14
+
15
+ ```bash
16
+ lark-cli vc +meeting-screenshot --as bot --meeting-id <long_meeting_id> --output ./meeting-screenshots/current.jpg
17
+ ```
18
+
19
+ ## 参数
20
+
21
+ | Flag | 含义与用法 |
22
+ | --- | --- |
23
+ | `--as <identity>` | 选择 `user` 或 `bot` 身份。使用发现 `meeting_id` 时的同一身份:`user` 要求当前用户在会中;`bot` 要求机器人已入会并具备会中读取权限。 |
24
+ | `--meeting-id <meeting_id>` | 必填。长数字会议 ID,不接受 9 位会议号;只有会议号时,先用同一身份调用 `vc +meeting-list-active` 获取。 |
25
+ | `--output <relative-path>` | 可选。指定 JPEG 文件名或包含子目录的相对路径;相对于执行命令时的当前工作目录。 |
26
+ | `--overwrite` | 可选。目标文件已存在时允许替换;不传时命令会失败并保留原文件。 |
27
+
28
+ ## 文件路径与结果
29
+
30
+ - 未指定 `--output` 时,默认写入当前工作目录下的 `meeting-screenshots/<meeting_id>-<UTC timestamp>.jpg`。
31
+ - `--output` 可以只写文件名,也可以包含多级子目录;父目录会自动创建。
32
+ - 不接受绝对路径,也不接受解析后超出当前工作目录的 `..` 或符号链接路径。
33
+ - 成功结果包含绝对文件路径、字节数、JPEG content type、SHA-256 和服务端 `log_id`。
34
+ - 服务端决定截图内容并校验会议是否满足条件;调用方不能指定要截取的区域或共享内容。失败不会替换已有文件。
@@ -48,7 +48,7 @@ lark-cli minutes +detail --minute-tokens <minute_token> --wait-ready --transcrip
48
48
 
49
49
  ## 增删改 AI 待办
50
50
 
51
- 妙记 AI 待办不是飞书任务。上下文包含妙记 URL / `minute_token` 并要求修改妙记待办时,禁止改走 `lark-task`。
51
+ 妙记 AI 待办不是飞书任务。上下文包含妙记 URL / `minute_token` 并要求修改妙记待办时,禁止改走 `lark-task`;用户同时指定了负责人(包括"负责人是我")也不改变归属。
52
52
 
53
53
  ```bash
54
54
  lark-cli minutes +todo --minute-token <token> --operation add|update|delete ... --as user
@@ -58,6 +58,18 @@ lark-cli minutes +todo --minute-token <token> --operation add|update|delete ...
58
58
  - 更新或删除前,先执行 `minutes +detail --minute-tokens <token> --todo --as user`,按内容匹配取得精确 `todo_id`;不要用列表顺序代替 ID。
59
59
  - 待办 ID、批量结构和部分成功语义见 [`lark-minutes-todo`](../references/lark-minutes-todo.md)。
60
60
 
61
+ ### 指定负责人
62
+
63
+ 妙记待办表示负责人的既定写法是把 `@姓名` 作为纯文本写进待办内容,不存在独立的负责人字段:
64
+
65
+ - 用户直接给出姓名时不做任何查找,原文拼成 `@姓名`。
66
+ - 用户说"负责人是我"时,先用 `lark-cli contact +get-user --as user` 取真实姓名再拼接;取不到就不写任何 `@` 提及,不要保留字面的 `@我`。
67
+ - 姓名解析只影响追加的 `@` 文本,绝不能阻塞或取消待办创建;不要为处理负责人改走 `lark-task` 或做进一步通讯录搜索。
68
+ - 不要用"以你的身份创建即归属于你"代替真正的 `@` 文本拼接;`--as` 身份和负责人是两件不相关的事。
69
+ - 回复只陈述结果(妙记、待办内容、负责人、完成状态),不要解释接口字段限制,也不要建议改用 `lark-task` 来"明确负责人"。
70
+
71
+ 完整规则和示例见 [`lark-minutes-todo`](../references/lark-minutes-todo.md) 的「负责人 / `@` 提及」。
72
+
61
73
  ## 批量替换逐字稿关键词
62
74
 
63
75
  ```bash
@@ -66,7 +78,11 @@ lark-cli minutes +word-replace --minute-token <token> --replace-words '[{"source
66
78
 
67
79
  多组替换放在同一个 JSON 数组中。具体参数运行 `lark-cli minutes +word-replace --help`。
68
80
 
69
- 返回 `not_found` 表示 `source_word` 没有命中,是参数问题而不是权限问题;先读取当前 Transcript,核对精确写法和大小写后再决定是否重试。
81
+ 用户给出原词和目标词后直接替换:不要为了核对写法先读取 Transcript,也不要在替换成功后回读 Transcript 验证。接口逐词返回结果,按结果回报即可。
82
+
83
+ 只要有一个关键词命中就是成功:`data.message` 列出 Succeeded 和 Failed 关键词。重试时只提交 Failed 的词,不要重复提交已成功的词,否则会把新词再替换一遍。
84
+
85
+ 全部关键词都没命中才是失败(`not_found`)。这是参数问题而不是权限问题;如实告知用户哪些词没命中,请用户确认精确写法、大小写和空格后再决定是否重试,不要靠读取 Transcript 自行猜词。
70
86
 
71
87
  ## 替换逐字稿说话人
72
88
 
@@ -120,6 +136,12 @@ lark-cli minutes +apply-permission --minute-token <token> --perm view --as <sour
120
136
 
121
137
  `permission_denied` 表示对该妙记没有编辑权,不等于 OAuth scope 缺失;请所有者授权,不要误走 `auth login --scope`。
122
138
 
139
+ ## ASR/AI 额度不足
140
+
141
+ `minutes +upload`、`+summary`、`+todo` 和 `+word-replace` 都可能返回 `quota_exceeded`,表示 ASR/AI 额度已耗尽。`+upload` 是额度不足以转写这个音视频,妙记根本没有创建;其余三个是该妙记生成时额度就已用尽、AI 产物未完整生成,写操作无法落库。
142
+
143
+ 请用户去妙记详情页查看额度详细信息,不要重试:CLI 无法补充或提升额度,重试同样的请求不会成功。这不是权限问题,也不要误走 `+apply-permission` 或 `auth login --scope`。
144
+
123
145
  ## 确认修改结果
124
146
 
125
- 修改前只读取目标相关字段,修改后用 `minutes +detail` 或对应读取接口回读。批量或多步修改逐项报告写前值、写后结果和失败原因;部分成功时不要回滚已成功项,除非命令明确承诺原子回滚。
147
+ 修改前只读取目标相关字段,修改后用 `minutes +detail` 或对应读取接口回读。命令自身已逐项返回写入结果时不再回读,例如 `minutes +word-replace` 的 Succeeded / Failed 关键词。批量或多步修改逐项报告写前值、写后结果和失败原因;部分成功时不要回滚已成功项,除非命令明确承诺原子回滚。
@@ -1,6 +1,6 @@
1
1
  # 应用机器人参会与会中互动
2
2
 
3
- 编排应用机器人的完整会中流程:发现已在参加的会议,或在用户明确授权后真实入会;随后拉取会中事件、发送文本或会中表情,并仅在用户明确要求时离会。
3
+ 编排应用机器人的完整会中流程:发现已在参加的会议,或在用户明确授权后发起或加入会议;随后拉取会中事件、发送文本或会中表情、操作倒计时,并仅在用户明确要求时结束会议或离会。
4
4
 
5
5
  ## 选择入口
6
6
 
@@ -9,6 +9,7 @@
9
9
  | 已有应用身份取得的 `meeting_id` | 直接拉取事件,不重复查询或入会 |
10
10
  | 应用机器人可能已在会中 | 已知目标用户 `user_open_id` 时,先用 `+meeting-list-active --as bot --user-id <user_open_id>` 发现会议 |
11
11
  | 用户明确要求机器人入会、旁听或代参会 | 使用 `+meeting-join --as bot` |
12
+ | 用户明确要求机器人发起日程会议 | 使用 `+meeting-join --as bot --action start` |
12
13
  | 只想查当前用户所在会议 | 使用 [会中事件与会中互动](live-meeting-interact.md) 的用户身份路径,不让应用机器人入会 |
13
14
 
14
15
  用户只提供 9 位会议号或询问会议内容,不等于授权机器人入会。
@@ -24,25 +25,48 @@ lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
24
25
  - 返回多个会议时,展示主题、会议号和 `meeting_id` 让用户选择;不擅自取第一个。
25
26
  - 返回空不代表目标用户没有在开会,只表示没有找到应用机器人也在会中的可见会议。
26
27
  - 用户提供 9 位会议号时,在结果中按 `meeting_no` 匹配;匹配失败时不自动入会。
27
- - 保存选定的长整数 `meeting_id`,后续事件、消息和离会命令都沿用 `--as bot`。
28
+ - 保存选定的长整数 `meeting_id`,后续事件、消息、倒计时和离会命令都沿用 `--as bot`。
28
29
 
29
30
  身份可见范围、多会议选择和会议号匹配见 [`lark-vc-meeting-list-active`](../references/lark-vc-meeting-list-active.md)。
30
31
 
31
- ## 加入会议
32
+ ## 发起或加入会议
32
33
 
33
- 只有用户明确要求应用机器人加入、旁听或代参会时才执行。入会需要 9 位会议号,不是长整数 `meeting_id`。
34
+ 只有用户明确要求应用机器人发起、加入、旁听或代参会时才执行。输入是 9 位会议号,不是长整数 `meeting_id`。
34
35
 
35
36
  ```bash
37
+ # 发起日程会议并加入
38
+ lark-cli vc +meeting-join --as bot --meeting-number <9_digit_meeting_number> --action start
39
+
40
+ # 加入正在进行的会议
36
41
  lark-cli vc +meeting-join --as bot --meeting-number <9_digit_meeting_number>
37
42
  ```
38
43
 
39
44
  - 入会前确认目标会议号和用户意图;这是对其他参会人可见的写操作。
40
- - 保存返回的 `meeting.id`;后续拉取事件、发送会中消息和离会都使用该 ID 与 `--as bot`。
45
+ - `--action start` 仅用于发起符合条件的日程会议;未传时保持加入正在进行的会议。
46
+ - 保存返回的 `meeting.id`;后续邀请、拉取事件、发送会中消息、操作倒计时、结束或离会都使用该 ID 与 `--as bot`。
41
47
  - 应用机器人可以同时加入多场会议;加入新会议前不需要退出其他会议。
42
48
  - 根据返回状态确认入会成功,不要把“请求已发起”当作已入会。
43
49
 
44
50
  会议密码、等候室、写操作风险和异常恢复见 [`lark-vc-agent-meeting-join`](../references/lark-vc-agent-meeting-join.md)。
45
51
 
52
+ ## 邀请参会人
53
+
54
+ 只有用户明确要求邀请时才执行。输入是长数字 `meeting_id`,不是 9 位会议号。
55
+
56
+ ```bash
57
+ # 邀请指定用户
58
+ lark-cli vc +meeting-invite --as bot --meeting-id <meeting_id> --type SELECTED --open-ids <open_id>
59
+
60
+ # 邀请全部合格日程参会人
61
+ lark-cli vc +meeting-invite --as bot --meeting-id <meeting_id> --type ALL_SUGGESTED
62
+ ```
63
+
64
+ - 应用机器人必须已在目标 Calendar VC 中。
65
+ - `SELECTED` 接收用户 `open_id`;`ALL_SUGGESTED` 由服务端筛选合格日程参会人。
66
+ - 以返回结果确认邀请状态,不把请求提交当作参会人已入会。
67
+
68
+ 邀请类型、人数上限和结果语义见 [`lark-vc-agent-meeting-invite`](../references/lark-vc-agent-meeting-invite.md)。
69
+
46
70
  ## 拉取会中事件
47
71
 
48
72
  使用应用身份发现或入会得到的 `meeting_id`:
@@ -77,6 +101,39 @@ lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type
77
101
 
78
102
  文本、reaction 语义、完整 emoji key 和幂等参数见 [`lark-vc-meeting-message-send`](../references/lark-vc-meeting-message-send.md)。
79
103
 
104
+ ## 操作会中倒计时
105
+
106
+ 每次倒计时操作都是对会中参会人可见的写操作。只有用户明确要求设置、延长、提前结束或关闭倒计时时才执行。
107
+
108
+ ```bash
109
+ # 设置倒计时
110
+ lark-cli vc +meeting-countdown --as bot --meeting-id <meeting_id> --action set --duration <minutes>
111
+
112
+ # 延长倒计时
113
+ lark-cli vc +meeting-countdown --as bot --meeting-id <meeting_id> --action prolong --duration <minutes>
114
+ ```
115
+
116
+ - 始终沿用产生 `meeting_id` 的应用身份;不要切换成用户身份。
117
+ - 用户只给 9 位会议号时,先按应用身份活跃会议列表匹配;匹配失败时不要为了倒计时自动入会,除非用户明确要求机器人入会。
118
+ - `end_in_advance` 和 `close_window` 不携带 `--duration`、提醒点或结束音频参数。
119
+ - 操作失败时停止并报告;不自动重试或换身份,避免重复可见副作用。
120
+
121
+ 动作、提醒点和权限规则见 [`lark-vc-meeting-countdown`](../references/lark-vc-meeting-countdown.md)。
122
+
123
+ ## 结束会议
124
+
125
+ 只有用户明确要求结束整场会议时才执行;不要把结束会议和机器人离会混用。
126
+
127
+ ```bash
128
+ lark-cli vc +meeting-end --as bot --meeting-id <meeting_id> --yes
129
+ ```
130
+
131
+ - 输入是长数字 `meeting_id`。
132
+ - 当前应用机器人必须是 Host;结束成功会结束整场会议。
133
+ - 根据返回状态确认会议已结束。
134
+
135
+ 身份、权限和失败原因见 [`lark-vc-agent-meeting-end`](../references/lark-vc-agent-meeting-end.md)。
136
+
80
137
  ## 离开会议
81
138
 
82
139
  只有用户明确要求机器人退出、离开或结束参会时才执行:
@@ -97,7 +154,7 @@ lark-cli vc +meeting-leave --as bot --meeting-id <meeting_id>
97
154
  应用身份返回 `no permission`、`missing required scope(s)` 或 `missing_scopes` 时,不要执行 `auth login`。按顺序检查:
98
155
 
99
156
  1. 按 CLI 错误中的 `hint` 处理;返回 `console_url` 时将其原样提供给用户。
100
- 2. 确认应用已开通对应权限,已发布并安装到当前租户。入会和应用身份会议查询需要 `vc:meeting.bot.join:write`;会中发消息需要 `vc:meeting.message:write`。
157
+ 2. 确认应用已开通对应权限,已发布并安装到当前租户。入会和应用身份会议查询需要 `vc:meeting.bot.join:write`;会中发消息需要 `vc:meeting.message:write`;会中倒计时需要 `vc:meeting.interaction:write`。
101
158
  3. 在开放平台确认“权限可访问的数据范围”已保存为“按条件筛选”,条件为“会议的归属者 包含 与应用的可用范围一致”。
102
159
  4. 上述配置均正确仍失败时,保留 CLI 返回的错误码和 `log_id`,按服务端权限异常排查;不要反复登录或改用其他身份重试。
103
160