Class detail data in realtime
Class detail data will be pushed in real time during class. The types available are listed as : hands up, rewards, position of camera, authorise, enter the classroom, leave the classroom,
kick off, mute all, mute, Answering tool, Responder, up and down stage, IM text msg in classroom, IM picture msg in classroom, network condition of the classroom(summary for
every 5 minites), device report in classroom, help msg from teacher and students, extension of the class time, user login msg in live page, recording start msg
different 'cmd' value iditify different type of msg.
please notice that some type of the data will also be included in type of 'class total data', which is a summary of teaching behavior, so if you dont need the data to send in realtime,
you may substript 'class total data' instead of 'hands up','rewards','enter the classroom' etc.
Hands up
Key |
type |
Instruction |
Cmd |
Int32 |
Command word 67375105 |
Color |
String |
hands up+user ID |
Handsup |
Boolean |
True is head up status,False is Hands down status |
Rewards
Key |
type |
Instruction |
Cmd |
Int32 |
Command word 67375105 |
Color |
String |
award + users ID |
Times |
Int32 |
Number of reward |
position of the camera
Key |
type |
Instruction |
Cmd |
Int32 |
Command word 67375105 |
Color |
String |
webcamPosition + UID |
Area |
Struct |
coordinate of the camera |
└ X1 |
Int32 |
X coordinate of the upper left corner |
└ Y1 |
Int32 |
Y coordinate of the upper left corner |
L X2 |
Int32 |
X coordinate of the lower right corner |
L Y2 |
Int32 |
Y coordinate of the lower right corner |
OnTop |
Bool |
is in the seat area,0:No 1: Yes |
Channel |
Int32 |
Serial Number of camera,0: The main camera 1: the auxiliary camera |
authorise
Key |
type |
Instruction |
Cmd |
Int32 |
Command word 67371520 |
Operation |
Boolean |
True is authorization,False is Cancel the authorization |
Enter the classrom
Key |
Type |
Instruction |
Cmd |
Int32 |
Command word 67371107 |
NickName |
String |
The user nickname |
AllowEnterTime |
Int32 |
Users are kicked out and allowed to enter time again |
UID |
Int32 |
User ID |
LoginMobile |
String |
Mobile phone no |
Identity |
Int32 |
User's identity 1:student, 2:attend, 3:teacher, 4:teaching assistant, 193:Agency principals, 194:Principal's assistant |
Device |
Int32 |
Login the client type,0x00:PC,0x01:iphone,0x02:ipad,0x03:web client,0x04:Android mobile phone,0x05:Android pad,0x06:Android TV |
Out of the classroom
Key |
Type |
Instruction |
Cmd |
Int32 |
Command word 67371111 |
UID |
Int32 |
User ID |
Identity |
Int32 |
User's identity |
Reason |
Int32 |
Exit reason,0: unknown exception, 1: normal exit, 2: classroom closed, 3: abnormal exit, 4: kicked out of the classroom, 5: Service shutdown, 6: disconnection, 7: cancellation of course scheduling, 8: user role change |
Kick out
Key |
Type |
Instruction |
Cmd |
Int32 |
Command word 67371523 |
Duration |
Int32 |
Kick out the maintenance time |
TargetUID |
Int32 |
Kicked out student ID |
Operation |
Int32 |
1 Kicked out |
mute
Key |
Type |
Instruction |
Cmd |
Int32 |
67371522 for mute independently , 67371586 for mute all |
TargetUID |
Int32 |
mute target UID |
Operation |
Int32 |
1 mute ,0 Cancel the mute |
Key |
Type |
Instruction |
Area |
Struct |
The window coordinates |
└ X1,Y1,X2,Y2 |
Int32 |
Null |
Color |
String |
When send questions is ‘standaloneSelectorToolglobalData’,When students answer the question is‘standaloneSelectorTool’ + student ID |
Cmd |
Int32 |
Command word 67375105 |
QSentTime |
Int32 |
time when the tool's send out |
CurState |
Int32 |
Current answer status 0:Start state,1:Send the topic status,2:State of closed questions |
QCollectTime |
Int32 |
Closed questions time |
CorrectItems |
String |
The correct answer |
Commited |
Int32 |
Student answer status 0: start status, 1: answer status, 2: submit |
SelectedItem |
String |
Answers chosen by students |
AllItems |
String |
All alternative answers |
Participants |
Struct |
students name |
└ ShowName |
String |
nickname |
└ Uid |
Int32 |
student ID |
L Identity |
Int32 |
Answer the questions person identity |
RecvQuestionTime |
Int32 |
The students received the test time |
LastCommitTime |
Int32 |
Time for students to submit answers |
The Responder
Key |
Type |
Instruction |
Area |
Struct |
The window coordinates |
└ X1,Y1,X2,Y2 |
Int32 |
Null |
Color |
String |
Send the topic message is standaloneResponderToolglobalData,The students answered the news is standaloneResponderTool+UID |
Cmd |
Int32 |
Command word 67375105 |
RandomTopLeft |
Struct |
Random position coordinates |
└ X,Y |
Int32 |
Null |
Participants |
Struct |
Students participating in the response |
└ ShowName |
String |
student nickname |
└ Uid |
Int32 |
student ID |
L Identity |
Int32 |
espondents |
EndTime |
Int32 |
Vies to answer first end time |
CurState |
Int32 |
The current state,0:Initial state,1:begins,2:Student vies to answer first,3:After the answer, wait,4:end |
nId |
Int32 |
Fastest responder ID |
FastestGuyTime |
Int32 |
The fastest time to answer the question |
FastestGuyName |
String |
The fastest responder person |
on stage and down the stage
Key |
Type |
Instruction |
Cmd |
Int32 |
Command word 67371521 |
Operation |
Int32 |
0 is down of the stage,1 is on the stage |
IM text msg in classroom
IM text msg user send in the classroom chating tool
Key |
Type |
Instruction |
Cmd |
String |
Command word InMesText |
Type |
Int32 |
data type of the msg(0 means text msg): 0 |
Content |
String |
string of the msg |
IM picture msg in classroom
IM image msg user send in the classroom chating tool
Key |
Type |
Instruction |
Cmd |
String |
Command word InMesImg |
Type |
Int32 |
data type of the msg(1 means image msg): 1 |
Content |
String |
Base64 transcoding of compressed image data |
EmoteType |
Int32 |
type of the image: 1-bmp, 2-jpg, 3-gif |
a python exmaple to unzip the image
import zlib
import base64
imageData = base64.b64decode(data['Content'])
imageData = zlib.decompress(imageData)
with open('image.jpg', "wb") as f:
f.write(imageData)
network condition of the classroom
A realtime feedback of network/cpu condition of users in the classroom that send each 5 mintes,which is the summary of the lastest 5 mintes.
Key |
Type |
Instruction |
Cmd |
String |
string of 'Net' |
Data |
json object |
data of the user |
└ poor |
int |
number of times in poor network condition |
└ bad |
int |
number of times in bad network condition |
└ normal |
int |
number of times in normal network condition |
└ good |
int |
number of times in good network condition |
└ total |
int |
total number of times |
└ cpuLow |
int |
number of times when cpu usage within [0,50) |
└ cpuMedium |
int |
number of times when cpu usage within[50, 70) |
└ cpuHigh |
int |
number of times when cpu usage within[70, 90) |
└ cpuBusy |
int |
number of times when cpu usage within[90, 100] |
└ cpuTotal |
int |
total number of times |
└ localIP |
String |
IP of user (the last section is hidden) |
example
{
"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.*"
}
}
device report in classroom
Key |
Type |
Instruction |
Cmd |
String |
string of 'Check' |
Data |
json object |
detail result of the device test |
└ OperatingSystem |
string |
OperatingSystem |
└ CPU |
string |
CPU info |
└ NetworkDelay |
string |
NetworkDelay |
└ FrameLoss |
string |
FrameLoss |
└ MicrophoneArbitrary |
number |
status of microphone,1 normal,2 disable or no equipment found |
└ HeadphoneArbitrary |
number |
status of Headphone,1 normal,2 disable or no equipment found |
└ CameraArbitrary |
number |
status of Camera,1 normal,2 disable or no equipment found |
└ EEO_VIDEO_DEVICE_NAME |
string |
selected camera |
└ EEO_AUDIO_DEVICE_NAME |
string |
selected microphone |
└ EEO_AUDIO_OUTPUT_NAME |
string |
selected headphone |
└ EEO_DEVICE_LIST |
json object |
equipment list |
└ camera |
array |
camera equipment list |
└ micphone |
array |
microphone equipment list |
└ speaker |
array |
speaker equipment list |
└ MicrophoneImpersonal |
number |
device test result of Microphone(1 normal, 2 abnormal or no audio data found), not valid for mobile device |
└ CameraImpersonal |
number |
device test result of Camera(1 normal, 2 abnormal or no audio data found), not valid for mobile device. |
└ HeadphoneImpersonal |
number |
device test result of Headphone(1 normal, 2 abnormal or no audio data found), not valid for mobile device |
└ MicrophoneAttachment |
string |
attachment for micrphone test |
└ HeadphoneAttachment |
string |
attachement for headphone test(should be empty recently) |
└ CameraAttachment |
string |
attachment for camera test |
└ ClassInVersion |
string |
version of classin app |
└ Mac |
string |
MAC address of the device |
└ addTime |
string |
time of the device test (timestamp) |
└ InfoSource |
number |
trigger of the data: 1 initialization of the equipment;2,selection of the equipment,3, finish the self equipment testing;4, changes of equipment;5 finish setting of the equipment; |
7, interrupt of the equipment testing;
| └ DeviceType | number | type of the device: 0, unknown; 1 Windows; 2 iPhone ; 3 iPad ; 4 Android Phone ; 5 Android Pad ; 6 Mac;
| └ ClientIP | string | IP of user (the last section is hidden)|
example
{
"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": ""
}
}
help msg from teacher and students
teachers and students in the classroom can send help to eeo.cn. if there's help msg, this data could be send at the sametime.
Key |
Type |
Instruction |
Cmd |
String |
'HelpInfo' |
ClassID |
int |
class ID |
Data |
json object |
content |
└ UID |
int |
UID of the user that send the help |
└ Message |
string |
help msg |
└ UserList |
int array |
UID of users in the classroom |
example
{
"SID": 1000958,
"ClassID": 301417,
"Data": {
"UID": 1001558,
"Message": "Speaker is abnormal. The user can't hear sound",
"UserList": [1001558, 123456]
},
"Cmd": "HelpInfo"
}
extension of the class time
at 8 - 3 minutes before the class end time ,the teacher have a change to extend the class(can be set in classroom setting).
if he extend the class time, this data will be send.
Key |
Type |
Instruction |
Cmd |
String |
'ClassLen' |
StartTime |
Int32 |
start time of the class,unix timestamp |
PrelectTimeLength |
Int32 |
duration of the class after extension ,by second |
CloseClassDelay |
Int32 |
delay after the classin,by second, should be 1200 second |
example
{
"SID": 1000958,
"StartTime": 1568862650,
"PrelectTimeLength": 1200,
"CloseClassDelay": 1200,
"Cmd": "ClassLen"
}
user login msg in live page
Key |
Type |
Instruction |
Cmd |
String |
'LiveWebLogin' |
ClassID |
int |
classin ID |
Data |
json object |
content |
└ Telephone |
String |
phone number of the user |
└ LoginTime |
int |
Unix timestamp |
└ Nickname |
String |
nickname of the user |
example
{
"SID": 1000958,
"ClassID": 301417,
"Data": {
"Telephone": "10015584345",
"LoginTime": 1521547219,
"Nickname": "XiaoMing"
},
"Cmd": "LiveWebLogin"
}
recording start msg
send eachtime the teacher starts a cloud recording,with details of the recording setting
Key |
Type |
Instruction |
Cmd |
String |
string of 'LiveDetail' |
Data |
json object |
Recording details |
└ Audio mode |
string |
Audio mode", 'ClassIn Audio' or 'System Audio' |
└ HighBitRate |
string |
BitRate: 'High', or 'Standard' |
└ IP |
string |
IP of the pusher :maybe a domain name with 'livepush.eeo.cn' or a IP address |
└ Micphone is recorded |
string |
is Micphone's recorded'Yes' or 'No' |
└ Video Scope |
string |
Video Scope 'Desktop'OR 'Classroom' |
└ Video Size |
string |
Video Size : 'HD(1280*720)' or 'FHD(1920*1080)' |
example
{
"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"
}
image data of the blackboard
each time when user clean the blackboard, the system will change the edb to an image and send in realtime.
Key |
Type |
Instruction |
Cmd |
String |
'EdbImg' |
Url |
String |
address of the image |
GroupId |
int |
group Id that the edb belongs to,GroupId=0 means the main classroom; it should be always 0 if the class did not use the group function |
example
{
"SID": 1001920,
"ClassID": 393472,
"Url": "http://www.eeo.cn/20200819/20200819_393472_0_bb_151823_853.jpg",
"GroupId": 0,
"Cmd": "EdbImg"
}