> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 服务端接口只有 `/server/v1/...` 这一套对外开放，需用 app_id + app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。文档中若出现其它前缀的接口，均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端调用 `/server/v1/channel/grant` 签发后下发。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。

# 核心概念

> SMeeting 的房间、会议、成员与角色模型，以及与底层 RTC 层的术语差异

SMeeting 的模型围绕三类状态组织：**会议状态**、**成员状态**、**媒体状态**。各端 SDK 的接口和事件都是在同步这三类状态，理解这一点之后大部分 API 都会变得自然。

***

## 房间与会议

两个词经常同时出现，含义不同：

| 概念             | 说明                     |
| -------------- | ---------------------- |
| **房间 room**    | 相对固定的会议空间，有房间号         |
| **会议 meeting** | 一次具体的会议，有会议 ID，创建后才能进入 |

日常接入中你主要打交道的是**会议 ID**：创建会议拿到它，之后的进入、会控、录制都用它。房间号更多用于对外分发（把号码发给参会者）。

### 生命周期

```text theme={null}
登录  →  会前（创建 / 查询 / 修改会议）  →  进入会议  →  会中  →  退出会议  →  登出
```

* **登录之后**才能调用会议管理接口
* **进入会议之后**才能调用会中接口（媒体控制、会控、消息）
* 退出会议不影响登录状态，可以接着进下一场

各端 SDK 都会在调用时机不对时返回明确的错误（未登录 / 不在会议中），不用自己维护状态机去猜。

***

## 成员与角色

成员的角色决定他能做什么：

| 角色        | 能力                               |
| --------- | -------------------------------- |
| **主持人**   | 完整会控：静音全场、踢人、改角色、锁定会议、开关等候室、结束会议 |
| **联席主持人** | 由主持人指定，具备大部分会控能力                 |
| **普通成员**  | 自己的音视频开关、举手申请、聊天                 |
| **观众**    | 只收流，不出现在成员列表里                    |

会控动作大多是**请求 - 批准**的形态：成员举手申请开麦，主持人批准；主持人邀请成员开麦，成员同意或拒绝。这样设计是因为开摄像头麦克风涉及用户隐私，不能由主持人单方面强开。

***

## 三条消息通道

SMeeting 里有三种「消息」，接口和适用场景都不同。开发者最常搞混的是后两者：

|      | 会中聊天           | 会中自定义消息      | 会议外消息（IM）             |
| ---- | -------------- | ------------ | --------------------- |
| 前提   | 已进入会议          | 已进入会议        | 已登录并启用 IM，**不需要在会议里** |
| 内容   | 给人看的文字         | 给程序看的业务信令    | 呼叫、会议提醒、等候室移入、子会议求助   |
| 历史记录 | 有，可翻页拉取        | 无            | 无                     |
| 会控   | 可被主持人禁言（全场或单人） | 不受禁言影响       | 不适用                   |
| 典型用途 | 会中文字交流         | 自定义按钮、业务状态同步 | 「有人呼叫你，是否接听」这类会前弹窗    |

<Warning>
  **「IM」这个名字容易被误解。** 它不是聊天工具，也不是第三方即时通讯云服务的替代品 —— 它是一条**独立于会议的通知通道**，作用是在用户还没进会议时也能把消息推给他。

  它**不提供**：好友关系、会话列表、聊天记录、消息漫游、群组、已读回执、离线消息队列。用户长时间离线时的兜底（存库、转推送、短信）要你自己的业务系统做。

  要在会议里做文字交流，用**会中聊天**，不是 IM。
</Warning>

三者的关系可以这样记：**会中聊天给人看，自定义消息给程序看，IM 在会议之外找人。**

底层上，会中的两种消息走的是 [SRTC 的频道内消息](/zh/rtc/key-concepts#消息通道)，会议外消息走 SRTC 的频道外 IM 通道 —— 但你用 SMeeting 时不需要直接接触这一层。

***

## 一个用户，多端同时在线

SMeeting 内置了多端在线的支持：同一个用户在手机和电脑上同时进会，会被识别成两个参会身份（按设备类型区分），互不顶替。

这一层映射由 SMeeting 自动完成 —— 底层每个设备各占一个 RTC 身份，但在会议语义上它们属于同一个用户。你不需要自己拼 uid。

***

## 与 RTC 层的术语差异

SMeeting 建在 SRTC 之上，两层的名词**不通用**。混用会让你在读接口文档时反复卡壳：

| 概念  | 会议层（SMeeting）        | RTC 层（SRTC）        |
| --- | -------------------- | ------------------ |
| 空间  | 房间 room / 会议 meeting | 频道 channel         |
| 出入  | 进入 enter / 退出 exit   | 加入 join / 离开 leave |
| 参与者 | 参会成员                 | 频道用户 uid           |
| 媒体  | 由会议层管理               | 流轨道 track          |

在 SMeeting 的接口里你只会看到会议语义的命名。

<Note>
  少数地方会看到 RTC 层的说法，那不是笔误：错误码里带「频道」字样的（如「该会话不在频道中」）确实来自底层 RTC，原样透传给你便于排查。
</Note>

***

## 与 SRTC 的关系

用 SMeeting 时底层 SRTC 仍在工作，只是被包在里面，正常接入不需要直接调它。

如果你发现自己在反复绕过会议层去操作底层，通常说明选型需要重新考虑 —— 见 [选 SRTC 还是 SMeeting](/zh/choose)。

***

## 下一步

* [Token 与鉴权](/zh/meeting/token) —— 授权流程与密钥安全
* [快速开始](/zh/meeting/quickstart) —— 三种对接方式的流程总览
