课节内实时推送的消息
课节内(即上课过程中)实时推送的消息,包括:举手,奖励,摄像头位置,授权,进入教室,退出教室,踢出,全体静音,个人静音,答题器,抢答器,上下台,教室内IM文字聊天,教室内IM图片聊天,课节网络状态报告(每隔5分钟发送一次,为5分钟内的汇总信息),教室内设备检测报告,教室内老师和学生求助,延长课节时长,直播页面用户登录,启动录课详情。
这些数据将会在上课过程中实时推送。
举手
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67375105 |
| Color |
String |
hands up+用户ID |
| Handsup |
Boolean |
True表示举手状态,False表示放手状态 |
奖励
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67375105 |
| Color |
String |
award + 用户ID |
| Times |
Int32 |
奖励次数 |
摄像头位置
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67375105 |
| Color |
String |
webcamPosition + 用户ID |
| Area |
Struct |
摄像头区域 |
| └ X1 |
Int32 |
左上角X坐标 |
| └ Y1 |
Int32 |
左上角Y坐标 |
| L X2 |
Int32 |
右下角X坐标 |
| L Y2 |
Int32 |
右下角Y坐标 |
| OnTop |
Bool |
是否在坐席区,0:不在坐席区;1:在坐席区 |
| Channel |
Int32 |
摄像头序号,0:主摄像头;1:辅摄像头 |
授权
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67371520 |
| Operation |
Boolean |
True为授权,False为取消授权 |
进入教室字段
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67371107 |
| NickName |
String |
用户昵称 |
| AllowEnterTime |
Int32 |
用户被踢出后,允许再次进入时间 |
| UID |
Int32 |
用户ID |
| LoginMobile |
String |
手机号 |
| Identity |
Int32 |
用户身份 1:学生,2:旁听,3:老师,4:助教 |
| Device |
Int32 |
登陆客户端类型,0x00:PC,0x01:iphone,0x02:ipad,0x03:web客户端,0x04:Android手机,0x05:Android平板,0x06:Android电视 |
退出教室字段
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67371111 |
| UID |
Int32 |
用户ID |
| Identity |
Int32 |
用户身份 |
| Reason |
Int32 |
退出原因,0:未知异常,1:正常退出,2:教室关闭,3:异常退出,4:被踢出教室,5:服务关闭,6:断线,7:取消排课,8:用户角色变更 |
踢出
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67371523 |
| Duration |
Int32 |
踢出维持时间 |
| TargetUID |
Int32 |
被踢出ID |
| Operation |
Int32 |
1 被踢出 |
静音
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
单独静音为67371522,全部静音为67371586 |
| TargetUID |
Int32 |
静音对象ID |
| Operation |
Int32 |
1静音,0取消静音 |
答题器
| 字段 |
类型 |
说明 |
| Area |
Struct |
窗口坐标 |
| └ X1,Y1,X2,Y2 |
Int32 |
无 |
| Color |
String |
发题时为‘standaloneSelectorToolglobalData’,学生答题时为‘standaloneSelectorTool’ + 学生ID |
| Cmd |
Int32 |
命令字67375105 |
| QSentTime |
Int32 |
发放时间 |
| CurState |
Int32 |
当前答题状态 0:开始状态,1:发题状态,2:收题状态 |
| QCollectTime |
Int32 |
收题时间 |
| CorrectItems |
String |
正确答案 |
| Commited |
Int32 |
学生答题状态 0:开始状态,1:答题状态,2:提交 |
| SelectedItem |
String |
学生选择的答案 |
| AllItems |
String |
所有备选答案 |
| Participants |
Struct |
参与答题人 |
| └ ShowName |
String |
答题人昵称 |
| └ Uid |
Int32 |
答题人ID |
| L Identity |
Int32 |
答题人身份 |
| RecvQuestionTime |
Int32 |
学生收到试题时间 |
| LastCommitTime |
Int32 |
学生提交答案时间 |
抢答器
| 字段 |
类型 |
说明 |
| Area |
Struct |
窗口坐标 |
| └ X1,Y1,X2,Y2 |
Int32 |
无 |
| Color |
String |
发题消息为standaloneResponderToolglobalData,学生抢答消息为standaloneResponderTool+UID |
| Cmd |
Int32 |
命令字67375105 |
| RandomTopLeft |
Struct |
随机位置坐标 |
| └ X,Y |
Int32 |
无 |
| Participants |
Struct |
参与抢答者 |
| └ ShowName |
String |
答题人昵称 |
| └ Uid |
Int32 |
答题人ID |
| L Identity |
Int32 |
答题人身份 |
| EndTime |
Int32 |
抢答结束时间 |
| CurState |
Int32 |
当前状态,0:起始状态,1:开始抢答,2:学生抢答,3:抢答后等待,4:结束 |
| nId |
Int32 |
最快抢答者ID |
| FastestGuyTime |
Int32 |
最快抢答时间 |
| FastestGuyName |
String |
最快抢答者 |
上下台
| 字段 |
类型 |
说明 |
| Cmd |
Int32 |
命令字67371521 |
| Operation |
Int32 |
0为下台,1为上台 |
教室内IM文字聊天
用户在教室内的IM文字和表情聊天信息。
| 字段 |
类型 |
说明 |
| Cmd |
String |
命令字InMesText |
| Type |
Int32 |
发言数据类型:0 |
| Content |
String |
发言字符串 |
教室内IM图片聊天
用户在教室内的IM图片聊天信息。
| 字段 |
类型 |
说明 |
| Cmd |
String |
命令字InMesImg |
| Type |
Int32 |
发言数据类型:1 |
| Content |
String |
压缩后的图片数据base64转码 |
| EmoteType |
Int32 |
表示图片类型:1-bmp, 2-jpg, 3-gif |
解压图片发言python实例
import zlib
import base64
imageData = base64.b64decode(data['Content'])
imageData = zlib.decompress(imageData)
with open('image.jpg', "wb") as f:
f.write(imageData)
课节网络状态报告
课节实时网络与CPU占用率状态反馈,每5分钟发送一次,为5分钟内的汇总
| 参数名 |
类型 |
说明 |
| Cmd |
String |
类型为字符串,'Net' |
| Data |
对象 |
状态统计 |
| └ poor |
整数 |
网络状态很差次数 |
| └ bad |
整数 |
网络状态较差次数 |
| └ normal |
整数 |
网络状态正常次数 |
| └ good |
整数 |
网络状态较好次数 |
| └ total |
整数 |
统计总次数 |
| └ cpuLow |
整数 |
CPU占用率百分比在[0, 50)之间的次数 |
| └ cpuMedium |
整数 |
CPU占用率百分比在[50, 70)之间的次数 |
| └ cpuHigh |
整数 |
CPU占用率百分比在[70, 90)之间的次数 |
| └ cpuBusy |
整数 |
CPU占用率百分比在[90, 100]之间的次数 |
| └ cpuTotal |
整数 |
统计总次数 |
| └ localIP |
String |
用户IP(最后一位隐藏) |
实例
{
"ClassID": 290274,
"ActionTime": 1521547386,
"UID": 1001920,
"CourseID": 122982,
"TimeStamp": 1521547387,
"Cmd": "Net",
"_id": "5ab0f87aa3251e6e49b9e892",
"SID": 1001920,
"Data": {
"poor": 0,
"bad": 0,
"total": 331,
"good": 331,
"normal": 0,
"cpuLow": 0,
"cpuMedium": 10,
"cpuHigh": 31,
"cpuBusy": 3,
"cpuTotal": 44,
"localIP": "1.2.3.*"
}
}
教室内设备检测报告
| 参数名 |
类型 |
说明 |
| Cmd |
String |
类型为字符串,'Check' |
| Data |
对象 |
设备检测结果详细 |
| └ OperatingSystem |
string |
操作系统 |
| └ CPU |
string |
用户 CPU |
| └ NetworkDelay |
string |
网络延迟 |
| └ FrameLoss |
string |
丢包率 |
| └ MicrophoneArbitrary |
number |
麦克风状态,1为已安装,2为disable或不存在 |
| └ HeadphoneArbitrary |
number |
耳机状态,1为已安装,2为disable或不存在 |
| └ CameraArbitrary |
number |
摄像头状态,1为已安装,2为disable或不存在 |
| └ EEO_VIDEO_DEVICE_NAME |
string |
选用摄像头设备名称 |
| └ EEO_AUDIO_DEVICE_NAME |
string |
选用麦克风设备名称 |
| └ EEO_AUDIO_OUTPUT_NAME |
string |
选用耳机设备名称 |
| └ EEO_DEVICE_LIST |
对象 |
硬件列表 |
| └ camera |
array |
所有摄像头设备名称列表 |
| └ micphone |
array |
所有麦克风设备名称列表 |
| └ speaker |
array |
所有扬声器设备名称列表 |
| └ MicrophoneImpersonal |
number |
程序检测的麦克风状态(1正常,2不正常或未收到声音数据),移动端此字段无效 |
| └ CameraImpersonal |
number |
程序检测的摄像头状态(1正常,2不正常或未收到摄像头数据),移动端此字段无效 |
| └ HeadphoneImpersonal |
number |
无法对此设备进行程序检测,移动端此字段无效 |
| └ MicrophoneAttachment |
string |
麦克风附件 |
| └ HeadphoneAttachment |
string |
耳机附件 (暂时为空) |
| └ CameraAttachment |
string |
摄像头附件 |
| └ ClassInVersion |
string |
客户端版本 |
| └ Mac |
string |
MAC 地址 |
| └ addTime |
string |
自检时间(时间戳) |
| └ InfoSource |
number |
上传自检时机:1,设备初始化;2,设备选择,3,自检完成;4,设备插拔;5,设置完成;7,自检中断; |
| └ DeviceType |
number |
设备类别:0,未知;1,Windows;2,iPhone;3,iPad;4,Android Phone;5,Android Pad;6,Mac; |
| └ ClientIP |
string |
用户IP(最后一位隐藏) |
实例
{
"ClassID": 290274,
"ActionTime": 1521547218,
"UID": 1001920,
"CourseID": 122982,
"TimeStamp": 1521547219,
"Cmd": "Check",
"_id": "5ab0f7d2a3251e6e49b9e88b",
"SID": 1001920,
"SafeKey": "7e0a589d8fd68a82a523ac86c95c9d1d",
"Data": {
"MicrophoneArbitrary": null,
"ClassInVersion": "2.1.1.60",
"EEO_AUDIO_OUTPUT_NAME": "\u626c\u58f0\u5668 (Realtek High Definition Au",
"FrameLoss": "",
"EEO_AUDIO_DEVICE_NAME": "\u9ea6\u514b\u98ce (HD Webcam C270)",
"CameraImpersonal": 0,
"addTime": 1521547218,
"CPU": "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz",
"OperatingSystem": "Windows 10 (1709)",
"Mac": "00:15:5D:33:74:C4",
"CameraArbitrary": null,
"EEO_VIDEO_DEVICE_NAME": "Logitech HD Webcam C270",
"ServerName": "EEO-A0134 (Auto)",
"HeadphoneAttachment": "",
"ClientIP": "10.0.1.*",
"MicrophoneAttachment": "https://root_url/upload/autocheck/",
"EEO_DEVICE_LIST": "{\"camera\": [\"Logitech HD Webcam C270\"], \"micphone\": [\"HD Webcam C270\"], \"speaker\": [\"LG HDR 4K\"]}",
"MicrophoneImpersonal": 0,
"CameraAttachment": "",
"HeadphoneArbitrary": null,
"InfoSource": 3,
"NetworkDelay": ""
}
}
教室内老师和学生求助
上课过程中,老师端和学生端(学生端的求助,需要在机构管理后台的 教室配置 里勾选 学生求助设置),都能够向sdk管理后台发起求助信息
| 参数名 |
类型 |
说明 |
| Cmd |
String |
'HelpInfo' |
| ClassID |
整数 |
求助课节ID |
| Data |
对象 |
求助内容 |
| └ UID |
整数 |
发起求助用户ID |
| └ Message |
string |
求助信息 |
| └ UserList |
整数数组 |
求助所包含的用户ID |
实例
{
"SID": 1000958,
"ClassID": 301417,
"Data": {
"UID": 1001558,
"Message": "Speaker is abnormal. The user can't hear sound",
"UserList": [1001558, 123456]
},
"Cmd": "HelpInfo"
}
延长课节时长
课节结束前 8 - 3 分钟内,如果老师延长课节时长,将收到此推送消息。
注:只有当机构的 教室设置 勾选了课堂延时设置(允许教师延长课节时长),老师才能延长课节时长。
| 参数名 |
类型 |
说明 |
| Cmd |
String |
'ClassLen' |
| StartTime |
Int32 |
课节开始时间,unix时间戳 |
| PrelectTimeLength |
Int32 |
新课节时长,单位秒 |
| CloseClassDelay |
Int32 |
拖堂延时,单位秒 |
实例
{
"SID": 1000958,
"StartTime": 1568862650,
"PrelectTimeLength": 1200,
"CloseClassDelay": 1200,
"Cmd": "ClassLen"
}
直播页面用户登录
| 参数名 |
类型 |
说明 |
| Cmd |
String |
'LiveWebLogin' |
| ClassID |
整数 |
直播课节ID |
| Data |
对象 |
内容 |
| └ Telephone |
String |
登录用户电话号 |
| └ LoginTime |
整数 |
Unix时间戳 |
| └ Nickname |
String |
登录用户昵称 |
实例
{
"SID": 1000958,
"ClassID": 301417,
"Data": {
"Telephone": "10015584345",
"LoginTime": 1521547219,
"Nickname": "XiaoMing"
},
"Cmd": "LiveWebLogin"
}
启动录课详情
录课模式等信息,每次录课启动时推送
| 参数名 |
类型 |
说明 |
| Cmd |
String |
类型为字符串,'LiveDetail' |
| Data |
对象 |
录课详细信息 |
| └ Audio mode |
字符串 |
录制声音模式:软件声音为'ClassIn Audio',系统声音为'System Audio' |
| └ HighBitRate |
字符串 |
录制码率:高码率'High',普通码率为'Standard' |
| └ IP |
字符串 |
推流IP:可能为域名'livepush.eeo.cn'或具体IP地址 |
| └ Micphone is recorded |
字符串 |
是否录麦克风的声音: 'Yes'或'No' |
| └ Video Scope |
字符串 |
录制目标为桌面'Desktop'或教室窗口'Classroom' |
| └ Video Size |
字符串 |
录制大小:高清'HD(1280*720)'或'FHD(1920*1080)' |
实例
{
"SID": 1001920,
"Data": {
"Audio mode": "ClassIn Audio",
"HighBitRate": "Standard",
"IP": "livepush.eeo.cn",
"Micphone is recorded": "Yes",
"Video Scope": "Desktop",
"Video Size": "HD(1280*720)"
},
"ClassID": 392429,
"Cmd": "LiveDetail"
}