@amaster.ai/pi-lark 0.1.9 → 0.1.10
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 +1 -3
- package/package.json +2 -2
- package/skills/lark-apps/SKILL.md +1 -1
- package/skills/lark-apps/references/lark-apps-cache.md +38 -5
- package/skills/lark-base/SKILL.md +23 -6
- package/skills/lark-base/references/lark-base-app.md +18 -0
- package/skills/lark-base/references/lark-base-dashboard-block-config.md +28 -1
- package/skills/lark-base/references/lark-base-dashboard.md +29 -11
- package/skills/lark-base/references/lark-base-field-schema.md +10 -1
- package/skills/lark-base/references/lark-base-form-questions-create.md +36 -5
- package/skills/lark-base/references/lark-base-record-history-list.md +19 -2
- package/skills/lark-base/references/lark-base-template-center.md +195 -0
- package/skills/lark-calendar/SKILL.md +9 -6
- package/skills/lark-calendar/references/lark-calendar-transfer.md +89 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +1 -1
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -2
- package/skills/lark-im/SKILL.md +8 -2
- package/skills/lark-im/references/lark-im-message-read-status.md +96 -0
- package/skills/lark-mail/references/lark-mail-draft-create.md +12 -12
- package/skills/lark-mail/references/lark-mail-forward.md +17 -17
- package/skills/lark-mail/references/lark-mail-reply-all.md +8 -8
- package/skills/lark-mail/references/lark-mail-reply.md +6 -6
- package/skills/lark-mail/references/lark-mail-send.md +20 -20
- package/skills/lark-mail/references/lark-mail-template-create.md +7 -6
- package/skills/lark-mail/references/lark-mail-template-update.md +7 -6
- package/skills/lark-meeting/SKILL.md +146 -0
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-apply-permission.md +2 -5
- package/skills/lark-meeting/references/lark-minutes-detail.md +52 -0
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-download.md +4 -6
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-search.md +4 -34
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-speaker-replace.md +3 -4
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-summary.md +2 -5
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-todo.md +5 -15
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-update.md +2 -3
- package/skills/lark-meeting/references/lark-minutes-upload.md +65 -0
- package/skills/lark-meeting/references/lark-note-detail.md +15 -0
- package/skills/lark-meeting/references/lark-note-transcript.md +19 -0
- package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-join.md +4 -55
- package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-leave.md +2 -41
- package/skills/lark-meeting/references/lark-vc-detail.md +31 -0
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-events.md +8 -98
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-list-active.md +4 -29
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-message-send.md +3 -5
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-recording.md +4 -65
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-search.md +9 -28
- package/skills/lark-meeting/scenes/create-and-edit-minutes.md +125 -0
- package/skills/lark-meeting/scenes/live-meeting-attend.md +107 -0
- package/skills/lark-meeting/scenes/live-meeting-interact.md +72 -0
- package/skills/lark-meeting/scenes/query-meeting-and-artifacts.md +90 -0
- package/skills/lark-meeting/scenes/query-minutes-and-artifacts.md +70 -0
- package/skills/lark-meeting/scenes/query-note-and-artifacts.md +127 -0
- package/skills/lark-minutes/SKILL.md +5 -203
- package/skills/lark-note/SKILL.md +5 -88
- package/skills/lark-shared/SKILL.md +25 -224
- package/skills/lark-shared/references/lark-shared-config-init.md +12 -0
- package/skills/lark-shared/references/lark-shared-high-risk-approval.md +38 -0
- package/skills/lark-shared/references/lark-shared-identity-and-permissions.md +105 -0
- package/skills/lark-shared/references/lark-shared-output-contract.md +17 -0
- package/skills/lark-shared/references/lark-shared-update-notice.md +23 -0
- package/skills/lark-slides/SKILL.md +2 -0
- package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +101 -14
- package/skills/lark-task/SKILL.md +1 -1
- package/skills/lark-vc/SKILL.md +5 -205
- package/skills/lark-vc-agent/SKILL.md +5 -206
- package/skills/lark-workflow-meeting-summary/SKILL.md +20 -13
- package/skills/lark-minutes/references/lark-minutes-detail.md +0 -63
- package/skills/lark-minutes/references/lark-minutes-upload.md +0 -104
- package/skills/lark-note/references/lark-note-detail.md +0 -29
- package/skills/lark-note/references/lark-note-transcript.md +0 -25
- package/skills/lark-vc/references/lark-vc-detail.md +0 -49
- package/skills/lark-vc/references/vc-domain-boundaries.md +0 -203
|
@@ -1,216 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-vc-agent
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "
|
|
4
|
+
description: "仅当用户或上游配置显式指定 lark-vc-agent 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
8
|
-
|
|
8
|
+
skills: ["lark-meeting"]
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
# Compatibility entry
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
本技能只用于兼容旧名称,不直接处理业务。
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- [`../lark-vc/SKILL.md`](../lark-vc/SKILL.md) — 视频会议的核心概念(Meeting / Note / Minutes 等),本 skill 直接复用,不再重复定义
|
|
17
|
-
|
|
18
|
-
## 内测提示
|
|
19
|
-
|
|
20
|
-
- 当前功能正在内测中,仅少数用户可用。忽略 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 中的权限申请流程,以下方的指引为准。
|
|
21
|
-
- 如果 `lark-cli` 提示 `missing required scope(s)` / `missing_scopes`,不要走普通权限申请流程;先提示用户加入早鸟群确认内测权限已开通,再按“应用身份权限配置检查”处理应用权限、安装和数据范围。
|
|
22
|
-
- 如果 `lark-cli` 返回 `error.code=20017` / `ErrNotInGray`,提示用户加入早鸟群:`https://go.larkoffice.com/join-chat/2f4nb0e1-fe00-4f67-bed7-25beaf533fbd`。
|
|
23
|
-
|
|
24
|
-
## 会议查询权限
|
|
25
|
-
|
|
26
|
-
`+meeting-list-active` 和 `+meeting-events` 缺少权限时,先按上面的内测提示确认功能已开通,再读取 CLI 错误中的 `hint`,并根据当前调用身份处理:
|
|
27
|
-
|
|
28
|
-
- 用户身份 `--as user`:按 CLI 提示为当前用户授权 `vc:meeting.meetingevent:read`。
|
|
29
|
-
- 应用身份 `--as bot`:请应用开发者开通 `vc:meeting.bot.join:write`,不要执行 `auth login`;随后按“应用身份权限配置检查”确认应用发布、安装和数据范围。
|
|
30
|
-
|
|
31
|
-
## 定位
|
|
32
|
-
|
|
33
|
-
本 skill 与 [`lark-vc`](../lark-vc/SKILL.md) 并列:
|
|
34
|
-
|
|
35
|
-
- **`lark-vc`** **负责会议查询和共享会中能力**:发现进行中会议、读取事件、发送消息,以及搜索历史会议、查询参会人快照和会议产物
|
|
36
|
-
- **`lark-vc-agent`** **负责应用机器人会中编排**:真实入会 / 离会,并复用上述共享能力读取事件或发送消息
|
|
37
|
-
|
|
38
|
-
按此分工路由,避免两个 skill 语义混淆。
|
|
39
|
-
|
|
40
|
-
| 用户意图示例 | 应路由到 |
|
|
41
|
-
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
42
|
-
| "帮我入会 123456789"、"代我参会"、"让机器人进会旁听" | **本 skill** `+meeting-join` |
|
|
43
|
-
| "会议现在还开着,谁刚加入了"、"会议里谁在发言"、"有人共享屏幕吗"(**进行中会议**) | **本 skill** `+meeting-events` |
|
|
44
|
-
| "我/某个用户现在在哪个会里"、"给我找当前可拉事件的 meeting_id" | **本 skill** `+meeting-list-active` |
|
|
45
|
-
| "在会里发一句 xx"、"提示大家 xx"、"反馈听不到/看不到/声音清楚/效果不错"(**进行中会议**) | **本 skill** `+meeting-message-send` |
|
|
46
|
-
| "退出会议"、"让机器人离开" | **本 skill** `+meeting-leave` |
|
|
47
|
-
| "昨天那场会有谁参加过"、"搜昨天的会"、"查纪要/逐字稿/录制" | [`lark-vc`](../lark-vc/SKILL.md) |
|
|
48
|
-
| "帮我参会,结束后把纪要发到群" 等跨阶段场景 | 按序编排:本 skill(入会 → 读事件)→ 会议结束后用 [`lark-vc`](../lark-vc/SKILL.md) / [`lark-minutes`](../lark-minutes/SKILL.md) 拉纪要 → [`lark-im`](../lark-im/SKILL.md) 发群 |
|
|
49
|
-
|
|
50
|
-
## 身份路由
|
|
51
|
-
|
|
52
|
-
不要向用户暴露内部身份缩写;对用户只说“用户身份”或“应用身份”。
|
|
53
|
-
|
|
54
|
-
| 场景 | 使用身份 | 关键规则 |
|
|
55
|
-
| ---- | -------- | -------- |
|
|
56
|
-
| 查询当前登录用户正在参加的会议 | `--as user` | 不传 `--user-id`;拿到的 `meeting_id` 后续继续用 `--as user` 读事件 |
|
|
57
|
-
| 查询目标用户且应用机器人也在会中的会议 | `--as bot --user-id <user_open_id>` | `--user-id` 必须是 `ou_...`;拿到的 `meeting_id` 后续继续用 `--as bot` 读事件 |
|
|
58
|
-
| 用户明确要求应用机器人入会/旁听/代参会 | `--as bot` | 这是写操作,会真实产生入会记录;返回的 `meeting.id` 后续继续用 `--as bot` |
|
|
59
|
-
|
|
60
|
-
硬规则:`meeting_id` 从哪种身份路径拿到,后续 `+meeting-events` / `+meeting-message-send` 就沿用哪种身份,除非用户明确要求切换场景(例如从“仅查询我当前会”改成“让应用机器人入会旁听”)。
|
|
61
|
-
|
|
62
|
-
## 核心场景
|
|
63
|
-
|
|
64
|
-
### 1. 加入正在进行的会议(写操作)
|
|
65
|
-
|
|
66
|
-
1. 只有用户明确表达"让 Agent **真实入会**"(参会机器人、会中助手、代为旁听、代参会)时才用 `+meeting-join`。只是查数据不要入会。
|
|
67
|
-
2. `+meeting-join --meeting-number` 只接受 **9 位纯数字**会议号,不是会议链接整串、也不是 `meeting_id`。如果用户只是给了 9 位会议号并询问会中内容,先按 `+meeting-list-active` 的会议号匹配流程找 `meeting_id`,不要直接入会。
|
|
68
|
-
3. 返回体中的 `meeting.id` **必须立刻记录**——后续 `+meeting-events` / `+meeting-leave` 都靠它,**不能用 9 位会议号替代**。
|
|
69
|
-
4. 入会对所有参会人可见,执行前核实 9 位会议号来源,避免误入错会。
|
|
70
|
-
5. 使用应用身份 `--as bot` 执行真实入会;不要用当前登录用户身份尝试让应用机器人入会。
|
|
71
|
-
6. 若入会失败,优先查看 `+meeting-join` reference 的错误排查段落,重点确认会议号、密码、会议状态、等候室 / 审批以及会议是否禁止当前身份加入。
|
|
72
|
-
|
|
73
|
-
### 2. 感知会中事件(读操作)
|
|
74
|
-
|
|
75
|
-
1. 用户要看"会议里正在发生什么"(参会人加入/离开、聊天、转写、屏幕共享)时,用 `+meeting-events`。
|
|
76
|
-
2. 输入是 **`meeting_id`**(长数字 ID),不是 9 位会议号。
|
|
77
|
-
3. 不依赖默认身份。`meeting_id` 来自用户身份发现时,继续用 `--as user`;来自应用身份发现或 `+meeting-join` 时,继续用 `--as bot`。身份不一致会导致空结果或权限错误。
|
|
78
|
-
4. **不能做会后复盘**,**不能替代参会人快照查询**。如果会议已结束:
|
|
79
|
-
- 先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息。
|
|
80
|
-
- 再根据 `note_id`、`minute_token` 和用户意图,按 [`lark-vc`](../lark-vc/SKILL.md) 的产物决策读取正文、逐字稿或妙记。
|
|
81
|
-
- 想看参会人快照:用 `vc meeting get --with-participants`(见 [`lark-vc`](../lark-vc/SKILL.md))
|
|
82
|
-
5. **默认必须使用** **`--page-all`**,除非用户明确要求“只查一页”,或确实需要控制返回体大小。
|
|
83
|
-
6. 命令默认输出结构化事件契约:`meeting`、`identity`、`events`、`warnings`、`has_more`、`page_token`;`identity` 表示当前读取身份,事件 actor 含 `participant_type`、`role` 和可读 `label`,事件细节保留在 `payload`。
|
|
84
|
-
7. 输出格式默认优先 `--format pretty`(时间线更易读,并带当前身份标签);需要稳定字段做结构化处理时用 `--format json`;需要流式消费事件时用 `--format ndjson`。
|
|
85
|
-
8. **必须识别分页信号**:只要响应里出现 `has_more=true`、pretty 里的 `more available`,或返回了非空 `page_token`,就不能把当前结果当作完整事件流;默认应继续分页,或明确告诉用户当前只是部分结果。
|
|
86
|
-
9. 保留响应里的 `page_token`,下次增量拉取直接续,不要从头再拉。
|
|
87
|
-
10. **只要你是基于** **`+meeting-events`** **来回答一场正在进行中的会议内容,就不能直接复用旧结果。** 无论用户是在问“现在/刚刚/最新”的状态,还是让你“总结一下这个会议讲什么”,都必须先重新拉一次当前事件流,确认拿到的是最新信息,再基于最新结果回答。只有在用户明确要求基于某次历史快照继续分析时,才可以复用旧结果。
|
|
88
|
-
11. **会中聊天 / 互动转发到 IM 时基于 JSON 事件构造 IM post。** `chat_received_items[].message_type == 3` 表示会中 reaction;构造 IM post 时,先用 [`lark-im` reaction emoji 白名单](../lark-im/references/lark-im-reactions.md) 判断同一 item 的 `content`:白名单内才写成 Feishu post `emotion` 节点,不在白名单内则保留原始 key 并写成文本节点,例如 `[CanNotSee]`。普通聊天按文本发送。不要从 pretty/Markdown 重新拼消息,也不要把整条消息退化成纯文本;只降级非法 reaction key。用户已说“发给我 / 推送给我 / 发到我的单聊”时,默认用 bot 身份直接发当前用户;收件人不明确时只补问收件人。
|
|
89
|
-
12. 用户直接问“这个会议讲了什么 / 现在讲到哪了”且上下文没有明确 `meeting_id` 时,先用用户身份发现当前会议;如果用户明确要求应用机器人视角,或上下文已经是应用机器人参会流程,再用应用身份发现。若返回多个会议,展示候选并让用户选择。
|
|
90
|
-
13. 默认用户身份路径未发现当前会议时,改用 [`lark-vc`](../lark-vc/SKILL.md) 的 `+search` 查询当天最近结束的会议;仍无结果时询问会议时间、主题或会议号,不自行扩大时间范围。应用机器人视角未发现当前会议时,按当前身份解释空结果,不自动查询历史会议或真实入会。
|
|
91
|
-
14. 用户直接提供 **9 位会议号** 并询问会中事件/会议内容时,默认把它当作 active meeting 的筛选条件:先按当前身份查 active meetings,并在返回里匹配 `meeting_no == <9位会议号>`;匹配到唯一会议后取长数字 `meeting_id`,再用同一身份查事件。只有用户明确要求“入会 / 让应用机器人旁听 / 代我参会”时才改用 `+meeting-join`。
|
|
92
|
-
|
|
93
|
-
#### 文档上下文事件
|
|
94
|
-
|
|
95
|
-
`event_type == "document_context_changed"` 时,结构化消费按 `payload.document_context_changed_items` 原序读取;CLI pretty timeline 与其他事件一致,按 item `time` 排序。每个 item 只接受一个 `comment_focus`、`section_location` 或 `element_preview`;零个、多个、字段缺失或未知值不生成 pretty 条目,但保留事件 `payload` 和原标识,不猜字段别名。
|
|
96
|
-
|
|
97
|
-
| context | 消费规则 |
|
|
98
|
-
| --- | --- |
|
|
99
|
-
| `comment_focus` | 先按完整事件流中的 `magic_share_started/ended` 维护 `share_id -> share_doc` 共享会话映射,再用当前 item 的 `share_id` 精确关联文档;禁止退化为“最近一次共享”猜测。`document_context_changed` item 自带的 `share_doc` 当前不提供文档信息,只保留在 raw payload,不作为解析来源。仅当 `focused=true`、单个 `comment_id` 和由开始共享事件解析出的有效文档 URL 均存在时,用 `drive +batch-query-comments` 精确查询该 ID;严格匹配、回复分页与失败终止条件见 reference。`focused=false` 表示清除焦点,零评论调用。 |
|
|
100
|
-
| `section_location` | 从当前 item 的 `parent_titles/title` 按原序派生 pretty timeline 中的章节路径;JSON/NDJSON 继续只保留原始 payload,不新增事件顶层 `section_path`。不得根据 `level` 反转、截断或补造路径,也不调用文档 API。 |
|
|
101
|
-
| `element_preview` | 只有用户明确要求预览且 `action=open` 时路由:`element_type=image` 使用 `docs +media-preview --token <element_token> --output <用户选择路径>`;`element_type=whiteboard` 使用 `docs +media-download --type whiteboard --token <element_token> --output <用户选择路径>`。`close`、未知 type/action、缺 token 或无明确预览意图均零调用;禁止把未知 `element_type` 透传给 `--type`,禁止自动选择覆盖路径。 |
|
|
102
|
-
|
|
103
|
-
`vc +meeting-events` 始终只读,不因评论或元素上下文自动调用 Drive/Docs,也不写文件。`share_id` 无法关联、评论 API/权限失败或 reply 游标为空/重复时,明确标记结果为未解析或 partial,并保留 `share_id`、`share_doc`、`comment_id`、`element_token`、`block_id` 和 raw payload,给出可重试的精确命令;不要用“最近一次共享”、全量评论扫描或自动下载兜底。完整命令与终止条件见 [`+meeting-events` reference](../lark-vc/references/lark-vc-meeting-events.md#文档上下文事件消费)。
|
|
104
|
-
|
|
105
|
-
JSON/NDJSON 的单事件 envelope 始终只使用既有 `event_id/event_type/event_time/actors/payload` 字段;不得为 `document_context_changed` 单独增加顶层 `summary/section_path` 或新的 `derived` 层。结构化消费从 `payload.document_context_changed_items[]` 读取,pretty 仅作可读派生展示。
|
|
106
|
-
|
|
107
|
-
### 3. 发送会中文本或会中表情(写操作)
|
|
108
|
-
|
|
109
|
-
1. 用户明确要求在当前进行中的会议里发送提示、说明、会中表情,或反馈“听不到 / 看不到 / 声音清楚 / 效果不错”时,用 `+meeting-message-send`。
|
|
110
|
-
2. 输入是长数字 `meeting_id`,不是 9 位会议号。若用户只给 9 位会议号,先按当前身份执行 `+meeting-list-active` 并按 `meeting_no` 匹配,匹配到唯一会议后再发送;不要为了发消息自动入会。发消息只需 `meeting_id`,不要先查 `+detail`。
|
|
111
|
-
3. 身份必须延续:`meeting_id` 来自用户身份发现,就继续 `--as user`;来自应用身份发现或应用机器人入会,就继续 `--as bot`。
|
|
112
|
-
4. 文本消息使用 `--text`;会中表情 / 反馈使用 `--emoji-type`。`--emoji-type` 必须从 reference 里的完整列表中选择,大小写敏感。
|
|
113
|
-
5. 支持普通 Feishu reaction emoji(如 `LOVE`、`SMILE`、`THUMBSUP`)和 4 个 VC 反馈 key(`VC_CanNotSee`、`VC_NoSound`、`VC_LooksGood`、`VC_SoundsClear`)。
|
|
114
|
-
6. 不要编造列表外的 `emoji_type`,也不要把 natural language 硬编码成不存在的 key;如果用户只给语义,可在完整列表中选择最接近的 key,无法判断时先确认。
|
|
115
|
-
7. 该命令只暴露会中文本和会中表情,不作为“发送绑定群消息”的默认能力;如果用户明确要发群聊,请路由到 [`lark-im`](../lark-im/SKILL.md)。
|
|
116
|
-
8. 若使用应用身份发送,应用机器人必须在会中;若使用用户身份发送,当前用户必须正在该会议中。权限错误时按“应用身份权限配置检查”或“用户身份被拒绝时”处理。
|
|
117
|
-
|
|
118
|
-
示例:
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
lark-cli vc +meeting-message-send --as user --meeting-id <meeting_id> --text "稍等,我在看文档"
|
|
122
|
-
lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type reaction --emoji-type LOVE
|
|
123
|
-
lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type reaction --emoji-type VC_NoSound
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### 4. 离开会议(写操作)
|
|
127
|
-
|
|
128
|
-
1. 只有用户明确要求机器人退出 / 离开 / 结束参会时,才用应用身份执行 `+meeting-leave --as bot --meeting-id <长数字 meeting_id>`;不应因任务完成而执行离会。
|
|
129
|
-
2. `--meeting-id` **必须**是长数字会议 ID,通常来自 `+meeting-join` 返回的 `meeting.id`,也可以来自应用身份 `+meeting-list-active` 返回的 `meeting_id`。如果来自 list-active,必须确认应用机器人当前就在该会中。**不接受 9 位会议号**。
|
|
130
|
-
3. 离会**立即生效**,机器人从会议的参会人列表中消失,对其他参会人可见;若需要重新入会,再跑一次 `+meeting-join` 即可(非真正"不可逆")。
|
|
131
|
-
4. 使用与入会或 active meeting 发现相同的应用身份离会。
|
|
132
|
-
|
|
133
|
-
### 5. 获取当前可用的进行中会议 ID(读操作)
|
|
134
|
-
|
|
135
|
-
1. `+meeting-list-active` 用来发现当前进行中的会议,并拿到后续 `+meeting-events` 需要的长数字 `meeting_id`。
|
|
136
|
-
2. 用户身份:`lark-cli vc +meeting-list-active --as user --format json`,用于发现当前登录用户正在参加的会议;后续 `+meeting-events` 继续 `--as user`。
|
|
137
|
-
3. 应用身份:`lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json`,`--user-id` 必须是目标用户 open_id,即 `ou_...`;返回该用户当前正在参加且应用机器人也在会中的会议。它不是全量会议搜索接口。后续 `+meeting-events` 继续 `--as bot`。
|
|
138
|
-
4. 如果返回空,先按当前身份解释:用户身份下表示当前用户没有可见的进行中会议;应用身份下表示没有找到“目标用户在会中且应用机器人也在会中”的当前会。
|
|
139
|
-
5. 如果返回多个会议,不要自动任选一个;按 `meeting_title` / `meeting_no` / `meeting_id` 展示候选,等待用户明确选择后再调用 `+meeting-events`。
|
|
140
|
-
6. 如果用户给了 9 位会议号,先在 active meeting 结果中按 `meeting_no` 匹配。匹配失败时,不要自动入会;只有用户明确要求应用机器人真实入会时,才询问或执行 `+meeting-join`。
|
|
141
|
-
|
|
142
|
-
### 6. Agent 参会示范
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# 1. 入会,捕获 meeting.id
|
|
146
|
-
AS=bot
|
|
147
|
-
JOIN=$(lark-cli vc +meeting-join --as "$AS" --meeting-number 123456789 --format json)
|
|
148
|
-
MID=$(echo "$JOIN" | jq -r '.data.meeting.id')
|
|
149
|
-
|
|
150
|
-
# 2. 会中轮询事件
|
|
151
|
-
# 沿用入会身份;默认用 --page-all 拉全当前可见事件;下次增量优先复用 page_token
|
|
152
|
-
# 典型间隔 10-30 秒
|
|
153
|
-
lark-cli vc +meeting-events --as "$AS" --meeting-id "$MID" --page-all --format pretty
|
|
154
|
-
|
|
155
|
-
# 3. 会后可选:进入 lark-vc 获取会议产物信息,再按 note_id / minute_token 决策读取
|
|
156
|
-
lark-cli vc +detail --meeting-ids "$MID"
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
如果用户随后明确要求退出 / 离开 / 结束参会,再单独调用 `lark-cli vc +meeting-leave --as bot --meeting-id "$MID"`。
|
|
160
|
-
|
|
161
|
-
如果已经知道目标用户 `open_id`,且 bot 已在会中,也可以先发现当前会:
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
|
|
165
|
-
lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
如果只是回答当前登录用户所在会议发生了什么,使用用户身份一路查:
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
lark-cli vc +meeting-list-active --as user --format json
|
|
172
|
-
lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --format pretty
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Shortcuts
|
|
176
|
-
|
|
177
|
-
Shortcut 是对常用操作的高级封装(`lark-cli vc +<verb> [flags]`)。
|
|
178
|
-
|
|
179
|
-
| Shortcut | 类型 | 说明 |
|
|
180
|
-
| --------------------------------------------------------------- | -- | -------------------------------------------------------------------------- |
|
|
181
|
-
| [`+meeting-join`](references/lark-vc-agent-meeting-join.md) | 写 | Join an in-progress meeting by 9-digit meeting number |
|
|
182
|
-
| [`+meeting-list-active`](../lark-vc/references/lark-vc-meeting-list-active.md) | 读 | List active meetings and discover meeting_id for event reads |
|
|
183
|
-
| [`+meeting-events`](../lark-vc/references/lark-vc-meeting-events.md) | 读 | List meeting events visible to the current identity (participant, transcript, chat, share, document context) |
|
|
184
|
-
| [`+meeting-message-send`](../lark-vc/references/lark-vc-meeting-message-send.md) | 写 | Send an in-meeting text message or reaction emoji |
|
|
185
|
-
| [`+meeting-leave`](references/lark-vc-agent-meeting-leave.md) | 写 | Leave a meeting by meeting\_id |
|
|
186
|
-
|
|
187
|
-
- [`+meeting-join`](references/lark-vc-agent-meeting-join.md):入参格式、写操作可见性风险、入会失败排查。
|
|
188
|
-
- [`+meeting-list-active`](../lark-vc/references/lark-vc-meeting-list-active.md):用户身份和应用身份的不同返回范围。
|
|
189
|
-
- [`+meeting-events`](../lark-vc/references/lark-vc-meeting-events.md):`meeting_id` 来源、身份延续、分页和错误码(10005 / 20001 / 20002)。
|
|
190
|
-
- [`+meeting-message-send`](../lark-vc/references/lark-vc-meeting-message-send.md):会中文本、完整 `emoji_type` 列表、身份延续和写操作风险。
|
|
191
|
-
- [`+meeting-leave`](references/lark-vc-agent-meeting-leave.md):`meeting_id` 的来源与写操作可见性。
|
|
192
|
-
|
|
193
|
-
## 应用身份权限配置检查
|
|
194
|
-
|
|
195
|
-
应用身份 `--as bot` 报 `no permission`、`missing required scope(s)`、`missing_scopes`、`ErrNotInGray` 或 `20017` 时,不要引导用户执行 `auth login`。按顺序检查:
|
|
196
|
-
|
|
197
|
-
1. 确认内测权限后,按 CLI 错误中的 `hint` 处理;返回 `console_url` 时将其原样提供给用户。
|
|
198
|
-
2. 应用已发布并安装到当前租户。
|
|
199
|
-
3. 开放平台“权限可访问的数据范围”已开通并保存。
|
|
200
|
-
4. 数据范围选择“按条件筛选”,条件配置为:**会议的归属者 包含 与应用的可用范围一致**。
|
|
201
|
-
5. 如果 scope、安装和数据范围都正确,仍返回 `ErrNotInGray` / `20017`,再按 VC Agent 内测 privilege / 灰度白名单处理,提示加入早鸟群或联系平台同学开通。
|
|
202
|
-
|
|
203
|
-
## 用户身份被拒绝时
|
|
204
|
-
|
|
205
|
-
用户身份 `--as user` 调用 `+meeting-list-active` 或 `+meeting-events` 报普通 scope 缺失时,按“会议查询权限”处理;其他 shortcut 的 scope 缺失按各自 CLI `hint` 处理。普通 scope 缺失不表示接口不支持用户身份,只有 CLI 明确表明当前接口不支持用户身份访问时,才按用户意图切换处理:
|
|
206
|
-
|
|
207
|
-
1. 如果用户只是查询当前登录用户所在的进行中会议,说明当前接口链路不支持用户身份访问,改用应用身份流程;需要目标用户 open_id,并要求应用机器人已在会中或先按用户确认执行入会。
|
|
208
|
-
2. 如果用户明确要求应用机器人入会、旁听、代参会或读取应用机器人可见事件,直接切到 `--as bot`,并按上面的应用身份权限配置检查处理。
|
|
209
|
-
|
|
210
|
-
## 延伸
|
|
211
|
-
|
|
212
|
-
- 查已结束会议、参会人快照、搜索历史会议 → [`lark-vc`](../lark-vc/SKILL.md)
|
|
213
|
-
- 会议纪要、逐字稿 → [`lark-vc`](../lark-vc/SKILL.md) 的 `+detail`
|
|
214
|
-
- 妙记产物(AI 总结 / 转写 / 章节)→ [`lark-minutes`](../lark-minutes/SKILL.md)
|
|
215
|
-
- 会后把产物发到群 / 私聊 → [`lark-im`](../lark-im/SKILL.md)
|
|
216
|
-
- 认证、身份切换、scope 管理 → [`lark-shared`](../lark-shared/SKILL.md)
|
|
15
|
+
**MUST 完整读取 [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md),并按照其中的路由和行动指南执行。**
|
|
@@ -5,17 +5,12 @@ description: "会议纪要整理工作流:汇总指定时间范围内的会议
|
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
8
|
+
skills: ["lark-meeting"]
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# 会议纪要汇总工作流
|
|
11
12
|
|
|
12
|
-
**CRITICAL — 开始前 MUST
|
|
13
|
-
|
|
14
|
-
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-vc/references/vc-domain-boundaries.md`](../lark-vc/references/vc-domain-boundaries.md)**,不读将导致命令使用、会议产物决策、领域边界职责判断错误:
|
|
15
|
-
> 1. 了解日历 & VC、会议产物 & 文档的关联关系和职责划分
|
|
16
|
-
> 2. 了解会议产物(妙记和纪要)之间的关联关系,例如:**妙记和纪要产生条件相互独立**
|
|
17
|
-
> 3. 了解不同会议产物的组成部分,以便根据需求决策使用哪种产物的数据
|
|
18
|
-
> 4. 了解会议总结、分析和信息提取的标准流程
|
|
13
|
+
**CRITICAL — 开始前 MUST 先完整读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 和 [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md)**。认证、身份和权限以 lark-shared 为准;会议与产物关系、产物选择和逐字稿路由以 lark-meeting 为准。
|
|
19
14
|
|
|
20
15
|
## 适用场景
|
|
21
16
|
|
|
@@ -29,6 +24,7 @@ metadata:
|
|
|
29
24
|
```bash
|
|
30
25
|
lark-cli auth login --domain vc # 基础(查询+纪要)
|
|
31
26
|
lark-cli auth login --domain vc,drive # 含读取纪要文档正文、生成文档
|
|
27
|
+
lark-cli auth login --domain vc,drive,minutes # 含无 note_id 时的妙记备选路径
|
|
32
28
|
```
|
|
33
29
|
|
|
34
30
|
## 工作流
|
|
@@ -80,12 +76,21 @@ lark-cli note +detail --note-id "note_id"
|
|
|
80
76
|
```
|
|
81
77
|
- 根据上一步搜集到的 `meeting-id` 查询。
|
|
82
78
|
- 单次最多查询 50 个,超过 50 个需分批调用。
|
|
83
|
-
- 部分会议没有 `note_id` 或报错 `no notes available
|
|
79
|
+
- 部分会议没有 `note_id` 或报错 `no notes available`,**不要直接标注"无纪要"**:先看 `vc +detail` 是否返回了 `minute_token`,有则走下面的妙记备选路径;`note_id` 和 `minute_token` 都没有时才标注"无纪要"。
|
|
84
80
|
- 记录每个纪要的 `note_id`(纪要 ID)、`note_display_type`(展示类型:`unknown` / `normal` / `unified`)、`note_doc_token`(纪要文档 Token)和 `verbatim_doc_token`(逐字稿文档 Token)。
|
|
85
81
|
|
|
86
|
-
>
|
|
82
|
+
> **妙记备选路径(无 `note_id`、有 `minute_token` 时)**:智能纪要与妙记是两条独立产物链路,缺少智能纪要不代表这场会没有内容。
|
|
83
|
+
>
|
|
84
|
+
> ```bash
|
|
85
|
+
> # --minute-tokens 是复数形式(+download 同);--output-dir 只接受相对路径
|
|
86
|
+
> lark-cli minutes +detail --minute-tokens "<minute_token>" --transcript --output-dir ./transcripts --as user
|
|
87
|
+
> ```
|
|
88
|
+
>
|
|
89
|
+
> 逐字稿会落盘,供 Step 4 基于原始发言独立提炼(不要照搬 AI 总结)。若返回 `No read permission`(`2091005`),先把无权限事实告知用户,用户明确同意后再用单数 flag 申请:`lark-cli minutes +apply-permission --minute-token "<minute_token>" --perm view --as user`;申请需 owner 在客户端批准后才可重试。详见 [基于 minute_token 查询妙记及关联产物](../lark-meeting/scenes/query-minutes-and-artifacts.md)。
|
|
90
|
+
|
|
91
|
+
> **逐字稿路由按 `note_display_type` 决定**(详见 [基于 note_id 查询智能纪要及关联产物](../lark-meeting/scenes/query-note-and-artifacts.md)):
|
|
87
92
|
> - `normal`:逐字稿是独立文档,链接/正文走 `verbatim_doc_token`。
|
|
88
|
-
> - `unified`:逐字稿**不是独立文档**,没有可分享的逐字稿文档链接;需要逐字稿内容时用 `note +transcript --note-id <note_id>`([lark-
|
|
93
|
+
> - `unified`:逐字稿**不是独立文档**,没有可分享的逐字稿文档链接;需要逐字稿内容时用 `note +transcript --note-id <note_id>`([lark-meeting](../lark-meeting/SKILL.md))拉取到本地,报告中标注"unified 纪要"即可。
|
|
89
94
|
|
|
90
95
|
2. 获取纪要文档和逐字稿文档链接
|
|
91
96
|
```bash
|
|
@@ -117,6 +122,8 @@ lark-cli docs +update --doc "<url_or_token>" --command append --doc-format markd
|
|
|
117
122
|
## 参考
|
|
118
123
|
|
|
119
124
|
- [lark-shared](../lark-shared/SKILL.md) — 认证、权限(必读)
|
|
120
|
-
- [lark-
|
|
121
|
-
- [
|
|
122
|
-
- [
|
|
125
|
+
- [lark-meeting](../lark-meeting/SKILL.md) — 会议与产物统一路由
|
|
126
|
+
- [查询会议与会议产物](../lark-meeting/scenes/query-meeting-and-artifacts.md) — 搜索、消歧、产物获取与逐字稿分析流程
|
|
127
|
+
- [查询妙记及关联产物](../lark-meeting/scenes/query-minutes-and-artifacts.md) — 无 `note_id` 时的妙记备选路径
|
|
128
|
+
- [`vc +search`](../lark-meeting/references/lark-vc-search.md)、[`vc +detail`](../lark-meeting/references/lark-vc-detail.md)、[`note +detail`](../lark-meeting/references/lark-note-detail.md)、[`note +transcript`](../lark-meeting/references/lark-note-transcript.md)、[`minutes +detail`](../lark-meeting/references/lark-minutes-detail.md)、[`minutes +apply-permission`](../lark-meeting/references/lark-minutes-apply-permission.md) — 命令细节
|
|
129
|
+
- [lark-doc](../lark-doc/SKILL.md) — `+fetch`、`+create`、`+update` 详细用法
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# minutes +detail
|
|
3
|
-
|
|
4
|
-
通过 `minute_token` 查询妙记详情,按需获取 AI 产物(总结/待办/章节/逐字稿/关键词)。只读,支持 `--as user` / `--as bot`。
|
|
5
|
-
|
|
6
|
-
> `--summary` / `--todo` / `--chapter` / `--keyword` / `--transcript` 至少一个;不传任何产物 flag 时只返回基础信息(如 `title`),AI 产物字段都不会出现。一次性获取所有产物:`--summary --todo --chapter --keyword --transcript`。
|
|
7
|
-
|
|
8
|
-
## 命令
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
# 仅基础信息
|
|
12
|
-
lark-cli minutes +detail --minute-tokens obcxxxxxxxxxx
|
|
13
|
-
|
|
14
|
-
# 批量(逗号分隔,最多 50 个)
|
|
15
|
-
lark-cli minutes +detail --minute-tokens obcxxx,obcyyy --summary --todo
|
|
16
|
-
|
|
17
|
-
# 全产物
|
|
18
|
-
lark-cli minutes +detail --minute-tokens obcxxx --summary --todo --chapter --keyword --transcript
|
|
19
|
-
|
|
20
|
-
# 仅逐字稿,覆盖已有文件,指定输出目录
|
|
21
|
-
lark-cli minutes +detail --minute-tokens obcxxx --transcript --overwrite --output-dir ./out
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## 输出
|
|
25
|
-
|
|
26
|
-
`minutes` 数组每条含 `minute_token`、`title`、`note_id`、`artifacts`。`note_id` 仅在该妙记关联了会议纪要时返回,可直接传给 [`note +detail`](../../lark-note/references/lark-note-detail.md) 拿纪要文档 token,无需再绕回 `vc +detail`。`artifacts` 中**只包含本次请求的产物**:
|
|
27
|
-
|
|
28
|
-
| 字段 | 类型 | 说明 |
|
|
29
|
-
|------|------|------|
|
|
30
|
-
| `artifacts.summary` | string | AI 总结。 |
|
|
31
|
-
| `artifacts.todos` | array | 待办事项列表。 |
|
|
32
|
-
| `artifacts.chapters` | array | 章节列表。 |
|
|
33
|
-
| `artifacts.keywords` | array | 关键词列表。 |
|
|
34
|
-
| `artifacts.transcript_file` | string | 逐字稿本地文件路径。 |
|
|
35
|
-
|
|
36
|
-
逐字稿默认落地 `./minutes/{minute_token}/transcript.txt`,与 `minutes +download` 同目录便于聚合。指定 `--output-dir <dir>` 时改写到 `<dir>/artifact-{title}-{minute_token}/transcript.txt`。
|
|
37
|
-
|
|
38
|
-
## minute_token 来源
|
|
39
|
-
|
|
40
|
-
| 来源 | 取值字段 |
|
|
41
|
-
|------|---------|
|
|
42
|
-
| 妙记 URL `https://*.feishu.cn/minutes/obcxxx` | 截路径最后一段 `obcxxx` |
|
|
43
|
-
| `vc +detail --meeting-ids` | `minute_token` |
|
|
44
|
-
| `vc +recording --meeting-ids` | `minute_token` |
|
|
45
|
-
| `minutes +search` | `minute_token` |
|
|
46
|
-
|
|
47
|
-
## 典型链路:从 minute_token 拿纪要文档 token
|
|
48
|
-
|
|
49
|
-
只持有 `minute_token`(如妙记 URL 入口),又想拿 AI 智能纪要 / 逐字稿文档时;每一步都要沿用同一个 `--as`(完整规则见 [lark-shared](../../lark-shared/SKILL.md) 的「身份延续」):
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# 1. 取妙记关联的 note_id,没有关联会议纪要则为空
|
|
53
|
-
lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxxxxxx --as bot
|
|
54
|
-
|
|
55
|
-
# 2. 用 note_id 拿 note_doc_token / verbatim_doc_token / shared_doc_tokens
|
|
56
|
-
# 沿用第 1 步的身份,不要省略 --as
|
|
57
|
-
lark-cli note +detail --note-id <note_id> --as bot
|
|
58
|
-
|
|
59
|
-
# 3. 读纪要 / 逐字稿正文(同样沿用第 1 步的身份)
|
|
60
|
-
lark-cli docs +fetch --api-version v2 --doc <note_doc_token> --doc-format markdown --as bot
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
> `minute_token` 不要直接传给 `note +detail`:必须先用本命令拿到 `note_id` 再调用 `note +detail`。
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# minutes +upload
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
上传音视频文件到飞书妙记并生成妙记(Minute)。
|
|
5
|
-
|
|
6
|
-
本 skill 对应 shortcut:`lark-cli minutes +upload`。
|
|
7
|
-
|
|
8
|
-
## 典型触发表达
|
|
9
|
-
|
|
10
|
-
- "把这个音视频文件转成妙记"
|
|
11
|
-
- "把这个音视频文件转成纪要"
|
|
12
|
-
- "把这个音视频文件转成逐字稿、文字稿或撰写文字"
|
|
13
|
-
- "把这个音视频文件转成总结、待办或章节"
|
|
14
|
-
|
|
15
|
-
## 完整工作流
|
|
16
|
-
|
|
17
|
-
当用户要求将音视频文件转换为妙记,或进一步要纪要/逐字稿/文字稿/撰写文字时,必须按照以下步骤执行:
|
|
18
|
-
|
|
19
|
-
1. **上传文件至云空间(云盘/云存储)获取 file_token**
|
|
20
|
-
- 使用 `lark-cli drive +upload` 命令上传本地文件到云空间/云盘/云存储(Drive):
|
|
21
|
-
```bash
|
|
22
|
-
lark-cli drive +upload --file <path/to/media/file>
|
|
23
|
-
```
|
|
24
|
-
- 从命令的返回结果中提取生成的 `file_token`。
|
|
25
|
-
|
|
26
|
-
2. **将 file_token 转换为妙记链接(minute_url)**
|
|
27
|
-
- 调用本 shortcut,将获取到的 `file_token` 转换为妙记:
|
|
28
|
-
```bash
|
|
29
|
-
lark-cli minutes +upload --file-token <file_token>
|
|
30
|
-
```
|
|
31
|
-
- 命令执行成功后,将返回生成的妙记链接 `minute_url`。
|
|
32
|
-
|
|
33
|
-
3. **如需纪要 / 逐字稿 / 文字稿 / 撰写文字,使用返回的 `minute_token` 调用 `minutes +detail`**
|
|
34
|
-
- 如果用户要的是纪要、逐字稿、文字稿、撰写文字、总结、待办或章节,使用上一步返回的 `minute_token` 继续调用:
|
|
35
|
-
```bash
|
|
36
|
-
lark-cli minutes +detail --minute-tokens <minute_token> --wait-ready --summary --todo --chapter --keyword --transcript
|
|
37
|
-
```
|
|
38
|
-
- `--wait-ready` 参数表示等待妙记生成完毕后再获取产物,上传后立即读取详情时必须加上此参数。
|
|
39
|
-
- `minutes +detail --minute-tokens` 会返回妙记产物(总结、待办、章节、关键词、逐字稿);必要时还会把逐字稿落地到本地文件。
|
|
40
|
-
|
|
41
|
-
> **异步生成提示**:API 会立即返回 `minute_url`,但妙记可能仍在异步生成中,您可以直接通过该妙记链接查看当前的处理状态和转写结果。
|
|
42
|
-
|
|
43
|
-
## 命令示例
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# 通过已上传到云空间(云盘/云存储)的 file_token 生成妙记
|
|
47
|
-
lark-cli minutes +upload --file-token boxcnxxxxxxxxxxxxxxxx
|
|
48
|
-
|
|
49
|
-
# 上传后立即获取妙记产物,需加 --wait-ready 等待生成完毕(--summary --todo --chapter --keyword --transcript 按需传入)
|
|
50
|
-
lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxx --wait-ready --summary
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## 参数
|
|
54
|
-
|
|
55
|
-
| 参数 | 必填 | 说明 |
|
|
56
|
-
|------|------|------|
|
|
57
|
-
| `--file-token <token>` | 是 | 已经上传到飞书云空间(云盘/云存储)的音视频文件的 file_token |
|
|
58
|
-
|
|
59
|
-
## 支持的格式与限制
|
|
60
|
-
|
|
61
|
-
待上传到妙记的原始音视频文件必须满足以下要求:
|
|
62
|
-
|
|
63
|
-
- 支持音频格式:`wav`、`mp3`、`m4a`、`aac`、`ogg`、`wma`、`amr`
|
|
64
|
-
- 支持视频格式:`avi`、`wmv`、`mov`、`mp4`、`m4v`、`mpeg`、`ogg`、`flv`
|
|
65
|
-
- 音视频时长不能超过 `6` 小时
|
|
66
|
-
- 文件大小不能超过 `6 GB`
|
|
67
|
-
|
|
68
|
-
> 说明:本 shortcut 只接收 `file_token`,不会直接读取本地文件内容,因此这些格式、时长和大小限制对应的是**原始上传文件**本身。若妙记生成失败,请先回查源文件是否满足上述要求。
|
|
69
|
-
|
|
70
|
-
## 核心约束
|
|
71
|
-
|
|
72
|
-
### 1. 必须提供 file_token
|
|
73
|
-
|
|
74
|
-
本接口不直接处理本地文件的上传,必须先使用 `drive +upload` 将文件上传到云空间(云盘/云存储)获取 `file_token`,然后再调用本接口。
|
|
75
|
-
|
|
76
|
-
### 2. 先上传,再生成妙记
|
|
77
|
-
|
|
78
|
-
推荐流程如下:
|
|
79
|
-
|
|
80
|
-
1. 使用 `lark-cli drive +upload --file <path>` 上传本地音视频文件到云空间(云盘/云存储)
|
|
81
|
-
2. 从返回结果中取出 `file_token`
|
|
82
|
-
3. 调用 `lark-cli minutes +upload --file-token <file_token>` 生成妙记
|
|
83
|
-
4. 如果目标是纪要、逐字稿、文字稿、撰写文字、总结、待办或章节,使用返回的 `minute_token`,继续调用 `lark-cli minutes +detail --minute-tokens <minute_token> --wait-ready`
|
|
84
|
-
|
|
85
|
-
> **边界说明**:`minutes +upload` 本身只负责把文件转成妙记并返回 `minute_url`。纪要内容、逐字稿、文字稿、撰写文字、总结、待办、章节属于后续产物获取,应由 [minutes +detail](lark-minutes-detail.md) 承接。
|
|
86
|
-
|
|
87
|
-
## 输出结果示例
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
{
|
|
91
|
-
"minute_url": "http(s)://<host>/minutes/<minute-token>",
|
|
92
|
-
"minute_token": "<minute-token>"
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
| 字段 | 说明 |
|
|
97
|
-
|------|------|
|
|
98
|
-
| `minute_url` | 生成的妙记访问链接 |
|
|
99
|
-
| `minute_token` | 从 `minute_url` 提取出的妙记 Token,可直接传给 `minutes +detail --minute-tokens` |
|
|
100
|
-
|
|
101
|
-
## 参考
|
|
102
|
-
|
|
103
|
-
- [lark-minutes](../SKILL.md) -- 妙记相关功能说明
|
|
104
|
-
- [drive +upload](../../lark-drive/references/lark-drive-upload.md) -- 上传文件到云空间(云盘/云存储)
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# note +detail
|
|
2
|
-
|
|
3
|
-
通过 `note_id` 查询会议纪要详情,获取下挂文档 Token(AI 智能纪要、逐字稿、会中共享文档)。只读,支持 `--as user` / `--as bot`。bot 身份下能否读到数据取决于应用对纪要主文档是否有 view 权限。
|
|
4
|
-
|
|
5
|
-
## 命令
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
lark-cli note +detail --note-id <note_id>
|
|
9
|
-
lark-cli note +detail --note-id <note_id> --as bot
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## `note_id` 来源
|
|
13
|
-
|
|
14
|
-
- 可以来自用户直接给出的 `note_id`。
|
|
15
|
-
- 如果入口是文档,先由 [lark-doc](../../lark-doc/SKILL.md) 读取 Docx;只有 `<vc-transcribe-tab vc-node-id="...">` 的 `vc-node-id` 可以作为 `note_id`。
|
|
16
|
-
- 没有 `vc-node-id` 时,不要从 `doc_token`、标题、正文或 backlink 反推 `note_id`。
|
|
17
|
-
|
|
18
|
-
## 输出后的路由
|
|
19
|
-
|
|
20
|
-
| detail 字段 | 后续动作 |
|
|
21
|
-
|---------|---------|
|
|
22
|
-
| `note_doc_token` | 读纪要正文 / 总结 / 待办 / 章节:`docs +fetch --doc <note_doc_token>` |
|
|
23
|
-
| `note_display_type=normal` + `verbatim_doc_token` | 读逐字稿:`docs +fetch --doc <verbatim_doc_token>` |
|
|
24
|
-
| `note_display_type=unknown` + `verbatim_doc_token` | 先按普通独立逐字稿文档读取;不要猜成 unified |
|
|
25
|
-
| `note_display_type=unified` | 读逐字稿 / 原始记录:转 [`note +transcript`](lark-note-transcript.md)(仅支持 `--as user`) |
|
|
26
|
-
|
|
27
|
-
判别键是 `note_display_type`。即使 unified 纪要返回了非空 `verbatim_doc_token`,逐字稿仍按 unified 路由。
|
|
28
|
-
|
|
29
|
-
> **bot + unified 的边界**:如果本命令用 `--as bot` 拿到 `note_display_type=unified`,`note +transcript` 只支持 `--as user`,不能直接沿用 bot 身份。停下来向用户说明这个边界,只有用户明确同意才切到 `--as user` 继续,不要静默切换身份。
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# note +transcript
|
|
2
|
-
|
|
3
|
-
只在 `note +detail` 已确认 `note_display_type=unified` 时使用。普通纪要逐字稿是独立 Docx 文档,应回到 [lark-doc](../../lark-doc/SKILL.md) 读取 `verbatim_doc_token`。
|
|
4
|
-
|
|
5
|
-
只支持 `--as user`,不支持 `--as bot`。如果 `note +detail --as bot` 返回 `unified`,不要在这里静默省略 `--as` 或改用 user 身份继续——先停下来向用户说明"该纪要逐字稿只能以 user 身份读取",只有用户明确同意才切换身份重试。
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
lark-cli note +transcript --note-id NOTE_ID
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## 行为契约
|
|
12
|
-
|
|
13
|
-
- CLI 会先校验该 Note 是否为 `unified`;不是 unified 时不拉取 transcript。
|
|
14
|
-
- CLI 内部自动翻页并拼接完整内容;任一页失败时整体报错,不保存半截 transcript。
|
|
15
|
-
- 默认保存到 `./notes/{note_id}/unified_transcript.md`;`--transcript-format plain_text` 时保存为 `.txt`。
|
|
16
|
-
- 目标文件已存在时会失败;用户明确要覆盖时才加 `--overwrite`。
|
|
17
|
-
|
|
18
|
-
## 何时不要用
|
|
19
|
-
|
|
20
|
-
| 场景 | 正确路由 |
|
|
21
|
-
|------|---------|
|
|
22
|
-
| 只有纪要文档标题 | 先文档搜索,再 `docs +fetch`;有 `vc-node-id` 才回 Note 域 |
|
|
23
|
-
| 只有 Docx URL / `doc_token` | 先 `docs +fetch`;不要从 `doc_token` 反推 `note_id` |
|
|
24
|
-
| `note_display_type=normal` | `docs +fetch --doc <verbatim_doc_token>` |
|
|
25
|
-
| `note_display_type=unknown` 且 `verbatim_doc_token` 非空 | 先按独立逐字稿文档读取 |
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# vc +detail
|
|
3
|
-
|
|
4
|
-
通过会议 ID 获取会议详情,包括基本信息、关联的纪要 ID(`note_id`)和妙记 Token(`minute_token`)。只读,支持 `--as user` / `--as bot`。
|
|
5
|
-
|
|
6
|
-
## 命令
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
# 单个 / 批量(逗号分隔,最多 50 个)
|
|
10
|
-
lark-cli vc +detail --meeting-ids <meeting_id1>,<meeting_id2>
|
|
11
|
-
|
|
12
|
-
# bot 身份(只能查 bot 有权限的会议)
|
|
13
|
-
lark-cli vc +detail --meeting-ids <meeting_id1>,<meeting_id2> --as bot
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## 输出字段
|
|
17
|
-
|
|
18
|
-
| 字段 | 说明 |
|
|
19
|
-
|------|------|
|
|
20
|
-
| `meeting_id` | 会议 ID |
|
|
21
|
-
| `meeting_no` | 会议 9 位号码 |
|
|
22
|
-
| `topic` | 会议主题 |
|
|
23
|
-
| `start_time` | 开始时间 |
|
|
24
|
-
| `end_time` | 结束时间 |
|
|
25
|
-
| `note_id` | 关联的纪要 ID。 |
|
|
26
|
-
| `minute_token` | 关联的妙记 Token。 |
|
|
27
|
-
|
|
28
|
-
## 典型场景
|
|
29
|
-
|
|
30
|
-
### 场景 1:获取会议的纪要和妙记关联
|
|
31
|
-
|
|
32
|
-
`vc +detail` 只能拿到 `note_id` 和 `minute_token`,不直接返回纪要文档 token 与妙记产物内容。要获取实际产物,需根据用户诉求继续调用 `note +detail` 或 `minutes +detail`,**并沿用第 1 步同一个 `--as`**(完整规则见 [lark-shared](../../lark-shared/SKILL.md) 的「身份延续」):
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# 1. 获取会议详情,拿到 note_id 和 minute_token
|
|
36
|
-
lark-cli vc +detail --meeting-ids <meeting_id> --as bot
|
|
37
|
-
|
|
38
|
-
# 2. 用 note_id 获取纪要文档 Token(note_doc_token / verbatim_doc_token / shared_doc_tokens)
|
|
39
|
-
# 显式沿用第 1 步的身份,不要省略 --as
|
|
40
|
-
lark-cli note +detail --note-id <note_id> --as bot
|
|
41
|
-
|
|
42
|
-
# 3. 用 minute_token 获取妙记产物(同样沿用第 1 步的身份)
|
|
43
|
-
# ⚠️ 必须显式指定 --summary / --todo / --chapter / --keyword / --transcript 中至少一个 flag,
|
|
44
|
-
# 不传任何 flag 则不会返回任何产物内容。
|
|
45
|
-
lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxxxxxx --todo --transcript --as bot
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
> **路由建议**:当用户未明确指定使用妙记时,**优先**走 `note +detail` 链路(纪要文档信息更完整、含逐字稿原文),仅在 `note_id` 为空或用户要求妙记产物时才走 `minutes +detail`。
|
|
49
|
-
> **身份边界**:`note +transcript` 目前仅支持 `--as user`。若上面第 2 步用 `--as bot` 拿到 `note_display_type=unified`,停下来向用户说明该纪要逐字稿只能以 user 身份读取,只有用户明确同意才切换身份重试。
|