---
id: "7069770fce5709054a92"
url: "https://www.xmcsl.cn/project/feishu-cli-embed/04-best-practices/01-%E9%A3%9E%E4%B9%A6%E6%99%BA%E8%83%BD%E4%BD%93%E5%85%A5%E4%BC%9A%E6%97%81%E5%90%AC.html"
source_url: "https://open.feishu.cn/document/mcp_open_tools/agent-best-practices/agent-join-feishu-meetings"
source_date: null
checked_at: "2026-11-05T04:21:48.909937+00:00"
status: "ready"
check_scope: "structure_only; not a factual or human review"
body_sha256: "fff2042978a23f74f75f9146d34d4a30017a3c5f09decb988705a019931cc162"
---

# 飞书智能体入会旁听 · 飞书 Agent 接入知识库

> 把这篇文档链接发给你的 AI Agent，它会按步骤帮你把接入跑通。

 

开启旁听模式后，你的 Agent 可以以 <strong>你的身份</strong> 实时获取会议内容 —— 字幕和会中聊天同步可见，你在会里听到什么，它就听到什么。

 

<strong>会议里不会出现任何机器人</strong>，其他参会者感知不到 Agent 的存在。

 

<table>&#10;<thead>&#10;<tr>&#10;<th><strong>可以做</strong></th>&#10;<th>实时获取字幕、会中聊天、参会人进出情况</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><strong>不支持</strong></td>&#10;<td>实时推送（需轮询拉取）；在会上发声</td>&#10;</tr>&#10;<tr>&#10;<td><strong>适合场景</strong></td>&#10;<td>会议纪要、议程追踪、实时问答助手、背后支援型 Agent</td>&#10;</tr>&#10;</tbody>&#10;</table>

 

# 二、准备工作

 

<ol>&#10;<li><strong>加入灰度体验群，获取灰度资格</strong></li>&#10;</ol>

 

只有灰度范围内账号才能开启"允许智能体入会"。请点击<a href="https://go.larkoffice.com/join-chat/c43md189-2992-42e4-8ba7-4b026b78818f">邀请链接</a>或扫码加入「飞书智能体入会 · 早鸟体验群」以获取灰度资格（群 ID：oc\_904f435a6ef99f2923c10e25053279df）。

 

<img alt="image.png" src="https://www.xmcsl.cn/project/feishu-cli-embed/images/61b96d5aeec3.png">

 

<ol start="2">&#10;<li>&#10;<p><strong>创建飞书应用</strong>&#10;进入<a href="https://open.feishu.cn/">飞书开放平台</a>，创建企业自建应用，获取 <code>App ID</code> / <code>App Secret</code>。</p>&#10;</li>&#10;<li>&#10;<p><strong>申请权限并完成用户授权</strong>：</p>&#10;</li>&#10;</ol>

 

需要的权限：<code>vc:meeting.meetingevent:read</code>（用户身份权限）。 申请时 <strong>数据权限范围</strong> 选「按条件筛选」→ 会议的归属者 → 包含 → 选择 「与应用可用范围一致」，权限变更后重新发布。

 

> <strong>&#91;Agent 操作&#93;</strong>
> 
>  
> 
> ````
> > **第一阶段**（立即返回授权链接，发给用户）：
> 
> > ```bash
> > lark-cli auth login --scope "vc:meeting.meetingevent:read" --no-wait --json
> > ```
> 
> > 从输出拿到 `verification_url` 和 `device_code`，把 `verification_url` 用代码块原样发给用户，等用户点击完成授权。
> 
> > **第二阶段**（用户完成授权后执行）：
> 
> > ```bash
> > lark-cli auth login --device-code <device_code_from_step1>
> > ```
> ````

 

<ol start="4">&#10;<li><strong>版本要求</strong>：<ul>&#10;<li>飞书客户端升级到 <strong>7.68+</strong>（飞书 → 头像 → 关于飞书 → 检查更新）</li>&#10;</ul>&#10;</li>&#10;</ol>

 

<ul>&#10;<li>lark-cli 升级到 <strong>v1.0.55+</strong>：<code>npm install -g @larksuite/cli@latest</code></li>&#10;</ul>

 

<ol start="5">&#10;<li><strong>会议开启「允许智能体入会」</strong>：</li>&#10;</ol>

 

<ul>&#10;<li>每场会议由 <strong>owner</strong> 在 <strong>安全设置</strong> 里打开该开关。<ul>&#10;<li>若找不到该选项，<strong>先打开「AI 总结」</strong>，再返回查看。</li>&#10;<li>该开关仅对灰度范围内账号可见。</li>&#10;</ul>&#10;</li>&#10;</ul>

 

<img alt="image.png" src="https://www.xmcsl.cn/project/feishu-cli-embed/images/719948dd79d2.png">

 

# 三、接入流程

 

```
用户本人在飞书会议中
    ↓
Agent 调用 GetUserActiveMeeting → 拿到 meeting_id
    ↓
Agent 调用 ListMeetingEvents 拉取会中事件（字幕、聊天等）
    ↓
Agent 通过飞书 IM 将分析结果发给用户
```

 

<strong>lark-cli 示例：</strong>

 

```bash
# 查询用户当前所在会议
lark-cli vc +meeting-list-active --as user

# 拉取会中事件（首次全量，后续用 page_token 增量）
lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all
```

 

> <strong>关键约束</strong>： \- UAT 场景无实时推送，需要轮询拉取。 \- 用户必须本人在会中，且会议已开「允许智能体入会」。

 

# 四、API 参考

 

## GetUserActiveMeeting — 获取用户活跃会议

 

<code>GET /open-apis/vc/v1/bots/user&#95;active&#95;meeting</code>

 

返回用户当前所在的会议列表，每项含 <code>meeting&#95;id</code>、<code>meeting&#95;no</code>、<code>meeting&#95;title</code>。有多个会议时让用户选一个。详情参考 <a href="https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/bot/user_active_meeting">获取用户活跃会议</a>。

 

## ListMeetingEvents — 获取会议事件

 

<code>GET /open-apis/vc/v1/bots/events</code>

 

获取会议中的事件列表，包括参会人加入或离开、发言、聊天、共享等事件。详情参考<a href="https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/bot/events">获取会议事件</a>。

 

# 五、事件数据结构

 

通过 ListMeetingEvents 返回的事件，按 <code>activity&#95;event&#95;type</code> 区分类型。

 

## 字幕 transcript\_received\_items

 

```json
{
  "speaker": { "id": "xxx", "user_type": 1, "user_name": "张三" },
  "text": "今天来讨论一下这个方案",
  "language": "zh-CN",
  "start_time_ms": "1716699012000",
  "end_time_ms": "1716699014000",
  "sentence_id": "100001"
}
```

 

<code>user&#95;type</code> 可能为声纹检测类型（100/101/102），需兼容处理。

 

## 聊天消息 chat\_received\_items

 

```json
{
  "operator": { "id": "xxx", "user_name": "张三" },
  "message_id": "om_xxx",
  "message_type": 1,
  "content": "大家好",
  "send_time": "1716699030000"
}
```

 

<code>message&#95;type</code>：1=文本，2=系统，3=表情，4=加密。

 

## 参会人进入 participant\_joined\_items

 

```json
{
  "participant": { "id": "xxx", "user_type": 1, "user_role": 1, "user_name": "张三" },
  "join_time": "1716699010000"
}
```

 

## 参会人离开 <code>participant&#95;left&#95;items</code>

 

```json
{
  "participant": { "id": "xxx", "user_name": "张三" },
  "leave_reason": 1,
  "leave_time": "1716700000000"
}
```

 

<code>leave&#95;reason</code>：1=主动离会，2=会议结束，3=被踢出。

 

# 六、排查清单

 

<table>&#10;<thead>&#10;<tr>&#10;<th>问题</th>&#10;<th>原因</th>&#10;<th>解决方案</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td>拉事件报无权限</td>&#10;<td>用户不在会，或会议未开「允许智能体入会」</td>&#10;<td>确认用户在会中且开关已开</td>&#10;</tr>&#10;<tr>&#10;<td>meeting&#95;id 用错</td>&#10;<td>用了 9 位会议号</td>&#10;<td>用 GetUserActiveMeeting 查到的长 ID</td>&#10;</tr>&#10;<tr>&#10;<td>拿不到实时字幕</td>&#10;<td>旁听模式无推送</td>&#10;<td>正常，需轮询调 ListMeetingEvents</td>&#10;</tr>&#10;</tbody>&#10;</table>
