Chargement
Chargement
Skills
飞书视频会议会中能力:用于让应用机器人真实加入或离开正在进行的会议,并读取当前身份可见的会中事件、发送会中文本消息或会中表情。适用于用户询问正在开的会议发生了什么、谁在发言、是否共享内容,或需要发现当前可读的进行中会议 ID。不负责已结束会议搜索、参会人快照、纪要、逐字稿或录制查询,这些使用 lark-vc 技能。
À propos de cette ressource
--- name: lark-vc-agent version: 1.0.0 description: "飞书视频会议会中能力:用于让应用机器人真实加入或离开正在进行的会议,并读取当前身份可见的会中事件、发送会中文本消息或会中表情。适用于用户询问正在开的会议发生了什么、谁在发言、是否共享内容,或需要发现当前可读的进行中会议 ID。不负责已结束会议搜索、参会人快照、纪要、逐字稿或录制查询,这些使用 lark-vc 技能。" metadata: requires: bins: ["lark-cli"] cliHelp: "lark-cli vc --help" ---
相关技能:
lark-cli 提示 missing required scope(s) / missing_scopes,不要走普通权限申请流程;先提示用户加入早鸟群确认内测权限已开通,再按“应用身份权限配置检查”处理应用权限、安装和数据范围。lark-cli 返回 error.code=20017 / ErrNotInGray,提示用户加入早鸟群:https://go.larkoffice.com/join-chat/2f4nb0e1-fe00-4f67-bed7-25beaf533fbd。+meeting-list-active 和 +meeting-events 缺少权限时,先按上面的内测提示确认功能已开通,再读取 CLI 错误中的 hint,并根据当前调用身份处理:
--as user:按 CLI 提示为当前用户授权 vc:meeting.meetingevent:read。--as bot:请应用开发者开通 vc:meeting.bot.join:write,不要执行 auth login;随后按“应用身份权限配置检查”确认应用发布、安装和数据范围。本 skill 与 `lark-vc` 并列:
按此分工路由,避免两个 skill 语义混淆。
| 用户意图示例 | 应路由到 | | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | "帮我入会 123456789"、"代我参会"、"让机器人进会旁听" | 本 skill +meeting-join | | "会议现在还开着,谁刚加入了"、"会议里谁在发言"、"有人共享屏幕吗"(进行中会议) | 本 skill +meeting-events | | "我/某个用户现在在哪个会里"、"给我找当前可拉事件的 meeting_id" | 本 skill +meeting-list-active | | "在会里发一句 xx"、"提示大家 xx"、"反馈听不到/看不到/声音清楚/效果不错"(进行中会议) | 本 skill +meeting-message-send | | "退出会议"、"让机器人离开" | 本 skill +meeting-leave | | "昨天那场会有谁参加过"、"搜昨天的会"、"查纪要/逐字稿/录制" | `lark-vc` | | "帮我参会,结束后把纪要发到群" 等跨阶段场景 | 按序编排:本 skill(入会 → 读事件)→ 会议结束后用 `lark-vc` / `lark-minutes` 拉纪要 → `lark-im` 发群 |
不要向用户暴露内部身份缩写;对用户只说“用户身份”或“应用身份”。
| 场景 | 使用身份 | 关键规则 | | ---- | -------- | -------- | | 查询当前登录用户正在参加的会议 | --as user | 不传 --user-id;拿到的 meeting_id 后续继续用 --as user 读事件 | | 查询目标用户且应用机器人也在会中的会议 | --as bot --user-id <user_open_id> | --user-id 必须是 ou_...;拿到的 meeting_id 后续继续用 --as bot 读事件 | | 用户明确要求应用机器人入会/旁听/代参会 | --as bot | 这是写操作,会真实产生入会记录;返回的 meeting.id 后续继续用 --as bot |
硬规则:meeting_id 从哪种身份路径拿到,后续 +meeting-events / +meeting-message-send 就沿用哪种身份,除非用户明确要求切换场景(例如从“仅查询我当前会”改成“让应用机器人入会旁听”)。
+meeting-join。只是查数据不要入会。+meeting-join --meeting-number 只接受 9 位纯数字会议号,不是会议链接整串、也不是 meeting_id。如果用户只是给了 9 位会议号并询问会中内容,先按 +meeting-list-active 的会议号匹配流程找 meeting_id,不要直接入会。meeting.id 必须立刻记录——后续 +meeting-events / +meeting-leave 都靠它,不能用 9 位会议号替代。--as bot 执行真实入会;不要用当前登录用户身份尝试让应用机器人入会。+meeting-join reference 的错误排查段落,重点确认会议号、密码、会议状态、等候室 / 审批以及会议是否禁止当前身份加入。+meeting-events。meeting_id 来自用户身份发现时,继续用 --as user;来自应用身份发现或 +meeting-join 时,继续用 --as bot。身份不一致会导致空结果或权限错误。lark-cli vc +detail --meeting-ids <meeting.id> 获取会议产物信息。note_id、minute_token 和用户意图,按 `lark-vc` 的产物决策读取正文、逐字稿或妙记。vc meeting get --with-participants(见 `lark-vc`)meeting、identity、events、warnings、has_more、page_token;identity 表示当前读取身份,事件 actor 含 participant_type、role 和可读 label,事件细节保留在 payload。--format pretty(时间线更易读,并带当前身份标签);需要稳定字段做结构化处理时用 --format json;需要流式消费事件时用 --format ndjson。has_more=true、pretty 里的 more available,或返回了非空 page_token,就不能把当前结果当作完整事件流;默认应继续分页,或明确告诉用户当前只是部分结果。page_token,下次增量拉取直接续,不要从头再拉。chat_received_items[].message_type == 3 表示会中 reaction;构造 IM post 时,先用 `lark-im` reaction emoji 白名单 判断同一 item 的 content:白名单内才写成 Feishu post emotion 节点,不在白名单内则保留原始 key 并写成文本节点,例如 [CanNotSee]。普通聊天按文本发送。不要从 pretty/Markdown 重新拼消息,也不要把整条消息退化成纯文本;只降级非法 reaction key。用户已说“发给我 / 推送给我 / 发到我的单聊”时,默认用 bot 身份直接发当前用户;收件人不明确时只补问收件人。meeting_id 时,先用用户身份发现当前会议;如果用户明确要求应用机器人视角,或上下文已经是应用机器人参会流程,再用应用身份发现。若返回多个会议,展示候选并让用户选择。meeting_no == <9位会议号>;匹配到唯一会议后取长数字 meeting_id,再用同一身份查事件。只有用户明确要求“入会 / 让应用机器人旁听 / 代我参会”时才改用 +meeting-join。+meeting-message-send。meeting_id,不是 9 位会议号。若用户只给 9 位会议号,先按当前身份执行 +meeting-list-active 并按 meeting_no 匹配,匹配到唯一会议后再发送;不要为了发消息自动入会。发消息只需 meeting_id,不要先查 +detail。meeting_id 来自用户身份发现,就继续 --as user;来自应用身份发现或应用机器人入会,就继续 --as bot。--text;会中表情 / 反馈使用 --emoji-type。--emoji-type 必须从 reference 里的完整列表中选择,大小写敏感。LOVE、SMILE、THUMBSUP)和 4 个 VC 反馈 key(VC_CanNotSee、VC_NoSound、VC_LooksGood、VC_SoundsClear)。emoji_type,也不要把 natural language 硬编码成不存在的 key;如果用户只给语义,可在完整列表中选择最接近的 key,无法判断时先确认。示例:
``bash lark-cli vc +meeting-message-send --as user --meeting-id <meeting_id> --text "稍等,我在看文档" lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type reaction --emoji-type LOVE lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type reaction --emoji-type VC_NoSound ``
+meeting-leave --as bot --meeting-id <长数字 meeting_id>;不应因任务完成而执行离会。--meeting-id 必须是长数字会议 ID,通常来自 +meeting-join 返回的 meeting.id,也可以来自应用身份 +meeting-list-active 返回的 meeting_id。如果来自 list-active,必须确认应用机器人当前就在该会中。不接受 9 位会议号。+meeting-join 即可(非真正"不可逆")。+meeting-list-active 用来发现当前进行中的会议,并拿到后续 +meeting-events 需要的长数字 meeting_id。lark-cli vc +meeting-list-active --as user --format json,用于发现当前登录用户正在参加的会议;后续 +meeting-events 继续 --as user。lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json,--user-id 必须是目标用户 open_id,即 ou_...;返回该用户当前正在参加且应用机器人也在会中的会议。它不是全量会议搜索接口。后续 +meeting-events 继续 --as bot。meeting_title / meeting_no / meeting_id 展示候选,等待用户明确选择后再调用 +meeting-events。meeting_no 匹配。匹配失败时,不要自动入会;只有用户明确要求应用机器人真实入会时,才询问或执行 +meeting-join。```bash
AS=bot JOIN=$(lark-cli vc +meeting-join --as "$AS" --meeting-number 123456789 --format json) MID=$(echo "$JOIN" | jq -r '.data.meeting.id')
lark-cli vc +meeting-events --as "$AS" --meeting-id "$MID" --page-all --format pretty
lark-cli vc +detail --meeting-ids "$MID" ```
如果用户随后明确要求退出 / 离开 / 结束参会,再单独调用 lark-cli vc +meeting-leave --as bot --meeting-id "$MID"。
如果已经知道目标用户 open_id,且 bot 已在会中,也可以先发现当前会:
``bash lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty ``
如果只是回答当前登录用户所在会议发生了什么,使用用户身份一路查:
``bash lark-cli vc +meeting-list-active --as user --format json lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --format pretty ``
Shortcut 是对常用操作的高级封装(lark-cli vc +<verb> [flags])。
| Shortcut | 类型 | 说明 | | --------------------------------------------------------------- | -- | -------------------------------------------------------------------------- | | `+meeting-join` | 写 | Join an in-progress meeting by 9-digit meeting number | | `+meeting-list-active` | 读 | List active meetings and discover meeting_id for event reads | | `+meeting-events` | 读 | List meeting events visible to the app agent (participant joined/left, transcript, chat, share) | | `+meeting-message-send` | 写 | Send an in-meeting text message or reaction emoji | | `+meeting-leave` | 写 | Leave a meeting by meeting\_id |
meeting_id 来源、身份延续、分页和错误码(10005 / 20001 / 20002)。emoji_type 列表、身份延续和写操作风险。meeting_id 的来源与写操作可见性。应用身份 --as bot 报 no permission、missing required scope(s)、missing_scopes、ErrNotInGray 或 20017 时,不要引导用户执行 auth login。按顺序检查:
hint 处理;返回 console_url 时将其原样提供给用户。ErrNotInGray / 20017,再按 VC Agent 内测 privilege / 灰度白名单处理,提示加入早鸟群或联系平台同学开通。用户身份 --as user 调用 +meeting-list-active 或 +meeting-events 报普通 scope 缺失时,按“会议查询权限”处理;其他 shortcut 的 scope 缺失按各自 CLI hint 处理。普通 scope 缺失不表示接口不支持用户身份,只有 CLI 明确表明当前接口不支持用户身份访问时,才按用户意图切换处理:
--as bot,并按上面的应用身份权限配置检查处理。+detailConnecte-toi pour laisser un commentaire.