Files
open-im-server-deploy/docs/meeting-api.md
kim.dev.6789 e50142a3b9 复制项目
2026-01-14 22:16:44 +08:00

416 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 会议管理接口文档
## 接口列表
### 1. 创建会议
**接口地址:** `POST /meeting/create_meeting`
**请求参数:**
```json
{
"meetingID": "string", // 会议ID选填不填则自动生成
"subject": "string", // 会议主题(必填)
"coverURL": "string", // 封面URL选填
"scheduledTime": 1234567890000, // 预约时间戳(毫秒,必填)
"description": "string", // 会议描述(选填)
"duration": 60, // 会议时长(分钟,选填)
"estimatedCount": 100, // 会议预估人数(选填)
"enableMic": true, // 是否开启连麦选填默认false
"enableComment": true, // 是否开启评论选填默认false
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选选填
"ex": "string" // 扩展字段(选填)
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"meetingInfo": {
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中3-已结束4-已取消
"creatorUserID": "string", // 创建者用户ID
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"estimatedCount": 100, // 会议预估人数
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"createTime": 1234567890000, // 创建时间戳(毫秒)
"updateTime": 1234567890000, // 更新时间戳(毫秒)
"ex": "string", // 扩展字段
"groupID": "string" // 关联的群聊ID
},
"groupID": "string" // 创建的群聊ID
}
}
```
**说明:**
- 创建会议时会自动创建一个群聊,群聊名称为"群聊-[会议主题]"
- 会议封面会作为群聊头像
- 如果有主播列表,第一个主播自动成为群主,其他主播成为管理员
- 如果没有主播列表,创建者自动成为群主
---
### 2. 更新会议
**接口地址:** `POST /meeting/update_meeting`
**请求参数:**
```json
{
"meetingID": "string", // 会议ID必填
"subject": "string", // 会议主题(选填)
"coverURL": "string", // 封面URL选填
"scheduledTime": 1234567890000, // 预约时间戳(毫秒,选填)
"status": 2, // 会议状态1-已预约2-进行中3-已结束4-已取消(选填)
"description": "string", // 会议描述(选填)
"duration": 60, // 会议时长(分钟,选填)
"estimatedCount": 100, // 会议预估人数(选填)
"enableMic": true, // 是否开启连麦(选填,使用指针以区分是否设置)
"enableComment": true, // 是否开启评论(选填,使用指针以区分是否设置)
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选选填
"ex": "string" // 扩展字段(选填)
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"meetingInfo": {
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 2, // 会议状态1-已预约2-进行中3-已结束4-已取消
"creatorUserID": "string", // 创建者用户ID
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"estimatedCount": 100, // 会议预估人数
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"createTime": 1234567890000, // 创建时间戳(毫秒)
"updateTime": 1234567890000, // 更新时间戳(毫秒)
"ex": "string", // 扩展字段
"groupID": "string" // 关联的群聊ID
}
}
}
```
**说明:**
- 可以单独更新任意字段,只传需要更新的字段即可
- 更新主题时会同步更新群聊名称
- 更新封面时会同步更新群聊头像
- 更新主播列表时,第一个主播会成为群主,其他主播会成为管理员
- 只有创建者可以更新会议
---
### 3. 获取会议列表
**接口地址:** `POST /meeting/get_meetings`
**请求参数:**
```json
{
"creatorUserID": "string", // 创建者用户ID选填
"status": 1, // 会议状态选填1-已预约2-进行中3-已结束4-已取消
"keyword": "string", // 搜索关键词(选填,搜索主题和描述)
"startTime": 1234567890000, // 开始时间戳(毫秒,选填)
"endTime": 1234567890000, // 结束时间戳(毫秒,选填)
"pagination": {
"pageNumber": 1, // 页码从1开始选填默认1
"showNumber": 20 // 每页数量选填默认20
}
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"total": 100, // 总数
"meetings": [
{
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中3-已结束4-已取消
"creatorUserID": "string", // 创建者用户ID
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"estimatedCount": 100, // 会议预估人数
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"createTime": 1234567890000, // 创建时间戳(毫秒)
"updateTime": 1234567890000, // 更新时间戳(毫秒)
"ex": "string", // 扩展字段
"groupID": "string" // 关联的群聊ID
}
]
}
}
```
**说明:**
- 支持多种查询条件,可以组合使用
- 查询优先级creatorUserID > status > keyword > startTime/endTime > 全部
- 支持分页查询
- 返回的会议信息中包含主播的完整用户信息用户ID、昵称、头像等
---
### 4. 删除会议
**接口地址:** `POST /meeting/delete_meeting`
**请求参数:**
```json
{
"meetingID": "string" // 会议ID必填
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {}
}
```
**说明:**
- 只有创建者可以删除会议
- 删除会议不会删除关联的群聊
---
## 会议状态说明
- `1` - 已预约:会议已创建,等待开始
- `2` - 进行中:会议正在进行
- `3` - 已结束:会议已结束(用户端不可见)
- `4` - 已取消:会议已取消(用户端不可见)
**注意:** 用户端接口只能查看状态1已预约和2进行中的会议状态3已结束和4已取消的会议对用户端不可见。
---
## 通用响应格式
所有接口都遵循统一的响应格式:
```json
{
"errCode": 0, // 错误码0表示成功
"errMsg": "", // 错误消息
"errDlt": "", // 错误详情
"data": {} // 响应数据
}
```
---
## 用户端接口
### 5. 获取会议信息(用户端)
**接口地址:** `POST /meeting/get_meeting`
**请求参数:**
```json
{
"meetingID": "string" // 会议ID必填
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"meetingInfo": {
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"groupID": "string" // 关联的群聊ID
}
}
}
```
**说明:**
- 用户端接口只显示状态为1已预约和2进行中的会议
- 如果会议状态为3已结束或4已取消将返回错误
- 用户端接口不返回管理字段创建者ID、扩展字段、创建时间、更新时间等
- 返回的主播信息包含用户ID、昵称、头像等完整用户信息
---
### 6. 获取会议列表(用户端)
**接口地址:** `POST /meeting/get_meetings_public`
**请求参数:**
```json
{
"status": 1, // 会议状态选填1-已预约2-进行中(只能查询这两个状态)
"keyword": "string", // 搜索关键词(选填,搜索主题和描述)
"startTime": 1234567890000, // 开始时间戳(毫秒,选填)
"endTime": 1234567890000, // 结束时间戳(毫秒,选填)
"pagination": {
"pageNumber": 1, // 页码从1开始选填默认1
"showNumber": 20 // 每页数量选填默认20
}
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"total": 100, // 总数只包含状态1和2的会议
"meetings": [
{
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"groupID": "string" // 关联的群聊ID
}
]
}
}
```
**说明:**
- 用户端接口只显示状态为1已预约和2进行中的会议
- 如果指定status参数只能传入1或2传入其他值将返回错误
- 如果不指定status查询结果会自动过滤只返回状态1和2的会议
- 用户端接口不支持按创建者查询
- 用户端接口不返回管理字段创建者ID、扩展字段、创建时间、更新时间等
- 返回的主播信息包含用户ID、昵称、头像等完整用户信息
---
## 注意事项
1. 所有接口都需要在请求头中携带 `token` 进行身份验证
2. 创建和更新会议时,预约时间不能早于当前时间
3. 创建会议时会自动创建关联的群聊,群聊名称为"群聊-[会议主题]"
4. 更新会议主题或封面时,会同步更新关联群聊的名称或头像
5. 只有会议创建者可以更新和删除会议
6. 用户端接口只提供查看功能,不包含创建、更新、删除等管理功能
7. 用户端接口返回的数据已过滤管理字段创建者ID、扩展字段、创建时间、更新时间等
8. 用户端接口只显示状态为1已预约和2进行中的会议状态3已结束和4已取消的会议对用户端不可见