API说明
AUI Kits课堂场景的AppServer提供了登录服务和教室(直播间)管理服务等后台服务,通过与AUI Kits课堂场景SDK搭配使用可以快速实现互动课堂应用。
接口概览
API | 是否鉴权 | 是否必须 | 描述 | ||||
/api/v1/class/login 或 /login | 否 | 否 | 登录。 登录成功会返回token标识,只有带有该标识才能访问授权的接口。 | ||||
/api/v1/class/token | 是 | 是 | 获取IM建连的token。 | ||||
/api/v1/class/create | 是 | 是 | 创建教室。 | ||||
/api/v1/class/list | 是 | 是 | 分页获取教室列表。 | ||||
/api/v1/class/get | 是 | 是 | 获取单个教室。 | ||||
/api/v1/class/joinClass | 是 | 是 | 加入教室。 | ||||
/api/v1/class/leaveClass | 是 | 是 | 离开教室。 | ||||
/api/v1/class/start | 是 | 是 | 开始上课。 | ||||
/api/v1/class/stop | 是 | 是 | 结束上课。 | ||||
/api/v1/class/pause | 是 | 是 | 暂停上课。 | ||||
/api/v1/class/listMembers | 是 | 否 | 获取成员列表。 | ||||
/api/v1/class/kickClass | 是 | 否 | 将指定成员踢出教室。 | ||||
/api/v1/class/update | 是 | 否 | 更新教室公告等信息。 | ||||
/api/v1/class/getMeetingInfo | 是 | 否,仅连麦场景使用 | 获取连麦信息。 | ||||
/api/v1/class/updateMeetingInfo | 是 | 否,仅连麦场景使用 | 更新连麦信息。 | ||||
/api/v1/class/getWhiteboardAuthInfo | 是 | 是 | 获取白板身份验证接口。 | ||||
/api/v1/class/addDoc | 是 | 是 | 添加课件。 | ||||
/api/v1/class/deleteDoc | 是 | 是 | 删除课件。 | ||||
/api/v1/class/queryDoc | 是 | 是 | 查询教室课件。 | ||||
/api/v1/class/addDocs | 是 | 是 | 批量添加课件。 | ||||
/api/v1/class/deleteDocs | 是 | 是 | 批量删除课件。 | ||||
/api/v1/class/setAssistantPermit | 是 | 是 | 设置助教权限。 | ||||
/api/v1/class/deleteAssistantPermit | 是 | 是 | 删除助教权限。 | ||||
/api/v1/class/getAssistantPermit | 是 | 是 | 获取助教权限。 |
鉴权方式
Demo中的鉴权实现供参考,用户可自行调整鉴权策略。
需要先调用/login
接口获取鉴权的token,将token放到请求头中,然后再调用其它接口。
详细接口定义
登录
用户可按自身业务需求实现该接口,包括token的生成算法也是可以自定义,要确保生成及检验token使用相同的算法。
使用说明
请求协议:http/https
请求Path:/login 或 /api/v1/class/login
是否需要授权:否
请求Method:POST
请求ContentType:JSON
请求参数
Demo设计中,username和password相同才能登录。
名称 | 类型 | 是否必填 | 示例值 | 描述 |
username | String | 是 | usernamexxx | 用户名。 |
password | String | 是 | passwordxxxx | 密码。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
success | bool | true | 业务是否成功。 |
data | String | 2023-02-28T14:38:06+08:00 | 过期时间。使用UTC时间格式。 |
String | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9*** | 授权凭证。默认使用jwt生成。 |
请求示例
{
"username":"usernamexxx",
"password":"passwordxxxx"
}
返回示例
{
"success": true,
"data": {
"expire": "2023/08/15 14:54:58",
"token": "eyJ0eXAiOiJKV1QiLC****"
}
}
获取IM建联的Token
AppServer调用的是视频直播互动消息的GetMessageToken接口,详细信息,请参见获取长连接建连Token。
使用说明
请求协议:http/https
请求Path:/api/v1/class/token
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 |
user_id | String | 是 | useridxxxx | 用户UserId,用户自定义,在AppId下唯一。 |
device_id | String | 是 | deviceidxxx | 终端设备ID,唯一代表一个用户终端设备,用户自定义。 |
device_type | String | 是 | android | 终端设备类型,取值:ios、android、web、pc。 |
im_server | Array | 是 | ["aliyun", "rongCloud"] 或者 ["aliyun"] 或者 ["rongCloud"] | 字符串数据,如果希望同时支持阿里云及融云的互动消息,可以传aliyun及rongCloud, 否则按需传相应值。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
success | bool | true | 业务是否成功。 |
data | String | oauth_cloud_key:***-b0YY5Gy6Q | 用于长连接建连的Token。 |
String | oauth_cloud_key:***-b0YY5Gy6Q | 更新Token,若AccessToken过期,则可以使用RefreshToken再次获取新Token。 |
请求示例
{
"user_id": "useridxxxx",
"device_id": "deviceidxxxxx",
"device_type":"android"
}
返回示例
{
"success": true,
"data": {
"access_token": "MuYwWTNPVGTmhWFby****",
"refresh_token": "uY29kkuSWnBZMFM5****"
}
}
创建教室
AppServer调用了以下接口能力,详细信息请参见:
创建群信息(消息组):创建消息组。
视频直播地址生成规则:生成推流地址和播放地址。
连麦直播地址生成规则:直播连麦地址规则。
使用说明
请求协议:http/https
请求Path:/api/v1/class/create
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
title | String | 是 | titlexxxx | 课程标题。 | |||
notice | String | 否 | noticexxx | 教室公告。 | |||
teacher_id | String | 是 | teacherxxxx | 老师ID。 | |||
teacher_nick | String | 否 | teachernickxxxx | 老师昵称。 | |||
mode | Integer | 否 | 0 | 教室模式,默认为0。
| |||
extends | String | 否 | {"xx":"xxx"} | 扩展字段,JSON格式字符串。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | 教室ID。 | |||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | 创建时间。 | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | 修改时间。 | ||||
title | String | titlexxx | 教室标题。 | ||||
notice | String | noticexxx | 教室公告。 | ||||
teacher_id | String | teacher_idxxx | 老师ID。 | ||||
teacher_nick | String | teacher_nickxxx | 老师昵称。 | ||||
extends | String | {"xx":"xxx"} | 扩展字段。 | ||||
status | Integer | 0 | 教室状态: 0:准备中 1:上课 2:下课 | ||||
mode | Integer | 0 | 教室模式。
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | IM群ID。 | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-xxxxxx | 连麦ID。 | ||||
meeting_info | String | {"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]} | Json字符串。连麦观众信息 | ||||
link_info | JSON | 连麦地址集合。 | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/xxxx | rtc推流地址。 | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/xxxx | rtc拉流地址。 | ||||
link_info.cdn_pull_info | JSON | 普通观众的拉流地址集合。 | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pullxxxx | rtmp拉流。 | ||||
link_info.cdn_pull_info.rts_url | String | artc://pullxxxx | rts拉流。 | ||||
link_info.cdn_pull_info.hls_url | String | http://pullxxxx.m3u8?xxxx | hls拉流。 | ||||
link_info.cdn_pull_info.flv_url | String | http://pullxxxx.flv?xxxx | flv拉流。 |
请求示例
{
"title": "titlexxx",
"notice": "noticexxx",
"teacher_id":"老师Id",
"teacher_nick":"老师nick",
"mode":0,
"extends":"{\"xx\":\"xxx\"}"
}
响应示例
{
"success": true,
"data": {
"id": "3125adcd-06c0-469f-8c5e****",
"title": "课堂2014346",
"status": 0,
"mode": 0,
"boards": "{\"appKey\":\"xxxx\",\"boardId\":\"xxxxxxxxxxx-469f-xxxx-bbb30cf97a96\",\"boardTitle\":\"课堂2014346\",\"cid\":\"1346126033569775\",\"code\":200,\"message\":\"succeed\",\"uid\":1691478833}",
"created_at": "2023/08/08 15:13:53",
"updated_at": "2023/08/08 15:13:53",
"extends": "{}",
"chat_id": "3125adcd-06c0-469f-8c5e-bbb30****",
"meeting_id": "977a1866-f469-4646-9dc4-85ae45****",
"teacher_id": "test072",
"teacher_nick": "test072",
"link_info": {
"rtc_push_url": "artc://lxxxxxxxxxxxxxx",
"rtc_pull_url": "artc://xxxxxxxxxxxxxxxxxxx",
"cdn_pull_info": {
"rtmp_url": "rtmp://xxxxxxxxxxxxxxxxxxx",
"rts_url": "artc://xxxxxxxxxxxxxxx",
"flv_url": "https://xxxxxxxxxxxxxxx",
"hls_url": "https://xxxxxxxxxxxxxxxxxxxxxxxxx",
"rtmp_oriaac_url": "rtmp://xxxxxxxxxxxxxxxxxxxxx",
"rts_oriaac_url": "artc://xxxxxxxxxxxxxxxxxxxxxxxx",
"flv_oriaac_url": "https://xxxxxxxxxxxxxxxxxxxx",
"hls_oriaac_url": "https://xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
分页获取教室列表
AppServer调用了以下接口能力,详细信息请参见:
ListMessageGroupUserById:通过用户ID查询用户信息。
SearchMedia:SearchMedia - 搜索媒体信息。
GetPlayInfo:GetPlayInfo - 获取音视频播放地址。
只有请求的userId是群主才会返回推流地址。
使用说明
请求协议:http/https
请求Path:/api/v1/class/list
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | useridxxx | 用户UserID。 | |||
page_num | Integer | 是 | 1 | 页码,默认值:1。 | |||
page_size | Integer | 是 | 10 | 单页显示数量,默认值:10。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | 教室ID。 | |||
created_at | String | 2023-02-27T17:34:00.592750182+08:00 | 创建时间。 | ||||
updated_at | String | 2023-02-27T17:34:00.592750182+08:00 | 修改时间。 | ||||
started_at | String | 2023-02-27T18:54:37+08:00 | 课程上课时间。 | ||||
stopped_at | String | 2023-02-27T19:25:37+08:00 | 课程下课时间。 | ||||
title | String | titlexxx | 课程标题。 | ||||
notice | String | noticexxx | 课程公告。 | ||||
teacher_id | String | teacher_idxxx | 老师Id。 | ||||
teacher_nick | String | teacher_nickxxx | 老师昵称。 | ||||
extends | String | {"xx":"xxx"} | 扩展字段。 | ||||
status | Integer | 0 | 课程状态。 0:准备中 1:上课 2:下课 | ||||
mode | Integer | 0 | 教室模式。
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3xxxx | IM群ID。 | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-xxxxxx | 连麦ID。 | ||||
meeting_info | String | {"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]} | Json字符串。连麦观众信息。 | ||||
vod_info | JSON | 教室录制视频信息。 | |||||
vod_info.status | Integer | 1 | 录制视频的状态。
| ||||
vod_info.playlist | Array | 录制的视频信息。 | |||||
vod_info.playlist[].bit_rate | String | 858.198 | 媒体流码率。 | ||||
vod_info.playlist[].creation_time | String | 2017-06-26T06:38:48Z | 音/视频创建时间。格式为:yyyy-MM-ddTHH:mm:ssZ(UTC时间)。 | ||||
vod_info.playlist[].definition | String | OD | 视频流清晰度定义。
| ||||
vod_info.playlist[].duration | String | 67.685 | 媒体流长度。单位:秒。 | ||||
vod_info.playlist[].format | String | m3u8 | 媒体流格式。
| ||||
vod_info.playlist[].fps | String | 90000.0 | 媒体流帧率。 | ||||
vod_info.playlist[].height | Long | 720 | 媒体流高度。单位:px。 | ||||
vod_info.playlist[].width | Long | 1280 | 媒体流宽度。单位:px。 | ||||
vod_info.playlist[].play_url | String | https://vod.h5vxxx/Record/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbxxxx.m3u8 | 视频流的播放地址。 | ||||
vod_info.playlist[].size | Long | 3034884 | 媒体流大小。单位:Byte。 | ||||
vod_info.playlist[].status | String | Normal | 媒体流状态,取值:
| ||||
vod_info.playlist[].stream_type | String | 媒体流类型。若媒体流为视频则取值:video,若是纯音频则取值:audio。 | |||||
user_status | JSON | 用户的禁言状态。 | |||||
user_status.mute | Boolean | false | 用户是否被禁言。取值:
| ||||
user_status.mute_source | String | 暂时没有返回。 | |||||
link_info | JSON | 连麦地址集合。 | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/xxxx | rtc推流地址。 | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/xxxx | rtc拉流地址。 | ||||
link_info.cdn_pull_info | JSON | 普通观众的拉流地址集合。 | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pullxxxx | rtmp拉流。 | ||||
link_info.cdn_pull_info.rts_url | String | artc://pullxxxx | rts拉流。 | ||||
link_info.cdn_pull_info.hls_url | String | http://pullxxxx.m3u8?xxxx | hls拉流。 | ||||
link_info.cdn_pull_info.flv_url | String | http://pullxxxx.flv?xxxx | flv拉流。 |
请求示例
{
"page_size": 10,
"page_num":1,
"user_id": "useridxxxx"
}
响应示例
{
"success": true,
"data": [
{
"id": "848018e7-7475-4cdc-802c-2****",
"title": "class_2014346",
"status": 0,
"mode": 0,
"meetingInfo": "{\"members\":[{\"camera_opened\":true,\"mic_opened\":true,\"rtc_pull_url\":\"artc://class.aliyun.com/play/2bafb67b-4491-4686-a8a9-f049192e8027?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53&userId=paperclouds×tamp=1681806125&token=b341f9c4ceb9c6693439d9582a77e2392608bd0b9d5e0e17fdde94e019e91716\",\"user_avatar\":\"https://img.alicdn.com/imgextra/i1/O1CN01P6zzLk1muv3zymjjD_!!6000000005015-2-tps-80-80.png\",\"user_id\":\"paperclouds\",\"user_nick\":\"paperclouds\"}]}",
"boards": "{\"appKey\":\"1539cfca9****\",\"boardId\":\"*****8bc90dc\",\"boardTitle\":\"class_2014346\",\"cid\":\"1346145199998938\",\"code\":200,\"message\":\"succeed\",\"uid\":1692063745}",
"created_at": "2023/08/15 09:42:26",
"updated_at": "2023/08/15 09:52:22",
"extends": "{}",
"chat_id": "848018e7-7475-4cdc-802c-2****",
"meeting_id": "ef6ec82b-0f69-48d9-b8eb-962****",
"teacher_id": "test_1234567",
"teacher_nick": "test_11",
"user_status": {
"mute": false,
"mute_source": []
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/******",
"rtc_pull_url": "artc://live.aliyun.com/play/******",
"cdn_pull_info": {
"rtmp_url": "rtmp://ep-pull.h5video.vip/live/******",
"rts_url": "artc://ep-pull.h5video.vip/live/******",
"flv_url": "https://ep-pull.h5video.vip/live/******",
"hls_url": "https://ep-pull.h5video.vip/live/******",
"rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/******",
"rts_oriaac_url": "artc://ep-pull.h5video.vip/live/******",
"flv_oriaac_url": "https://ep-pull.h5video.vip/live/******",
"hls_oriaac_url": "https://ep-pull.h5video.vip/live/******"
}
},
"metrics": {
"pv": 0,
"uv": 0,
"like_count": 0,
"online_count": 0
}
},
{
"id": "70c77020-2783-48c2-9088-539****",
"title": "class_2014346",
"status": 1,
"mode": 0,
"boards": "{\"appKey\":\"1539cfca9ff****\",\"boardId\":\"7****c2-9088-5391abe075ac\",\"boardTitle\":\"class_2014346\",\"cid\":\"1346142836901860\",\"code\":200,\"message\":\"succeed\",\"uid\":1691991630}",
"created_at": "2023/08/14 13:40:31",
"updated_at": "2023/08/14 13:49:27",
"extends": "{}",
"chat_id": "70c77020-2783-48c2-9088-5391a******",
"meeting_id": "91b6e34a-f19c-44bb-8c8a-acc5******",
"teacher_id": "test072",
"teacher_nick": "test072",
"started_at": "2023/08/14 13:49:27",
"stopped_at": "2023/08/14 13:48:53",
"user_status": {
"mute": false,
"mute_source": []
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/******",
"rtc_pull_url": "artc://live.aliyun.com/play/******",
"cdn_pull_info": {
"rtmp_url": "rtmp://ep-pull.h5video.vip/live/*******",
"rts_url": "artc://ep-pull.h5video.vip/live/*******",
"flv_url": "https://ep-pull.h5video.vip/live/*******",
"hls_url": "https://ep-pull.h5video.vip/live/******",
"rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/******",
"rts_oriaac_url": "artc://ep-pull.h5video.vip/live/******",
"flv_oriaac_url": "https://ep-pull.h5video.vip/live/******",
"hls_oriaac_url": "https://ep-pull.h5video.vip/live/******"
}
},
"metrics": {
"pv": 0,
"uv": 0,
"like_count": 0,
"online_count": 0
}
}
]
}
获取单个教室
实现原理:请参考/api/v1/class/list
实现。
使用说明
请求协议:http/https
请求Path:/api/v1/class/get
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 |
id | String | 是 | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 教室ID。 |
user_id | String | 是 | Ced**** | UserID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | id | String | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 教室ID。 | |||
created_at | String | 2023/11/24 11:20:44 | 创建时间。 | ||||
updated_at | String | 2023/11/24 11:20:44 | 修改时间。 | ||||
started_at | String | 2023-02-27T18:54:37+08:00 | 课程上课时间。 | ||||
stopped_at | String | 2023-02-27T19:25:37+08:00 | 课程下课时间。 | ||||
title | String | 直播标题 | 课程标题。 | ||||
notice | String | noticexxx | 课程公告。 | ||||
teacher_id | String | teacher_idxxx | 老师ID。 | ||||
teacher_nick | String | teacher_nickxxx | 老师昵称。 | ||||
extends | String | {"xx":"xxx"} | 扩展字段。 | ||||
status | Integer | 0 | 课程状态。 0:准备中 1:上课 2:下课 | ||||
mode | Integer | 0 | 教室模式。
| ||||
chat_id | String | ee487235-5f9b-4cb3-82ce-45c91c3**** | IM群ID。 | ||||
meeting_id | String | 0a7656c4-c01b-424d-9882-23**** | 连麦ID。 | ||||
meeting_info | String | {"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]} | JSON字符串。连麦观众信息。 | ||||
vod_info | JSON | 教室录制视频信息。 | |||||
vod_info.status | Integer | 1 | 录制视频的状态。
| ||||
vod_info.playlist | Array | 录制的视频信息。 | |||||
vod_info.playlist[].bit_rate | String | 858.198 | 媒体流码率。 | ||||
vod_info.playlist[].creation_time | String | 2017-06-26T06:38:48Z | 音/视频创建时间。格式为:yyyy-MM-ddTHH:mm:ssZ(UTC时间)。 | ||||
vod_info.playlist[].definition | String | OD | 视频流清晰度定义。
| ||||
vod_info.playlist[].duration | String | 67.685 | 媒体流长度。单位:秒。 | ||||
vod_info.playlist[].format | String | m3u8 | 媒体流格式。
| ||||
vod_info.playlist[].fps | String | 90000.0 | 媒体流帧率。 | ||||
vod_info.playlist[].height | Long | 720 | 媒体流高度。单位:px。 | ||||
vod_info.playlist[].width | Long | 1280 | 媒体流宽度。单位:px。 | ||||
vod_info.playlist[].play_url | String | https://vod.h5vxxx/Record/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbxxxx.m3u8 | 视频流的播放地址。 | ||||
vod_info.playlist[].size | Long | 3034884 | 媒体流大小。单位:Byte。 | ||||
vod_info.playlist[].status | String | Normal | 媒体流状态,取值:
| ||||
vod_info.playlist[].stream_type | String | 媒体流类型。若媒体流为视频则取值:video,若是纯音频则取值:audio。 | |||||
user_status | JSON | 用户的禁言状态。 | |||||
user_status.mute | Boolean | false | 用户是否被禁言。取值:
| ||||
user_status.mute_source | String | 暂时没有返回。 | |||||
link_info | JSON | 连麦地址集合。 | |||||
link_info.rtc_push_url | String | artc://live.aliyun.com/push/xxxx | RTC推流地址。 | ||||
link_info.rtc_pull_url | String | artc://live.aliyun.com/play/xxxx | RTC拉流地址。 | ||||
link_info.cdn_pull_info | JSON | 普通观众的拉流地址集合。 | |||||
link_info.cdn_pull_info.rtmp_url | String | rtmp://pullxxxx | RTMP拉流。 | ||||
link_info.cdn_pull_info.rts_url | String | artc://pullxxxx | RTS拉流。 | ||||
link_info.cdn_pull_info.hls_url | String | http://pullxxxx.m3u8?xxxx | HLS拉流。 | ||||
link_info.cdn_pull_info.flv_url | String | http://pullxxxx.flv?xxxx | FLV拉流。 | ||||
assistantPermit | jsonObject | 助教信息 | |||||
assistantPermit.identity | Integer | 2 | 助教的标识。只会返回2
| ||||
assistantPermit.user_id | String | uid_0811 | 助教UID。 | ||||
assistantPermit.user_name | String | nick_0811 | 助教昵称。 | ||||
assistantPermit.user_avatar | String | https://abc.com.jpg | 助教头像。 | ||||
assistantPermit.join_time | String | 2023/11/24 11:45:11 | 助教加入时间。 | ||||
assistantPermit.status | Integer | 1 | 助教状态,只会返回1
|
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89053****",
"user_id": "Cedric8"
}
响应示例
{
"success": true,
"data": {
"id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
"title": "直播标题",
"status": 0,
"mode": 1,
"boards": "{\"appKey\":\"1539cfca9ffb1907612ace273f34****\",\"boardId\":\"89bdb7ab-7fa9-4061-8a73-c7c18a9c****\",\"boardTitle\":\"直播标题\",\"cid\":\"134746471155****\",\"code\":200,\"message\":\"succeed\",\"uid\":170079****}",
"created_at": "2023/11/24 11:20:44",
"updated_at": "2023/11/24 11:20:44",
"extends": "{\"xx\":\"xxx\"}",
"aliyun_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
"meeting_id": "e65c9abd-0def-49c3-b7db-29380dbc****",
"teacher_id": "t2****",
"user_status": {
"mute": false,
"mute_source": []
},
"link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290e****&userId=Cedric8×tamp=1700884074&token=ee3b0b5458292764aff42265cc16ef10c55cfd817983da32c5aab67b63d8****",
"rtc_pull_url": "artc://live.aliyun.com/play/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290e****&userId=Cedric8×tamp=1700884074&token=ee3b0b5458292764aff42265cc16ef10c55cfd817983da32c5aab67b63d8****",
"cdn_pull_info": {
"rtmp_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera?auth_key=1701402474-0-0-5488182f42c55597d7a65262cb93****",
"rts_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera?auth_key=1701402474-0-0-5488182f42c55597d7a65262cb93****",
"flv_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera.flv?auth_key=1701402474-0-0-217690ced5d7ae166b8222718cc7****",
"hls_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera.m3u8?auth_key=1701402474-0-0-311865f889ab94b531b776deeb22*****",
"rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac?auth_key=1701402474-0-0-de0468d8013516c2d5b1c251a042****",
"rts_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac?auth_key=1701402474-0-0-de0468d8013516c2d5b1c251a042****",
"flv_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac.flv?auth_key=1701402474-0-0-9ff4d9db9fe41cc08f1b950ce385****",
"hls_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac.m3u8?auth_key=1701402474-0-0-50c98d4262ed304d82d228b6eb0e****",
"rtmp_screen_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen?auth_key=1701402474-0-0-c880a5255d02860d2830333c2179****",
"rts_screen_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen?auth_key=1701402474-0-0-c880a5255d02860d2830333c2179****",
"flv_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen.flv?auth_key=1701402474-0-0-5d5a4c3537fbf97732f4091c6507****",
"hls_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen.m3u8?auth_key=1701402474-0-0-7bea0e5a1e715167ed0163dc28d2****",
"rtmp_screen_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac?auth_key=1701402474-0-0-49a353bc7045bc7e02b30011744****",
"rts_screen_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac?auth_key=1701402474-0-0-49a353bc7045bc7e02b30011744a****",
"flv_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac.flv?auth_key=1701402474-0-0-884d844b495211998c17deff2de4****",
"hls_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac.m3u8?auth_key=1701402474-0-0-d7082418622843fa2d2bc6328df8****"
}
},
"shadow_link_info": {
"rtc_push_url": "artc://live.aliyun.com/push/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290efe28&userId=Cedric8_shadow×tamp=1700884074&token=3d7eb925d972507649b8a4449a973ea42b5bc61436b81197152ab85b039e68bb",
"rtc_pull_url": "artc://live.aliyun.com/play/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290efe28&userId=Cedric8_shadow×tamp=1700884074&token=3d7eb925d972507649b8a4449a973ea42b5bc61436b81197152ab85b039e68bb",
"cdn_pull_info": {
"rtmp_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera?auth_key=1701402474-0-0-0e9ecb44e8679cf499d97a5b7f134f49",
"rts_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera?auth_key=1701402474-0-0-0e9ecb44e8679cf499d97a5b7f134f49",
"flv_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera.flv?auth_key=1701402474-0-0-4e87b9507ab9fd9e292a4b3c7cab57bc",
"hls_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera.m3u8?auth_key=1701402474-0-0-a63f44591197376c468e35efabb86d7c",
"rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac?auth_key=1701402474-0-0-99ce59f488f32f7060b56068a8221389",
"rts_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac?auth_key=1701402474-0-0-99ce59f488f32f7060b56068a8221389",
"flv_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac.flv?auth_key=1701402474-0-0-584f2e4fb304c8a83f615a3cb68aa1cc",
"hls_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac.m3u8?auth_key=1701402474-0-0-78d9904b39938fe340883b1615afd892",
"rtmp_screen_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen?auth_key=1701402474-0-0-634f9900cc06265fcea122b7b302e8bc",
"rts_screen_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen?auth_key=1701402474-0-0-634f9900cc06265fcea122b7b302e8bc",
"flv_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen.flv?auth_key=1701402474-0-0-a2d31ee5cec8c2f652546117e9857fda",
"hls_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen.m3u8?auth_key=1701402474-0-0-7f12b3daf2be89ff96d974df72d4a889",
"rtmp_screen_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac?auth_key=1701402474-0-0-ac851500fe28704e42393229eefb9bf5",
"rts_screen_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac?auth_key=1701402474-0-0-ac851500fe28704e42393229eefb9bf5",
"flv_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac.flv?auth_key=1701402474-0-0-4e4c1fb7bb058ac33c5cb5bf01a07433",
"hls_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac.m3u8?auth_key=1701402474-0-0-c16b0fda1b3ed0f54eea180f79d95271"
}
},
"metrics": {
"pv": 0,
"uv": 0,
"like_count": 0,
"online_count": 0
},
"assistantPermit": {
"identity": 2,
"status": 1,
"class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
"user_id": "0811",
"user_name": "0811",
"user_avatar": "https://abc.com.jpg",
"join_time": "2023/11/24 11:45:11"
}
}
}
加入教室
使用说明
请求协议:http/https
请求Path:/api/v1/class/joinClass
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 |
class_id | String | 是 | titlexxxx | 教室ID。 |
user_id | String | 是 | noticexxx | 用户ID。 |
user_name | String | 是 | teacherxxxx | 用户名称。 |
user_avatar | String | 否 | teachernickxxxx | 用户头像。 |
identity | Integer | 否 | 2 | 如果是助教,必须传identity为2,其它身份可不传。 |
返回数据
名称 | 类型 | 示例值 | 描述 | |||||
success | bool | true | 是否成功。 |
请求示例
{
"class_id":"ce4da2e0-18a1-40fe-a9c8-840*****",
"user_id":"0810",
"user_name":"0810",
"user_avatar":"https://****.jpg"
}
响应示例
{
"success": true
}
说明
有两种joinClass异常情况,需要前端处理:
ClassNotAssistantPermit:表示未创建助教权限,不允许登录助教
{ "success": false, "data": { "reason": "ClassNotAssistantPermit" } }
ClassHasAssistant: 表示课堂已经存在一个在线的助教,不允许再登录另一个助教
{ "success": false, "data": { "reason": "ClassHasAssistant" } }
离开教室
使用说明
请求协议:http/https
请求Path:/api/v1/class/leaveClass
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
class_id | String | 是 | titlexxxx | 教室ID。 | |||
user_id | String | 是 | noticexxx | 用户ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | |||||
success | bool | true | 是否成功。 |
请求示例
{
"class_id":"ce4da2e0-18a1-40fe-a9c8-84078a*****",
"user_id":"0810"
}
响应示例
{
"success": true
}
开始上课
实现原理:修改DB的教室状态status字段值。注意缓存一致性。
使用说明
请求协议:http/https
请求Path:/api/v1/class/start
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | useridxxxx | 用户UserID,用户自定义,在AppID下唯一。 | |||
id | String | 是 | classIdxxxx | 教室ID。 |
返回数据
请参考/api/v1/class/get
获取单个教室的响应参数。
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa8*****",
"user_id": "useridxxxx"
}
响应示例
请参考/api/v1/class/get
获取单个教室的响应参数示例。
结束上课
实现原理:修改DB的教室状态status字段值。.注意缓存一致性。
使用说明
请求协议:http/https
请求Path:/api/v1/class/stop
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | useridxxxx | 用户UserID,用户自定义,在AppID下唯一。 | |||
id | String | 是 | classIdxxxx | 教室ID。 |
返回数据
请参考/api/v1/class/get
获取单个教室的响应参数。
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa890*****",
"user_id": "useridxxxx"
}
响应示例
请参考/api/v1/class/get
获取单个教室的响应参数示例。
暂停上课
实现原理:修改DB的教室状态status字段值。注意缓存一致性。
使用说明
请求协议:http/https
请求Path:/api/v1/class/pause
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | useridxxxx | 用户UserID,用户自定义,在AppID下唯一。 | |||
id | String | 是 | classIdxxxx | 教室ID。 |
返回数据
请参考/api/v1/class/get
获取单个教室的响应参数。
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa8*****",
"user_id": "useridxxxx"
}
响应示例
请参考/api/v1/class/get
获取单个教室的响应参数示例。
获取成员列表
使用说明
请求协议:http/https
请求Path:/api/v1/class/listMembers
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
class_id | String | 是 | titlexxxx | 教室ID。 | |||
identity | Integer | 是 | 0 | 角色。 0: 所有 1:学生 2:老师 | |||
status | Integer | 是 | 0 | 成员状态。 0:所有 1:正常 2:离开 3:踢出 | |||
page_num | Integer | 否 | 1 | 页码,默认值:1。 | |||
page_size | Integer | 否 | 10 | 单页显示数量,默认值:10。 |
返回数据
名称 | 类型 | 示例值 | 描述 | |||||
success | bool | true | 是否成功。 | |||||
data | Json | |||||||
data.total | Integer | 16 | 总数。 | |||||
data.members | Array | |||||||
data.members.identity | Integer | 1 | 角色。 1:学生 2:老师 | |||||
data.members.status | Integer | 1 | 成员状态。 1:正常 2:离开 3:踢出 | |||||
data.members.user_id | String | user_xxxx | 用户ID。 | |||||
data.members.user_name | String | user_namexxxx | 用户名。 | |||||
data.members.user_avatar | String | http://xxxx.jpg | 用户头像。 | |||||
data.members.join_time | String | 2023/09/25 16:07:30 | 用户进入时间。 |
请求示例
{
"class_id":"2dfc1f72-9340-4899-ae8c-8474*****",
"identity":0,
"status":0,
"page_num":1,
"page_size":10
}
响应示例
{
"success": true,
"data": {
"total": 17,
"members": [
{
"identity": 2,
"status": 2,
"user_id": "dev0808",
"user_name": "dev0808",
"user_avatar": "https://img.alicdn.com/imgextra/i1/*****.png",
"join_time": "2023/09/25 20:32:44"
},
{
"identity": 1,
"status": 1,
"user_id": "dev0810",
"user_name": "dev0810",
"user_avatar": "https://img.alicdn.com/imgextra/i1/******.png",
"join_time": "2023/09/25 20:47:58"
},
{
"identity": 1,
"status": 2,
"user_id": "dev0802",
"user_name": "dev0802",
"join_time": "2023/09/25 20:13:50"
},
{
"identity": 1,
"status": 2,
"user_id": "dev0809",
"user_name": "dev0809",
"join_time": "2023/09/25 16:07:30"
},
{
"identity": 1,
"status": 3,
"user_id": "online0808",
"user_name": "online0808",
"user_avatar": "https://img.alicdn.com/imgextra/i1/*****.png",
"join_time": "2023/09/25 20:40:47"
},
{
"identity": 1,
"status": 3,
"user_id": "dev0801",
"user_name": "dev0801",
"join_time": "2023/09/25 19:28:39"
},
{
"identity": 1,
"status": 3,
"user_id": "test111117",
"user_name": "test111117",
"user_avatar": "https://abc.***.jpg",
"join_time": "2023/09/25 19:22:09"
},
{
"identity": 1,
"status": 3,
"user_id": "test111116",
"user_name": "test111116",
"user_avatar": "https://abc.***.jpg",
"join_time": "2023/09/25 19:19:08"
},
{
"identity": 1,
"status": 3,
"user_id": "test111115",
"user_name": "test111115",
"join_time": "2023/09/25 19:17:01"
},
{
"identity": 1,
"status": 3,
"user_id": "dev0807",
"user_name": "dev0807",
"join_time": "2023/09/25 19:15:37"
}
]
}
}
踢出教室
使用说明
请求协议:http/https
请求Path:/api/v1/class/kickClass
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
class_id | String | 是 | titlexxxx | 教室ID。 | |||
user_id | String | 是 | noticexxx | 用户ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | |||||
success | bool | true | 是否成功。 |
请求示例
{
"class_id":"ce4da2e0-18a1-40fe-a9c8-840*****",
"user_id":"0810"
}
响应示例
{
"success": true
}
更新教室公告等信息
实现原理:修改DB的教室信息。
使用说明
请求协议:http/https
请求Path:/api/v1/class/update
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
user_id | String | 是 | useridxxxx | 用户UserID,用户自定义,在AppID下唯一。 | |||
id | String | 是 | classIdxxxx | 教室ID。 | |||
title | String | 否 | titlexxx | 教室标题。 |
返回数据
请参考/api/v1/class/get
获取单个教室的响应参数。
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa8*****",
"user_id": "useridxxx"
"title": "测试更新标题",
"notice":"测试更新课堂公告",
"extends":"{}"
}
响应示例
请参考/api/v1/class/get
获取单个教室的响应参数示例。
获取连麦信息
使用说明
请求协议:http/https
请求Path:/api/v1/class/getMeetingInfo
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
id | String | 是 | classIdxxxx | 教室ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | members.user_id | String | paperclouds | 连麦成员用户ID。 | |||
members.user_nick | String | paperclouds | 连麦成员用户昵称。 | ||||
members.user_avatar | String | https://img.xxxx | 连麦成员用户头像。 | ||||
members.camera_opened | String | true | 连麦成员摄像头状态。 | ||||
members.mic_opened | String | true | 连麦成员麦克风状态。 | ||||
members.rtc_pull_url | String | artc://classxxxx | 连麦拉流地址。 |
请求示例
{
"id": "675e6783-0bac-4990-b6da-*****"
}
响应示例
{
"success": true,
"data": {
"members": [
{
"user_id": "paperclouds",
"user_nick": "paperclouds",
"user_avatar": "https://img.alicdn.com/imgextra/i1/*******.png",
"camera_opened": true,
"mic_opened": true,
"rtc_pull_url": "artc://live.alixxx"
}
]
}
}
更新连麦信息
修改在线连麦信息,一般由老师端触发。
使用说明
请求协议:http/https
请求Path:/api/v1/class/updateMeetingInfo
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
id | String | 是 | classIdxxxx | 教室ID。 | |||
members | Array | 是 | 连麦成员。 | ||||
members | user_id | String | 是 | useridxxx | 用户ID | ||
user_nick | String | 是 | usernickxxx | 用户昵称。 | |||
user_avatar | String | 是 | http://xxx.jpg | 用户头像。 | |||
camera_opened | Boolean | 是 | true | 摄像头状态。 | |||
mic_opened | Boolean | 是 | true | 麦克风状态。 | |||
rtc_pull_url | String | 是 | artc://live.aliyun.com/play/xxxx | 连麦拉流地址。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | members.user_id | String | paperclouds | 连麦成员用户ID。 | |||
members.user_nick | String | paperclouds | 连麦成员用户昵称。 | ||||
members.user_avatar | String | https://img.xxxx | 连麦成员用户头像。 | ||||
members.camera_opened | String | true | 连麦成员摄像头状态。 | ||||
members.mic_opened | String | true | 连麦成员麦克风状态。 | ||||
members.rtc_pull_url | String | artc://classxxxx | 连麦拉流地址。 |
请求示例
{
"id": "675e6783-0bac-4990-b6da-5aa89******",
"members":[
{
"user_id":"user_idxxx",
"user_nick":"user_idxxx",
"user_avatar":"user_idxxx",
"user_camera_opened": true,
"mic_opened": true,
"rtc_pull_url":"artc://live.alixxx"
}
]
}
响应示例
{
"success": true,
"data": {
"members": [
{
"user_id": "paperclouds",
"user_nick": "paperclouds",
"user_avatar": "https://img.alicdn.com/imgextra/i1/*****.png",
"camera_opened": true,
"mic_opened": true,
"rtc_pull_url": "artc://class.aliyun.com/play/*********"
}
]
}
}
获取白板身份验证接口
使用说明
请求协议:http/https
请求Path:/api/v1/class/getWhiteboardAuthInfo
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
无。
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | curTime | String | 1691650304 | 时间戳。 | |||
checksum | String | 0ecf9cefxxxxxx | 服务器认证需要。 | ||||
nonce | String | 08318axxxxx | 随机数。 |
请求示例
无。
响应示例
{
"success": true,
"data": {
"curTime": 1691650304,
"checksum": "0ecf9cefbf51439b9140948c6f******",
"nonce": "08318a2ea1124ff49*****"
}
}
添加课件
使用说明
请求协议:http/https
请求Path:/api/v1/class/addDoc
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
classId | String | 是 | classIdxxxx | 教室ID | |||
docId | String | 是 | docIdxxx | 课件ID | |||
serverType | String | 是 | 网易 | 白板使用服务商。 | |||
data | String | 是 | "{\"xx\":\"xxx\"}" | 课件详细信息。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | classId | String | class_id_xxxx | 教室ID。 | |||
docId | String | doc_id_xxxx | 课件ID。 | ||||
docInfos | String | "{\"xx\":\"xxx\"}" | 课件详细信息。 | ||||
createdAt | Date | 2023/08/08 09:53:15 | 创建时间。 | ||||
updateAt | Date | 2023/08/08 09:53:15 | 更新时间。 |
请求示例
{
"classId": "class_id_11",
"docId": "doc_id_1",
"serverType": "网易",
"data": "{\"xx\":\"xxx\"}"
}
响应示例
{
"success": true,
"data": {
"classId": "class_id_11",
"docId": "doc_id_1",
"docInfos": "{\"xx\":\"xxx\"}",
"createdAt": "2023/08/08 09:53:15",
"updateAt": "2023/08/08 09:53:15"
}
}
删除课件
使用说明
请求协议:http/https
请求Path:/api/v1/class/deleteDoc
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
classId | String | 是 | classIdxxxx | 教室ID。 | |||
docId | String | 是 | docIdxxx | 课件ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 |
请求示例
{
"classId": "class_id_11",
"docId": "doc_id_1",
}
响应示例
{
"success": true
}
查询教室课件
使用说明
请求协议:http/https
请求Path:/api/v1/class/queryDoc
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
classId | String | 是 | classIdxxxx | 教室ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | docInfos | Array | [{"createdAt": 1689585128000,},{},{}] | 课件列表。 |
请求示例
{
"classId": "class_id_11"
}
响应示例
{
"success": true,
"data": [
{
"classId": "class_id_3",
"docId": "doc_id_1",
"serverType": "网易",
"docInfos": "{\"xx\":\"xxx\"}",
"createdAt": "2023/07/26 14:05:54"
},
{
"classId": "class_id_3",
"docId": "doc_id_2",
"serverType": "网易",
"docInfos": "{\"xx\":\"xxx\"}",
"createdAt": "2023/07/26 14:05:54"
},
{
"classId": "class_id_3",
"docId": "doc_id_3",
"serverType": "融云",
"docInfos": "{\"xx\":\"xxx\"}",
"createdAt": "2023/07/26 14:05:54"
}
]
}
批量添加课件
使用说明
请求协议:http/https
请求Path:/api/v1/class/addDocs
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
classId | String | 是 | classIdxxxx | 教室ID。 | |||
docInfo | Array | 是 | [{"createdAt": 1689585128000,},{},{}] | 添加列表。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | classId | String | classIdxxxx | 教室ID。 | |||
docsInfoList | Array | [{"createdAt": 1689585128000,},{},{}] | 课件信息列表。 |
请求示例
{
"classId": "class_id_3",
"docInfo": [
{
"docId": "doc_id_11",
"serverType": "网易",
"data": "{\"xx\":\"xxx\"}"
},
{
"docId": "doc_id_2",
"serverType": "网易",
"data": "{\"xx\":\"xxx\"}"
}
]
}
响应示例
{
"success": true,
"data": {
"classId": "class_id_3",
"docsInfoList": []
}
}
批量删除课件
使用说明
请求协议:http/https
请求Path:/api/v1/class/deleteDocs
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
classId | String | 是 | classIdxxxx | 教室ID。 | |||
docIds | String | 是 | "doc_id_1,doc_id_2,doc_id_3" | 课件ID字符串。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | classId | String | classIdxxxx | 教室ID。 | |||
docsInfo | Array | [{"createdAt": 1689585128000,},{},{}] | 课件信息列表。 |
请求示例
{
"classId": "class_id_3",
"docIds": "doc_id_1,doc_id_2,doc_id_3"
}
响应示例
{
"success": true,
"data": {
"docsInfo": [
{
"classId": "class_id_3",
"docId": "doc_id_1"
},
{
"classId": "class_id_3",
"docId": "doc_id_2"
},
{
"classId": "class_id_3",
"docId": "doc_id_3"
}
]
}
}
设置助教权限
使用说明
请求协议:http/https
请求Path:/api/v1/class/setAssistantPermit
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
class_id | String | 是 | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 课堂ID。 | |||
permit | Json字符串 | 是 | {\"is_ok\":\"false\"} | 权限信息,由前端定制。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | class_id | String | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 教室ID。 | |||
permit | String | {\"is_ok\":\"false\"} | 权限信息。 | ||||
created_at | String | 2023/11/24 11:33:28 | 创建时间。 | ||||
updated_at | String | 2023/11/24 11:33:28 | 修改时间。 |
请求示例
{
"class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
"permit": "{\"is_ok\":\"false\"}"
}
响应示例
{
"success": true,
"data": {
"permit": "{\"is_ok\":\"false\"}",
"class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
"created_at": "2023/11/24 11:33:28",
"updated_at": "2023/11/24 11:33:28"
}
}
删除助教权限
使用说明
请求协议:http/https
请求Path:/api/v1/class/deleteAssistantPermit
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
class_id | String | 是 | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 课堂ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||
success | bool | true | 业务是否成功。 |
请求示例
{
"class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****"
}
响应示例
{
"success": true
}
获取助教权限
使用说明
请求协议:http/https
请求Path:/api/v1/class/getAssistantPermit
是否需要授权:是
请求Method:POST
请求ContentType:JSON
请求参数
名称 | 类型 | 是否必填 | 示例值 | 描述 | |||
class_id | String | 是 | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 课堂ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 | ||||
success | bool | true | 业务是否成功。 | ||||
data | class_id | String | 89bdb7ab-7fa9-4061-8a73-c7c18a9c**** | 教室ID。 | |||
permit | String | {\"is_ok\":\"false\"} | 权限信息。 | ||||
created_at | String | 2023/11/24 11:33:28 | 创建时间。 | ||||
updated_at | String | 2023/11/24 11:33:28 | 修改时间。 |
请求示例
{
"class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****"
}
响应示例
{
"success": true,
"data": {
"permit": "{\"is_ok\":\"false\"}",
"class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
"created_at": "2023/11/24 11:33:28",
"updated_at": "2023/11/24 11:33:28"
}
}