> ## 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/...`（SRTC 与 SMeeting 的主接口）和 `/stm/srvapi/v1/...`（SMeeting 的用户体系，服务端极简对接会用到）。鉴权是 app_id + nonce + timestamp + signature 四个请求头，用 app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。除这两组前缀外的接口均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端签发后下发（SRTC 走 `/server/v1/channel/grant`，SMeeting 走 `/stm/srvapi/v1/member/grant`）。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。苹果平台每个产品都有两套 SDK（Swift 原生与 Objective-C），两套 API 不能混用。

# MeetingImEvent

> 接收 Meeting IM 连接、重连、原始消息、呼叫、会议提醒、等候室与讨论组求助事件

`MeetingImEvent` 接收与 Engine 中 IM 连接同生命周期的持续状态和业务消息，通过 `MeetingEngine.imEvent` 注册。可继承 `MeetingImSimpleEvent` 按需覆写。

## 使用说明

* IM 连接独立于当前会议；会议提醒、等候室和讨论组求助等会外消息也从该接口分发。

* 先调用 `enableIm()` 建立连接；`disableIm()` 或 `release()` 导致的主动断开不会触发 `onImDisconnected()`。

* 回调保持 IM 实际来源线程，更新 UI 前应切换到主线程。

## 接口方法

### onImConnected(uid, sid)

```kotlin theme={null}
fun onImConnected(uid: String, sid: String)
```

方法说明：IM 首次建立连接。

参数说明：

| 参数    | 说明           |
| ----- | ------------ |
| `uid` | 当前用户 IM UID。 |
| `sid` | 本次 IM 会话标识。  |

返回值说明：无（`Unit`）。

### onImDisconnected(reason, statusCode, message)

```kotlin theme={null}
fun onImDisconnected(reason: LeaveReason, statusCode: Int, message: String?)
```

方法说明：IM 非主动断开。

参数说明：

| 参数           | 说明            |
| ------------ | ------------- |
| `reason`     | SRTC 定义的断开原因。 |
| `statusCode` | 底层状态码。        |
| `message`    | 可空诊断信息。       |

返回值说明：无（`Unit`）。

### onImReconnecting()

```kotlin theme={null}
fun onImReconnecting()
```

方法说明：IM 断开后开始自动重连。

参数说明：无。

返回值说明：无（`Unit`）。

### onImReconnected()

```kotlin theme={null}
fun onImReconnected()
```

方法说明：IM 自动重连成功。

参数说明：无。

返回值说明：无（`Unit`）。

### onImMessage(uid, sid, name, action, content)

```kotlin theme={null}
fun onImMessage(
    uid: String,
    sid: String,
    name: String,
    action: String,
    content: String
)
```

方法说明：接收未被 Meeting 解析为专用业务事件的原始 IM 消息。

参数说明：

| 参数        | 说明        |
| --------- | --------- |
| `uid`     | 发送者 UID。  |
| `sid`     | 消息所属会话标识。 |
| `name`    | 发送者昵称。    |
| `action`  | 消息动作名。    |
| `content` | 原始消息内容。   |

返回值说明：无（`Unit`）。

### onCallReceived(uid, nickname, callingMsg)

```kotlin theme={null}
fun onCallReceived(
    uid: String,
    nickname: String,
    callingMsg: ImContent.CallingMsg
)
```

方法说明：收到会议通话邀请。

参数说明：

| 参数           | 说明              |
| ------------ | --------------- |
| `uid`        | 邀请方 UID。        |
| `nickname`   | 邀请方昵称。          |
| `callingMsg` | 目标会议 ID、房间号与标题。 |

返回值说明：无（`Unit`）。

### onMeetingRemind(uid, meetingRemind)

```kotlin theme={null}
fun onMeetingRemind(uid: String, meetingRemind: ImContent.MeetingRemind)
```

方法说明：收到预约会议提醒。

参数说明：

| 参数              | 说明             |
| --------------- | -------------- |
| `uid`           | 消息发送方 UID。     |
| `meetingRemind` | 会议与创建者、计划时间信息。 |

返回值说明：无（`Unit`）。

### onMoveOutWaitingRoom(uid, moveOutWaitingRoom)

```kotlin theme={null}
fun onMoveOutWaitingRoom(
    uid: String,
    moveOutWaitingRoom: ImContent.MoveOutWaitingRoom
)
```

方法说明：当前用户被主持人从等候室移入会议。

参数说明：

| 参数                   | 说明           |
| -------------------- | ------------ |
| `uid`                | 消息发送方 UID。   |
| `moveOutWaitingRoom` | 目标会议 ID 与标题。 |

返回值说明：无（`Unit`）。

### onUserHelpSubMeeting(uid, userHelpSubMeeting)

```kotlin theme={null}
fun onUserHelpSubMeeting(
    uid: String,
    userHelpSubMeeting: ImContent.UserHelpSubMeeting
)
```

方法说明：收到讨论组成员发出的求助消息。

参数说明：

| 参数                   | 说明               |
| -------------------- | ---------------- |
| `uid`                | 求助成员 UID。        |
| `userHelpSubMeeting` | 主会议、子会议和讨论组标题信息。 |

返回值说明：无（`Unit`）。
