事件同步
查询指定类型事件
查询指定课堂内指定类型的事件。
你可以通过 nextId
分批查询,每批最多查询 100 条数据。
- 同一事件可重复查询。
- 仅能查询未销毁课堂内的事件。默认情况下,课堂会在结束后一小时销毁。
接口原型:
- 方法:GET
- 接入点:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/sequences
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
nextId | String | 非必填 | 下一批数据的起始 ID。第一次查询可传 null,后续查询传入响应结果里得到的 nextId 的值。 |
cmd | Integer | 非必填 | 事件类型,详见事件枚举。 |
请求示例
curl -X GET 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/sequences?cmd=20' \
-H 'Authorization: agora token={educationToken}'
响应参数
参数 | 类型 | 描述 |
---|---|---|
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
}
}
查询指定 Widget 事件
查询指定课堂内指定 Widget 的相关事件。
你可以通过 nextId
分批查询,每批最多查询 100 条数据。
- 同一事件可重复查询。
- 仅能查询未销毁课堂内的事件。默认情况下,课堂会在结束后一小时销毁。
接口原型:
- 方法:GET
- 接入点:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/widgets/{widgetUuid}/sequences
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
widgetUuid | String | 必填 | Widget uuid。长度在 64 字符以内。 以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
nextId | String | 非必填 | 下一批数据的起始 ID。第一次查询可传 null,后续查询传入响应结果里得到的 nextId 的值。 |
请求示例
curl -X GET 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/widgets/test_widget/sequences' \
-H 'Authorization: agora token={educationToken}'
响应参数
参数 | 类型 | 描述 |
---|---|---|
code | Integer | 响应状态码:
|
msg | String | 接口响应的文字信息。 |
ts | Number | 当前服务端的 Unix 时间戳,UTC 时间,单位为毫秒。 |
data | Object | 返回数据,包含以下字段:
|
响应示例
{
"msg": "Success",
"code": 0,
"ts": 1610433913533,
"data": {
"total": 1,
"list": [
{
"roomUuid": "",
"cmd": 1110,
"sequence": 1,
"version": 1,
"data": {
"action": 1,
"widgetUuid": "test_widget",
"changeProperties": {
"extra": {},
"state": 1
}
},
"fromUser": {
"userUuid": "userUuid1",
"userName": "userName1",
"role": 1
},
"operator": {
"userUuid": "userUuid1",
"userName": "userName1",
"role": 1
}
}
],
"nextId": null,
"count": 1
}
}
查询答题器事件
接口原型:
- 方法:GET
- 请求路径:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/widgets/popupQuiz/sequences
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
nextId | String | 非必填 | 下一批数据的起始 ID。第一次查询可传 null,后续查询传入响应结果里得到的 nextId 的值。 |
count | Integer | 非必填 | 本批数据条数,默认值为 100。 |
请求示例
curl -X GET 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/widgets/popupQuiz/sequences' \
-H 'Authorization: agora token={educationToken}'
响应参数
不同情况下 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 | 用户角色 |
响应示例
-
老师开启答题后,答题器的汇总数据发生变化:
JSON{
"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"
}
} -
学生提交答案后,该学生的答题数据发生变化:
JSON{
"action": NumberInt("1"),
"widgetUuid": "xxxxxxxxx",
"changeProperties": {
"selectedItems": [
"A",
"B",
"D"
],
"isCorrect": true,
"popupQuizId": "ab5b183238a74d5a9c955dc87c6397e0",
"lastCommitTime": NumberLong("1652413989997")
},
"fromUser": {
"userName": "yerongzhe2",
"userUuid": "yerongzhe22",
"role": "audience"
}
} -
老师结束答题后,答题器的汇总数据发生变化:
JSON{
"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"
}
}
查询投票器事件
接口原型:
- 方法:GET
- 请求路径:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/widgets/poll/sequences
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
nextId | String | 非必填 | 下一批数据的起始 ID。第一次查询可传 null,后续查询传入响应结果里得到的 nextId 。 |
count | Integer | 非必填 | 本批数据条数,默认值为 100。 |
请求示例
curl -X GET 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/widgets/popupQuiz/sequences' \
-H 'Authorization: agora token={educationToken}'
响应参数
不同情况下 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 | 用户角色 |
响应示例
-
老师开启投票后,投票器的汇总数据发生变化:
JSON{
"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"
}
} -
学生提交选项后,该学生的投票数据发生变化:
JSON{
"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"
}
} -
学生提交选项后,投票器的汇总数据发生变化:
JSON{
"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
中包含以下字段:JSON{
"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"
}
}
事件枚举
本节列出通过灵动课堂事件同步 RESTful API 获取到的所有事件类型。
课堂状态变更
cmd
为 1
时,该事件提示课堂状态发生变更,data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
state | Integer | 当前课堂状态:
|
startTime | Number | 课堂开始时间,Unix 时间戳(毫秒),UTC 时间。当state=1时,此字段有值。 |
endTime | Number | 课堂结束时间,Unix 时间戳(毫秒),UTC 时间。当state=2时,此字段有值。 |
closeTime | Number | 课堂关闭时间,Unix 时间戳(毫秒),UTC 时间。当state=3时,此字段有值。 |
示例
{
"startTime": 1611561776588,
"state": 1
}
用户进出课堂
cmd
为 20
时,该事件提示有用户进出课堂。data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
total | Integer | 进入和退出课堂的用户总数。 |
onlineUsers | Object 数组 | 进入课堂的用户,包含以下字段:
|
offlineUsers | Object 数组 | 退出课堂的用户,包含以下字段:
|
示例
{
"total": 3,
"onlineUsers": [
{
"userName": "",
"userUuid": "",
"role": "0",
"userProperties": {},
"streamUuid": "",
"type": 1,
"updateTime": 1611561776588
}
],
"offlineUsers": [
{
"userName": "",
"userUuid": "",
"role": "0",
"userProperties": {},
"streamUuid": "",
"type": 1,
"updateTime": 1611561776588
}
]
}
录制状态变更
cmd
为 1001
时,该事件提示录制状态发生变更,data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
recordId | String | 一次录制的的唯一标识符。调用设置录制状态 API 开始录制然后结束录制视为一次录制。仅当 state 为 1 时有此字段。 |
sid | String | 声网云端录制服务的 sid 。仅当 state 为 1 时有此字段。 |
resourceId | String | 声网云端录制服务的 resourceId 。仅当 state 为 1 时有此字段。 |
state | Integer | 当前录制状态:
|
startTime | Number | 录制开始时间,Unix 时间戳(毫秒),UTC 时间。录制开始后此字段有值。 |
endTime | Number | 录制结束时间,Unix 时间戳(毫秒),UTC 时间。录制结束后此字段有值。 |
streamingUrl | Object | 经由页面录制后推到 CDN 的流地址。学生可以通过该地址观看教学。 |
retryTimes | Integer | 当前重试次数。 |
ready | Boolean | 录制页面是否加载完成,值为 true 时有此字段。 |
onhold | Boolean | 是否在启动页面录制任务时暂停页面录制。
|
示例
{
"recordId": "xxx",
"sid": "xxx",
"resourceId": "xxx",
"state": 1,
"startTime": 1611564500488,
"streamingUrl": {
"rtmp": "",
"flv": "",
"hls": ""
}
}
录像文件上传
cmd
为 1002
时,该事件提示录制文件上传成功,data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
recordId | String | 一次录制的的唯一标识符。调用设置录制状态 API 开始录制然后结束录制视为一次录制。仅当 state 为 1 时有此字段。 |
addUrl | String | 本次新增的录像地址。 |
recordDetails | String | JSONArray 类型。包含所有录制文件列表,包含以下字段:
|
allUploaded | Boolean | 所有文件都上传完成时,该字段为 true ,否则该字段为 null 。 |
示例
{
"recordId": "xxx",
"addUrl": "https://xxxx.com/xxx.mp4",
"recordDetails": [
{
"url": "https://xxxx.com/xxx.mp4"
}
],
"allUploaded": true
}
奖励数量变更
cmd
为 1101
时,该事件提示奖励数量发生变更,data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
rewardDetails | Object 数组 | 一个 Object 代表一个用户的奖励数量变更情况,包含以下字段:
|
updateTime | Number | 奖励变更时间,Unix 时间戳(毫秒),UTC 时间。 |
示例
{
"rewardDetails": [
{
"userUuid": "",
"changedReward": 1,
"totalReward": 10
}
],
"updateTime": 1611564500488
}
讲台人员变更
cmd
为 1501
时,该事件提示讲台人员发生变化,data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
acceptedUsers | Object 数组 | 当前台上人员列表,包含字段:userUuid ,String 型,用户 UUID。 |
addAcceptedUsers | Object 数组 | 本次上台人员列表,包含字段:userUuid ,String 型,用户 UUID。 |
removeAcceptedUsers | Object 数组 | 本次下台人员列表,包含字段:userUuid ,String 型,用户 UUID。 |
示例
{
"acceptedUsers": [
{
"userUuid": ""
}
],
"addAcceptedUsers": [
{
"userUuid": ""
}
],
"removeAcceptedUsers": [
{
"userUuid": ""
}
]
}
挥手人员变更
cmd
为 1502
时,该事件提示挥手人员发生变更,data
中包含以下字段:
参数 | 类型 | 描述 |
---|---|---|
progressUsers | Object 数组 | 当前举手人员列表,包含以下字段:
|
addProgressUsers | Object 数组 | 本次新增举手人员列表,包含以下字段:
|
removeProgressUsers | Object 数组 | 本次移除举手人员列表,包含以下字段:
|
示例
{
"progressUsers": [
{
"userUuid": "",
"payload": {}
}
],
"addProgressUsers": [
{
"userUuid": "",
"payload": {}
}
],
"removeProgressUsers": [
{
"userUuid": "",
"payload": {}
}
]
}