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

14 KiB
Raw Permalink Blame History

会议管理接口文档

接口列表

1. 创建会议

接口地址: POST /meeting/create_meeting

请求参数:

{
  "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"                   // 扩展字段(选填)
}

响应参数:

{
  "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

请求参数:

{
  "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"                   // 扩展字段(选填)
}

响应参数:

{
  "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

请求参数:

{
  "creatorUserID": "string",        // 创建者用户ID选填
  "status": 1,                     // 会议状态选填1-已预约2-进行中3-已结束4-已取消
  "keyword": "string",              // 搜索关键词(选填,搜索主题和描述)
  "startTime": 1234567890000,       // 开始时间戳(毫秒,选填)
  "endTime": 1234567890000,         // 结束时间戳(毫秒,选填)
  "pagination": {
    "pageNumber": 1,                // 页码从1开始选填默认1
    "showNumber": 20                // 每页数量选填默认20
  }
}

响应参数:

{
  "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

请求参数:

{
  "meetingID": "string"             // 会议ID必填
}

响应参数:

{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {}
}

说明:

  • 只有创建者可以删除会议
  • 删除会议不会删除关联的群聊

会议状态说明

  • 1 - 已预约:会议已创建,等待开始
  • 2 - 进行中:会议正在进行
  • 3 - 已结束:会议已结束(用户端不可见)
  • 4 - 已取消:会议已取消(用户端不可见)

注意: 用户端接口只能查看状态1已预约和2进行中的会议状态3已结束和4已取消的会议对用户端不可见。


通用响应格式

所有接口都遵循统一的响应格式:

{
  "errCode": 0,        // 错误码0表示成功
  "errMsg": "",        // 错误消息
  "errDlt": "",        // 错误详情
  "data": {}           // 响应数据
}

用户端接口

5. 获取会议信息(用户端)

接口地址: POST /meeting/get_meeting

请求参数:

{
  "meetingID": "string"  // 会议ID必填
}

响应参数:

{
  "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

请求参数:

{
  "status": 1,                     // 会议状态选填1-已预约2-进行中(只能查询这两个状态)
  "keyword": "string",              // 搜索关键词(选填,搜索主题和描述)
  "startTime": 1234567890000,       // 开始时间戳(毫秒,选填)
  "endTime": 1234567890000,         // 结束时间戳(毫秒,选填)
  "pagination": {
    "pageNumber": 1,                // 页码从1开始选填默认1
    "showNumber": 20                // 每页数量选填默认20
  }
}

响应参数:

{
  "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已取消的会议对用户端不可见