本文介绍灵动课堂云服务 RESTful API 的详细信息。
所有请求都发送给域名:api.agora.io。
所有请求的 Content-Type 类型为 application/json。
灵动课堂云服务 RESTful API 支持 Token 认证。你需要在发送 HTTP 请求时在 HTTP 请求头部的 x-agora-token
字段和 x-agora-uid
字段分别填入:
具体生成 RTM Token 的方法请参考生成 RTM Token 文档。
将指定用户从课堂中踢出。成功调用此接口后,服务端会触发一个用户进出课堂事件。你可通过 dirty
参数设置该用户后续是否还能再加入课堂。
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
userUuid |
String | (必填)用户 uuid。这是用户的唯一标识符,也是登录 RTM 系统时使用的用户 ID。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
dirty |
Object | (非必填)用户的污点设置,包含以下字段:
|
请求 URL
https://api.agora.io/edu/apps/{your_app_Id}/v2/rooms/test_class/users/123/exit
请求包体
{
"dirty": {
"state": 1,
"duration": 600
}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
房间创建后,默认保留 5 天。
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
roomType |
String | (必填)房间类型,可设为:
该字段不可更新。 |
roomName |
String | (必填)房间名称。 |
roomProperties |
Object | (非必填)房间属性。 |
roomProperties.schedule |
Object | (非必填)课程计划。 |
roomProperties.schedule.startTime |
Integer | (非必填)课堂开始时间。该字段不可更新。 |
roomProperties.schedule.duration |
Integer | (非必填)课堂持续时间。 |
roomProperties.schedule.closeDelay |
Integer | (非必填)拖堂时间。 |
roomProperties.processes |
Object | (非必填)申请邀请流程。 |
roomProperties.processes.handsUp |
Object | (非必填)上台设置。 |
roomProperties.processes.handsUp.maxAccept |
Integer | (非必填)上台人数上限。 |
roomProperties.hostingScene |
Object | (非必填)职业教育大班课独有的房间属性。 |
roomProperties.hostingScene.videoURL |
String | (非必填)老师的 CDN 流地址(主播放地址)。 |
roomProperties.hostingScene.reserveVideoURL |
String | (非必填)老师的 CDN 流地址(备用播放地址)。 |
roomProperties.hostingScene.finishType |
Integer | (非必填)课堂结束方式: |
请求包体
{
"roomName": "jasoncai61734",
"roomType": 4,
"roomProperties": {
"schedule": {
"startTime": 1655452800000,
"duration": 600,
"closeDelay": 300
},
"processes": {
"handsUp": {
"maxAccept": 10
}
}
}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
设置课堂状态(未开始/开始/结束)。详见课堂状态说明。
URL 参数
需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
state |
Integer | (必填)课堂状态:
|
https://api.agora.io/edu/apps/{yourappId}/v2/rooms/test_class/states/1
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
"status": 200,
"body":
{
"code": 0,
"msg": "Success",
"ts": 1610450153520
}
开始或结束录制指定课堂。详见课堂录制最佳实践。
URL 参数
需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
state |
Integer | (必填)录制状态:0 : 结束1 : 开始 |
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
mode |
String | (非必填)录制模式:web ,则启用页面录制模式。录制生成 MP4 文件。此外,录制服务会在当前 MP4 文件时长超过 2 小时或大小超过 2 GB 时创建一个新的 MP4 文件。 |
webRecordConfig |
Object | (非必填)当 mode 为 web 时,你需要通过 webRecordConfig 设置页面录制的详细信息,包含以下字段:
|
retryTimeout |
Number | 重试超时时间,单位为秒。最多重试两次。设置 retryTimeout 参数后,Agora 建议你参考课堂录制最佳实践进行操作。 |
请求 URL
https://api.agora.io/edu/apps/{yourappId}/v2/rooms/test_class/records/states/1
请求包体
{
"mode": "web",
"webRecordConfig": {
"url": "https://webdemo.agora.io/xxxxx/?userUuid={recorder_id}&roomUuid={room_id_to_be_recorded}&roleType=0&roomType=4&pretest=false&rtmToken={recorder_token}&language=en&appId={your_app_id}",
"rootUrl": "https://xxx.yyy.zzz",
"publishRtmp": "true"
},
"retryTimeout": 60
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
streamingUrl |
Object | 经由页面录制后推到 CDN 的流地址。学生可以通过该地址观看教学。 |
"status": 200,
"body":
{
"code": 0,
"ts": 1610450153520,
"streamingUrl": {
"rtmp": "",
"flv": "",
"hls": ""
}
}
在录制过程中随时调用此接口更新录制相关设置。每次调用此接口都会覆盖原先的设置。
URL 参数
需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
webRecordConfig |
Object | (非必填)录制具体设置,包含以下字段:
|
请求 URL
https://api.agora.io/edu/apps/{yourappId}/v2/rooms/test_class/records/states/1
请求包体
{
"webRecordConfig": {
"onhold": false
}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
"status": 200,
"body":
{
"code": 0,
"ts": 1610450153520
}
获取指定课堂内的录制列表。
你可以通过 nextId
分批拉取,每批最多拉取 100 条数据。
URL 参数
需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 描述 |
---|---|---|
nextId |
String | (非必填)下一批数据的起始 ID。第一次获取可传 null,后续获取传入响应结果里得到的 nextId 。 |
示例一:
https://api.agora.io/edu/apps/{yourappId}/v2/rooms/test_class/records?null
示例二:
https://api.agora.io/edu/apps/{yourappId}/v2/rooms/test_class/records?nextId=xxx
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
data |
Object | 具体数据,包含:
|
"status": 200,
"body":
{
"code": 0,
"msg": "Success",
"ts": 1610450153520,
"data": {
"total": 17,
"list": [
{
"recordId": "xxxxxx",
"appId": "xxxxxx",
"roomUuid": "jason0",
"startTime": 1602648426497,
"endTime": 1602648430262,
"resourceId": "xxxxxx",
"sid": "xxxxxx",
"recordUid": "xxxxxx",
"boardId": "xxxxxx",
"boardToken": "xxxxxx",
"type": 2,
"status": 2,
"url": "scenario/recording/xxxxxx/xxxxxx/xxxxxx.m3u8",
"recordDetails":[
{
"url":"xxxx/xxxx.mp4"
}
]
},
{...},
],
"count": 17
}
}
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
userUuid |
String | (必填)用户 uuid。这是用户的唯一标识符,也是登录 RTM 系统时使用的用户 ID。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
data |
Object | 具体数据,包含:
|
{
"msg":"Success",
"code":0,
"ts":1658126805245,
"data":{
"userName":"jasoncai",
"userUuid":"681d9aca4924e9a84ad301e8cca438a71",
"role":"1",
"userProperties":{},
"updateTime":1658126782174,
"streamUuid":"1417753684",
"state":1
}
}
查询指定课堂内指定类型的事件。
你可以通过 nextId
分批查询,每批最多查询 100 条数据。
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 描述 |
---|---|---|
nextId |
String | (非必填)下一批数据的起始 ID。第一次获取可传 null,后续获取传入响应结果里得到的 nextId 。 |
cmd |
Integer | (非必填)事件类型,详见事件枚举。 |
请求 URL
示例一:
https://api.agora.io/edu/apps/{appId}/v2/rooms/test_class/sequences?null&cmd=1
示例二:
https://api.agora.io/edu/apps/{appId}/v2/rooms/test_class/sequences?nextId=50&cmd=1
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
data |
Object | 具体数据,包含:
|
{
"msg": "Success",
"code": 0,
"ts": 1610433913533,
"data": {
"total": 1,
"list": [
{
"roomUuid": "",
"cmd": 20,
"sequence": 1,
"version": 1,
"data": {}
}
],
"nextId": null,
"count": 1
}
}
在服务端获取指定 App ID 下所有课堂中发生的事件。
你可定时轮询该接口来监听灵动课堂中发生的事件。
URL 参数
需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
https://api.agora.io/edu/polling/apps/{yourappId}/v2/rooms/sequences
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
data |
Object | 具体数据,包含:roomUuid : String 型,课堂 uuid。cmd : Integer 型,事件类型。详见事件枚举。sequence : Integer 型。事件序号,是每个课堂内事件的唯一标识符,课堂内全局自增,用于确保事件的有序性。version : Integer 型,版本号。data : Object 型,事件的具体数据,取决于事件类型。详见事件枚举。 |
"status": 200,
"body":
{
"msg": "Success",
"code": 0,
"ts": 1610167740309,
"data":[
{
"roomUuid": "xxxxxx",
"cmd": 20,
"sequence": 1,
"version": 1,
"data":{}
}
]
}
新增或更新指定课堂的自定义属性,详见如何设置自定义用户属性和课堂属性?
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
Object | 课堂属性。 |
cause |
Object | 更新原因。 |
请求包体
{
"properties": {
"key1": "value1",
"key2": "value2"
},
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
删除指定课堂的自定义属性,详见如何设置自定义用户属性和课堂属性?
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
String 数组 | 课堂属性。 |
cause |
Object | 删除原因。 |
请求包体
{
"properties": ["key1", "key2"],
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
新增或更新指定用户的自定义属性,详见如何设置自定义用户属性和课堂属性?
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
userUuid |
String | (必填)用户 uuid。这是用户的唯一标识符,也是登录 RTM 系统时使用的用户 ID。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
Object | 用户属性。 |
cause |
Object | 更新原因。 |
请求包体
{
"properties": {
"key1": "value1",
"key2": "value2"
},
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
删除指定用户的自定义属性,详见如何设置自定义用户属性和课堂属性?
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
userUuid |
String | (必填)用户 uuid。这是用户的唯一标识符,也是登录 RTM 系统时使用的用户 ID。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
String 数组 | 用户属性。 |
cause |
Object | 删除原因。 |
请求包体
{
"properties": ["key1", "key2"],
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
设置指定 Widget 的属性。
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
widgetUuid |
String | (必填)Widget uuid。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
extra |
Object | (非必填)Widget 扩展信息。 |
cause |
Object | (非必填)更新原因。 |
state |
Integer | (非必填)Widget 的活跃状态。0 表示关闭,1 表示开启。 |
ownerUserUuid |
String | (非必填)Widget 所属用户。该用户离线后,Widget 会被自动删除。 |
请求包体
{
"extra": {},
"cause": {},
"state": 1,
"ownerUserUuid": "user"
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
删除指定 Widget。
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
widgetUuid |
String | (必填)Widget uuid。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
cause |
Object | (非必填)更新原因。 |
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
删除指定 Widget 的属性。
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
widgetUuid |
String | (必填)Widget uuid。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
String 数组 | (必填)需删除的 extra 属性数组。 |
cause |
Object | (必填)删除原因。 |
请求包体
{
"properties": ["key-path1", "key-path2"],
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
设置指定 Widget 的用户属性。
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
widgetUuid |
String | (必填)Widget uuid。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
userUuid |
String | (必填)用户 uuid。这是用户的唯一标识符,也是登录 RTM 系统时使用的用户 ID。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
Object | (必填)需设置的 Widget 用户属性。 |
cause |
Object | (必填)更新原因。 |
请求包体
{
"properties": {},
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
删除指定 Widget 的用户属性。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
widgetUuid |
String | (必填)Widget uuid。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
userUuid |
String | (必填)用户 uuid。这是用户的唯一标识符,也是登录 RTM 系统时使用的用户 ID。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
在请求包体中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
properties |
String 数组 | (必填)需删除的 Widget 用户属性数组。 |
cause |
Object | (必填)删除原因。 |
请求包体
{
"properties": ["key-path1", "key-path2"],
"cause": {}
}
参数 | 类型 | 描述 |
---|---|---|
code |
Integer | 业务状态码: |
msg |
String | 详细信息。 |
ts |
Number | 当前服务端的 Unix 时间戳(毫秒),UTC 时间。 |
{
"msg": "Success",
"code": 0,
"ts": 1610167740309
}
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 描述 |
---|---|---|
nextId |
String | (非必填)下一批数据的起始 ID。第一次获取可传 null,后续获取传入响应结果里得到的 nextId 。 |
count |
Integer | (非必填)本批数据条数,默认值为 100。 |
不同情况下 data
中返回的字段不同,具体如下:
老师开启答题后,答题器的汇总数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.correctItems | Object[] | 正确选项 |
changeProperties.extra.correctCount | Integer | 本题答对人数 |
changeProperties.extra.answerState | Integer | 本次答题状态:
|
changeProperties.extra.receiveQuestionTime | Long | 收到题目时间 |
changeProperties.extra.popupQuizId | String | 题目 ID |
changeProperties.extra.averageAccuracy | Float | 本题正确率 |
changeProperties.extra.totalCount | Integer | 本题回答总人数 |
changeProperties.extra.items | Object[] | 本题的所有选项 |
changeProperties.state | Integer | 答题器状态:
|
cause | Object | 属性变更原由。 |
cause.popQuizId | String | 答题器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 ID |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
学生提交答案后,该学生的答题数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.lastCommitTime | Long | 最后一次提交时间 |
changeProperties.popupQuizId | String | 题目 ID |
changeProperties.selectedItems | Object[] | 该学生提交的答案 |
changeProperties.isCorrect | Boolean | 该学生提交的答案是否正确 |
cause | Object | 属性变更原由。 |
cause.popQuizId | String | 答题器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 uuid |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
fromUser | Object | 发起本次答题的用户 |
fromUser.userUuid | String | 用户 ID |
fromUser.userName | String | 用户名称 |
fromUser.role | String | 用户角色 |
学生提交答案后,答题器的汇总数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.selectedCount | Integer | 已经答题人数 |
changeProperties.extra.correctCount | Integer | 本题答对人数 |
changeProperties.extra.averageAccuracy | Float | 本题正确率 |
changeProperties.extra.totalCount | Integer | 本题回答总人数 |
cause | Object | 属性变更原由。 |
cause.popQuizId | String | 答题器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 ID |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
老师结束答题后,答题器的汇总数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.selectedCount | Integer | 已经答题人数 |
changeProperties.extra.correctCount | Integer | 本题答对人数 |
changeProperties.extra.answerState | Integer | 本次答题状态:
|
changeProperties.extra.averageAccuracy | Float | 本题正确率 |
changeProperties.extra.totalCount | Integer | 本题回答总人数 |
cause | Object | 属性变更原由。 |
cause.popQuizId | String | 答题器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 uuid |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
老师开启答题后,答题器的汇总数据发生变化:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"extra.correctItems": [
"A",
"B",
"D"
],
"extra.totalCount": NumberInt("1"),
"extra.answerState": NumberInt("1"),
"state": NumberInt("1"),
"extra.popupQuizId": "ab5b183238a74d5a9c955dc87c6397e0",
"extra.averageAccuracy": 0,
"extra.correctCount": NumberInt("0"),
"extra.items": [
"A",
"C",
"B"
],
"extra.receiveQuestionTime": NumberLong("1652413962895")
},
"operator": {
"userName": "server",
"userUuid": "server",
"role": "server"
}
学生提交答案后,该学生的答题数据发生变化:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"selectedItems": [
"A",
"B",
"D"
],
"isCorrect": true,
"popupQuizId": "ab5b183238a74d5a9c955dc87c6397e0",
"lastCommitTime": NumberLong("1652413989997")
},
"fromUser": {
"userName": "yerongzhe2",
"userUuid": "yerongzhe22",
"role": "audience"
}
老师结束答题后,答题器的汇总数据发生变化:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"extra.totalCount": NumberInt("1"),
"extra.answerState": NumberInt("0"),
"extra.selectedCount": NumberInt("1"),
"extra.averageAccuracy": 1,
"extra.correctCount": NumberInt("1")
},
"operator": {
"userName": "server",
"userUuid": "server",
"role": "server"
}
URL 参数
在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
region |
String | (必填)区域。可设为:
|
appId |
String | (必填)Agora App ID。 |
roomUUid |
String | (必填)课堂 uuid。这是课堂的唯一标识符,也是加入 RTC 和 RTM 的频道名。长度在 64 字节以内。以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 描述 |
---|---|---|
nextId |
String | (非必填)下一批数据的起始 ID。第一次获取可传 null,后续获取传入响应结果里得到的 nextId 。 |
count |
Integer | (非必填)本批数据条数,默认值为 100。 |
不同情况下 data
中返回的字段不同,具体如下:
老师开启投票后,投票器的汇总数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.mode | Integer | 投票模式:
|
changeProperties.extra.pollingState | Integer | 本次投票状态:
|
changeProperties.extra.pollDetails | Map<String,Object> | 投票详情,key 为选项索引,从 0 开始。 |
changeProperties.extra.pollDetails.num | Integer | 选择该选项的人数 |
changeProperties.extra.pollDetails.percentage | Float | 选择该选项的人数所占百分比 |
changeProperties.extra.pollId | String | 本次投票 ID |
changeProperties.extra.pollItems | Object[] | 选项内容 |
changeProperties.state | Integer | 投票器状态:
|
cause | Object | 属性变更原由。 |
cause.pollId | String | 投票器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 ID |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
学生提交选项后,该学生的投票数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.pollId | String | 本次投票 ID |
changeProperties.extra.selectIndex | Object[] | 该学生选择的选项的索引 |
cause | Object | 属性变更原由。 |
cause.pollId | String | 投票器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 ID |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
fromUser | Object | 发起本次投票的用户 |
fromUser.userUuid | String | 用户 ID |
fromUser.userName | String | 用户名称 |
fromUser.role | String | 用户角色 |
学生提交选项后,投票器的汇总数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.pollDetails | Map<String,Object> | 投票详情,key 为选项索引,从 0 开始。 |
changeProperties.extra.pollDetails.num | Integer | 选择该选项的人数 |
changeProperties.extra.pollDetails.percentage | Float | 选择该选项的人数所占百分比 |
changeProperties.extra.pollId | String | 本次投票 ID |
cause | Object | 属性变更原由。 |
cause.pollId | String | 投票器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 ID |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
老师结束投票后,投票器的汇总数据会发生变化,data
中包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
action | Integer | 操作类型 |
widgetUuid | String | Widget ID |
changeProperties | Object | 发生变更的属性 |
changeProperties.extra | Object | 属性补充信息 |
changeProperties.extra.pollingState | Integer | 本次投票状态:
|
changeProperties.extra.pollDetails | Map<String,Object> | 投票详情,key 为选项索引,从 0 开始。 |
changeProperties.extra.pollDetails.num | Integer | 选择该选项的人数 |
changeProperties.extra.pollDetails.percentage | Float | 选择该选项的人数所占百分比 |
changeProperties.extra.pollId | String | 本次投票 ID |
cause | Object | 属性变更原由。 |
cause.pollId | String | 投票器 ID。 |
cause.action | Integer | 操作类型:
|
operator | Object | 操作人 |
operator.userUuid | String | 用户 ID |
operator.userName | String | 用户名称 |
operator.role | String | 用户角色 |
老师开启投票后,投票器的汇总数据发生变化:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"extra.pollId": "e556ce3df5cd4c23941b03bf54d29ba3",
"extra.pollState": NumberInt("1"),
"extra.pollItems": [
"aaa",
"bbb",
"ccc",
"ddd",
"eee"
],
"extra.mode": NumberInt("2"),
"state": NumberInt("1"),
"extra.pollDetails": {
"0": {
"num": NumberInt("0"),
"percentage": 0
},
"1": {
"num": NumberInt("0"),
"percentage": 0
},
"2": {
"num": NumberInt("0"),
"percentage": 0
},
"3": {
"num": NumberInt("0"),
"percentage": 0
},
"4": {
"num": NumberInt("0"),
"percentage": 0
}
}
},
"operator": {
"userName": "server",
"userUuid": "server",
"role": "server"
}
学生提交选项后,该学生的投票数据发生变化:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"pollId": "e556ce3df5cd4c23941b03bf54d29ba3",
"selectIndex": [
NumberInt("1"),
NumberInt("2"),
NumberInt("4")
]
},
"fromUser": {
"userName": "yerongzhe2",
"userUuid": "yerongzhe22",
"role": "audience"
},
"operator": {
"userName": "server",
"userUuid": "server",
"role": "server"
}
学生提交选项后,投票器的汇总数据发生变化:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"extra.pollId": "e556ce3df5cd4c23941b03bf54d29ba3",
"extra.pollDetails": {
"0": {
"num": NumberInt("0"),
"percentage": 0
},
"1": {
"num": NumberInt("1"),
"percentage": 1
},
"2": {
"num": NumberInt("1"),
"percentage": 1
},
"3": {
"num": NumberInt("0"),
"percentage": 0
},
"4": {
"num": NumberInt("1"),
"percentage": 1
}
}
},
"operator": {
"userName": "server",
"userUuid": "server",
"role": "server"
}
老师结束投票后,投票器的汇总数据会发生变化,data
中包含以下字段:
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"extra.pollId": "e556ce3df5cd4c23941b03bf54d29ba3",
"extra.pollState": NumberInt("0"),
"extra.pollDetails": {
"0": {
"num": NumberInt("0"),
"percentage": 0
},
"1": {
"num": NumberInt("1"),
"percentage": 1
},
"2": {
"num": NumberInt("1"),
"percentage": 1
},
"3": {
"num": NumberInt("0"),
"percentage": 0
},
"4": {
"num": NumberInt("1"),
"percentage": 1
}
}
},
"operator": {
"userName": "server",
"userUuid": "server",
"role": "server"
}
HTTP 响应状态码 | 业务状态码 | 描述 |
---|---|---|
200 | 0 | 请求成功。 |
400 | 400 | 请求的参数错误。 |
401 | N/A | 可能的原因:x-agora-uid 和 x-agora-token 错误或不匹配。 |
403 | 30403200 | 课堂已禁言,无法发送聊天消息。 |
404 | N/A | 服务器无法找到请求的资源。 |
404 | 20404100 | 课堂不存在。 |
404 | 20404200 | 用户不存在。 |
409 | 30409410 | 录制状态冲突,录制未开始。 |
409 | 30409411 | 录制状态冲突,录制未结束。 |
409 | 30409100 | 课程状态冲突,课程已开始。 |
409 | 30409101 | 课程状态冲突,课程已结束。 |
500 | 500 | 服务器内部错误,无法完成请求。 |
503 | N/A | 服务器内部错误。充当网关或代理的服务器未从远端服务器获取响应。 |