Real-time Class Detail Data

Class detail data is pushed in real-time during class. The types available are hands up, rewards, the position of the camera, authorize, enter the classroom, leave the classroom, kick out, mute all, mute individual, selector, responder, up and down the stage, network condition of the classroom(sent in summary every 5 mins), device detection in the classroom, message of teachers and students seeking help in the classroom, extension of the class, message of a user logging onto the ClassIn web-live page, details of starting the classroom recording, message of viewers' making reservation to watch the live stream on the ClassIn web-live page, details of watching the live stream on the webpage, 'like' on the live stream webpage and details of clicks on goods.

  • Use different 'cmd' values to identify different types of data.

  • Please note that some types of real-time data will also be included in the data type of Summary(cmd=end), which is a summary of teaching and learning events in the classroom. Summary data is sent after class. For example, you may subscribe to 'Summary data' to receive the details of students getting rewarded and entering/exiting the classroom instead of receiving the real-time data of hands up, rewards, enter the classroom etc separately.

Hands up

Key type Instruction
Cmd Int32 cmd=67375105
Color String hands up+user ID
Handsup Boolean True: Hands up; False: Hands down

Rewards

Key type Instruction
Cmd Int32 cmd=67375105
Color String award + users ID
Times Int32 Count of times

Position of the camera

Key type Instruction
Cmd Int32 cmd=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 Whether the user is up on stage. 0:No; 1: Yes
Channel Int32 Serial Number of camera. 0: main camera; 1: auxiliary camera

Authorise

Key Type Instruction
Cmd Int32 cmd=67371520
Operation Boolean True: authorized; False: cancel the authorization

Enter the classroom

Key Type Instruction
Cmd Int32 cmd=67371107
NickName String The user's nickname
AllowEnterTime Int32 The time when the user is allowed to enter the classroom again after he/she is kicked out.
UID Int32 User ID
LoginMobile String Mobile phone no.
LoginEmail String Email address
ClientID Int32 When the instructor uses dual devices to enter the classroom, the first logged in device is 0, and the second logged in device is 1.
Identity Int32 User's identity. 1:student, 2:audit student, 3:teacher, 4:co-teachert/assistant, 193:School principal, 194:Principal's assistant
Device Int32 Type of client. 0:PC,1:iphone,2:ipad,3:web client,4:Android mobile phone,5:Android pad,6:Android TV,9:PC-x64

Exit the classroom

Key Type Instruction
Cmd Int32 cmd=67371111
UID Int32 User ID
Identity Int32 User's identity
ClientID Int32 When the instructor uses dual devices to enter the classroom, the first logged in device is 0, and the second logged in device is 1.
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 the class, 8: change of user's role in the class, 54: duplicate login from the same client, 56: network connection interrupted, 60: logged out due to a new login from another client, 101: user exited the app by pressing the home button on their Android device, 102: user exited the app due to an incoming phone call, 111: app went into the background.

Kicked out

Key Type Instruction
Cmd Int32 cmd=67371523
Duration Int64 The time period of banning
TargetUID Int32 UID of the student who is kicked out
Operation Int32 1: Kicked out

Mute

Key Type Instruction
Cmd Int32 67371522: mute individual student; 67371586: mute all
TargetUID Int32 UID of the students who is muted
Operation Int32 1: mute; 0: allow to speak

Selector

Key Type Instruction
Area Struct The coordinate of the tool in the classroom
└ X1,Y1,X2,Y2 Int32 Null
Color String ‘standaloneSelectorToolglobalData’: send questions. ‘standaloneSelectorTool’ + student UID: students answer the question.
Cmd Int32 67375105
QSentTime Int32 ime when the tool is assigned
CurState Int32 Status of the selector. 0:available; 1:in the process of assigning; 2:stop to choose
QCollectTime Int32 Time to stop the selector
CorrectItems String The correct answer
Commited Int32 Student's status. 0: start, 1: in the process, 2: submit
SelectedItem String Answers chosen by students
AllItems String All alternative answers
Participants Struct Details of participants
└ ShowName String nickname
└ Uid Int32 student UID
L Identity Int32 Identity of the user who participated
RecvQuestionTime Int32 Time when the student receives the selector
LastCommitTime Int32 Time when the student submits answers

Responder

Key Type Instruction
Area Struct The coordinate of the tool in the classroom
└ X1,Y1,X2,Y2 Int32 Null
Color String standaloneResponderToolglobalData: teacher started the tool. standaloneResponderTool+UID: students participated
Cmd Int32 67375105
RandomTopLeft Struct The coordinates of the random position of the responder tool
└ X,Y Int32 Null
Participants Struct Students participated in clicking the responder tool
└ ShowName String The student's nickname
└ Uid Int32 The student's ClassIn UID
L Identity Int32 The identity of the participant
EndTime Int32 Time when the activity ends
CurState Int32 Current status. 0:Initial state,1:Begins,2:Students race to be the first one to click the Responder on the screen,3:In the status of wait when someone has successfully clicked the Responder, 4:End
nId Int32 UID of the student who is the first to click the Responder
FastestGuyTime Int32 Time duration of the Responder is clicked
FastestGuyName String Name of the student who clicked the Responder first

Up and down the stage

Key Type Instruction
Cmd Int32 67371521
Operation Int32 0: down the stage,1: up on the stage

Network condition during the class

A realtime condition of network/cpu of users in the classroom. The data is sent each 5 mintes. It is the summary of the condition in the lastest 5 mintes.

Parameter Type Description
Cmd String Type as a string, 'Net'
Data Object Status statistics
└ localIP String mediaIp (Last digit hidden)
└ socket String UDP/TCP, the protocol actually used for communication in the classroom media at the current reporting time
└ mediaPort Integer Media port
└ reportTime String Timestamp that triggered the data report
└ mediaDuration Integer Length of the upload cycle (seconds)
└ good Integer Total number of UDP status is Good
└ normal Integer Total number of UDP status is Normal
└ bad Integer Total number of UDP status is Bad
└ poor Integer Total number of UDP status is Poor
└ notReach Integer Total number of UDP status is Not Reach
└ total Integer Total number of UDP
└ avgDelay String Average delay of UDP
└ avgVariance String Average variance of UDP
└ loss Integer Actual packet loss of UDP
└ udpTotalPkts Integer Total UDP test packets
└ tcpGood Integer Total number of TCP status is Good
└ tcpNormal Integer Total number of TCP status is Normal
└ tcpBad Integer Total number of TCP status is Bad
└ tcpPoor Integer Total number of TCP status is Poor
└ tcpNotReach Integer Total number of TCP status is Not Reach
└ tcpTotal Integer Total number of TCP
└ tcpAvgDelay String Average delay of TCP
└ tcpAvgVariance String Average variance of TCP
└ gatewayGood Integer Total number of user gateway status is Good
└ gatewayNormal Integer Total number of user gateway status is Normal
└ gatewayBad Integer Total number of user gateway status is Bad
└ gatewayPoor Integer Total number of user gateway status is Poor
└ gatewayNotReach Integer Total number of user gateway status is Not Reach
└ gatewayTotal Integer Total number of user gateway
└ gatewayTtl String User gateway TTL
└ gatewayAddress String User gateway
└ gatewayAvgDelay String Average delay of user gateway
└ gatewayAvgVariance String Average variance of user gateway
└ gatewayLoss Integer Actual packet loss of user gateway
└ gateway2Good Integer Total number of access gateway status is Good
└ gateway2Normal Integer Total number of access gateway status is Normal
└ gateway2Bad Integer Total number of access gateway statu is Bad
└ gateway2Poor Integer Total number of access gateway status is Poor
└ gateway2NotReach Integer Total number of access gateway status is Not Reach
└ gateway2Total Integer Total number of access gateway
└ gateway2Ttl String Access gateway TTL
└ gateway2Address String Access gateway
└ gateway2AvgDelay String Average delay of access gateway
└ gateway2AvgVariance String Average variance of access gateway
└ gateway2Loss String Actual packet loss of access gateway
└ cpuLow Integer Total number of CPU status is Low
└ cpuMedium Integer Total number of CPU status is Medium
└ cpuHigh Integer Total number of CPU status is High
└ cpuBusy Integer Total number of CPU status is Busy
└ cpuTotal Integer Total number of CPU status check

Example

{
    "ClassID": 290274,
    "ActionTime": 1521547386,
    "UID": 1001920,
    "CourseID": 122982,
    "TimeStamp": 1521547387,
    "Cmd": "Net",
    "_id": "5ab0f87aa3251e6e49b9e892",
    "SID": 1001920,
    "Data": {
        "avgVariance": "35.890",
        "reportTime": "1720082915",
        "gatewayAvgVariance": "38.284",
        "gateway2Poor": 0,
        "gatewayNormal": 0,
        "total": 592,
        "mediaPort": 8080,
        "gateway2AvgDelay": "16.240",
        "udpTotalPkts": 92,
        "localIP": "123.24.205.*",
        "avgDelay": "68.258",
        "gatewayAvgDelay": "6.794",
        "poor": 10,
        "good": 560,
        "notReach": 3,
        "gateway2AvgVariance": "74.474",
        "normal": 19,
        "gatewayTtl": 1,
        "gatewayTotal": 300,
        "gateway2Loss": 6,
        "gateway2Good": 293,
        "gateway2NotReach": 6,
        "loss": 4,
        "gateway2Ttl": 3,
        "gateway2Total": 299,
        "gatewayLoss": 0,
        "gatewayNotReach": 0,
        "gateway2Address": "123.25.27.93",
        "socket": "UDP",
        "gateway2Bad": 0,
        "gatewayPoor": 0,
        "bad": 0,
        "gateway2Normal": 0,
        "gatewayGood": 300,
        "gatewayBad": 0,
        "mediaDuration": 300,
        "gatewayAddress": "10.0.30.1",
        "cpuHigh": 0,
        "cpuMedium": 0,
        "cpuBusy": 0,
        "cpuLow": 299,
        "cpuTotal": 299
    }
}

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,
        "notReach": 0,
        "cpuLow": 0,
        "cpuMedium": 10,
        "cpuHigh": 31,
        "cpuBusy": 3,
        "cpuTotal": 44,
        "localIP": "1.2.3.*"
    }
}

Equipment detection in the 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": ""
    }
}

Teachers and students seek help in the classroom

During the class, teachers and students in the classroom can send message to ask for help from ClassIn. (To allow students to seek help in the virual classroom, please enable the function in the school admin dashboard. Path: Profile-Setting-Classroom Setting-Swithes-18. Students seek help setting.)If there's help msg, this data would be sent at the sametime.

Key Type Instruction
Cmd String 'HelpInfo'
ClassID int ID of the lesson that needs help
Data json object details
└ UID int UID of the user that seek help
└ Message string content of the 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"
}

Extend the class duration

During 8 to 3 minutes before the end of class, the teacher would have a chance to extend the class. The data is sent if the instructor extends the lesson. Note: You should enable the function of allowing the instructor to extend the lesson on the school admin dashboard first. Path: Profile-Setting-Classroom Setting-Switches-13. Class time extension setting)

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 how much time is delayed,by second

example


{
    "SID": 1000958,
    "StartTime": 1568862650,
    "PrelectTimeLength": 1200,
    "CloseClassDelay": 1200,
    "Cmd": "ClassLen"
}

The audience's info used to log in to the ClassIn web-live page

When you create a lesson and enable it to be live streamed on the ClassIn web-live page, you can set that only the logged-in viewers can watch the livestream. ClassIn uses mobile phone numbers and email addresses as account. This data is sent in real-time when the audience logged in to the ClassIn's web-live streaming page. The data will not be generated when the class is finished, and viewers log in to watch the playback.

Key Type Instruction
Cmd String 'LiveWebLogin'
ClassID int Lesson ID
Data json object content
└ Telephone String The mobile phone number or email address of the audience, subject to the actual login account
└ LoginTime int Time when the audience logged in. 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

The data contains the setting of the class cloud recording. It is sent eachtime when the teacher enters the virtual classroom and starts the classroom recording.

Key Type Instruction
Cmd String string of 'LiveDetail'
Data json object Details of the cloud recording
└ Audio mode string Class recording mode: 'ClassIn Audio' means only the audio of the virtual classroom is recorded. 'System Audio' means the audio of the whole system is recorded.
└ HighBitRate string BitRate of the recording: 'High', or 'Standard'(normal)
└ IP string IP of the pusher: maybe a domain named with 'livepush.eeo.cn' or an IP address
└ Micphone is recorded string Whether the Micphone's recorded. 'Yes' or 'No'
└ Video Scope string The 'Desktop' is recorded OR only the '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 of the blackboard writing in the virtual classroom

You can subscribe to this data to collect the blackboard writing generated during the class. The original file format of the blackboard writing is .edb in the ClassIn system, but we will send you in the image format. The data is sent in realtime when the instructor cleans the blackboard or when the lesson ends.

Key Type Instruction
Cmd String 'EdbImg'
Url String Download address of the image
GroupId int The group Id that the edb file belongs to. GroupId=0 means the blackboard writing was in the lesson's main classroom. The group id should always be 0, if you did not use the function of breakout rooms.

example


{
    "SID": 1001920,
    "ClassID": 393472,
    "Url": "http://www.eeo.cn/20200819/20200819_393472_0_bb_151823_853.jpg",
    "GroupId": 0,
    "Cmd": "EdbImg"
}

Audience make reservation for the live streaming on the ClassIn web-live page

When there is an upcoming live streaming class, the audience can make reservation in advance so as to receive reminder when the live streaming actually starts. This data is sent in real-time when the audience click Reservation on the ClassIn web-live page.

Key Type Instruction
Cmd String 'LiveReserve'
ClassID Int Lesson ID
Data object
└ Telephone String The audience's ClassIn account that used to make reservation. Either be a mobile number or email address, subject to the actual login account.
└ ReserveTime int The time when the audience submit the reservation. Unix timestamp

example

{
    "SID": 100088,
    "ClassID": 10086,
    "Cmd": "LiveReserve",
    "Data": {
        "Telephone": "15201114553",
        "ReserveTime": 1625108250
    }
}

Details of audience watching the live streaming on the ClassIn web-live page.

The data is sent in realtime when the viewer closes the ClassIn web-live page.
Please notice that in the following circumstances multiple data with same InTime and different Looktime will be sent: when the viewers' network is unstable/when the viewer refreshes the page/when the device is in the sleep mode. When such data is sent, please use(cmd,classid,telephone,intime) as unique key and only store the record with max Looktime.

Key Type Instruction
Cmd String 'LiveDataDetail'
ClassID int lesson ID
Data object
└ Telephone String The viewer's ClassIn account. Either be a mobile phone number or email address, subject to the actual login account. If the user is not logged in , the data is a string starts with'yk_'
└ Nickname String nick name of the user
└ Intime int The time when user enter the live page. Unix timestamp
└ LookTime int How much time the viewer watched. Seconds
└ IP String IP address of user
└ ClientType int The device that used: 1-PC browser,2-mobile browser,3-mini program in wechat

Example

{
    "SID": 100088,
    "ClassID": 10086,
    "Cmd": "LiveDataDetail",
    "Data": {
        "Telephone": "15201114553",
        "Nickname": "husky2021",
        "Intime": 1625108250,
        "LookTime": 60,
        "Ip": "127.0.0.1",
        "ClientType": 1
    }
}

Likes on the ClassIn web-live page

When viewing the livestream in the ClassIn web-live page, audience can click LIKEs on the page. This data is sent in realtime when user likes live streaming.

Key Type Instruction
Cmd String 'LiveLike'
ClassID int lesson ID
Data object
└ Telephone String The ClassIn account. Can either be mobile phone numbers or email addresses, subject to the actual login account. If the user is not logged in , the data is a string starts with'yk_'
└ Time int the time when user click LIKE. Unix timestamp

Example

{
    "SID": 100088,
    "ClassID": 10086,
    "Cmd": "LiveLike",
    "Data": {
        "Telephone": "15201114553",
        "Time": 1625108250
    }
}

Detail of clicks on goods on the ClassIn web-live page

The data is sent when students click on goods during the live class.

Key Type Instruction
Cmd String 'LiveGoodsClickDetail'
ClassID int lesson ID
Data object
└ Telephone String ClassIn account. Either be mobile phone numbers or email addresses, subject to the actual login account. If the user is not logged in , the data is a string starts with'yk_'.
└ Nickname String nick name of the user
└ Time int when user clicks the good,Unix timestamp
└ GoodNum int id of the good
└ GoodName String name of the good

Example

{
    "SID": 100088,
    "ClassID": 10086,
    "Cmd": "LiveGoodsClickDetail",
    "Data": {
        "Telephone": "15201114553",
        "Nickname": "husky2021",
        "Time": 1625108250,
        "GoodNum": 60,
        "GoodName": "Gone with Wind"
    }
}

results matching ""

    No results matching ""