Class Relevant Data Sent after Class
Class relevant data are sent after class, including class total data,and some other important types of msg such as Appraise Message, Class Recording File Generated Message, Class Recording File Uploaded Message, EDU Answering msg, Watching Aata of Replay Page, App Replay Viewing Data and Chat in IM Classroom.
Since the system sets a 20 mins delay period for lessons, the above data will be pushed 20 mins after the end of the lesson at the latest.
Note: the unit of statistical duration is seconds
1.Class Summary Data
Class(lesson) summary data will be generated after the lesson is finished and pushed 20 minutes after the lesson end time in json format. The UID can be obtained in the registered user interface.
Added the new function of End Lesson for All in the ClassIn client and management console, and thus added RealCloseTime to judge the actual lesson end time. The judgment logic is as follows.
Judge whether the RealCloseTime field exists(Dropping the line or abnormal exit may result in no RealCloseTime field).
- The RealCloseTime field does not exist: The CloseTime shall prevail.
- The RealCloseTime field exists: When RealCloseTime = 0, the time of CloseTime shall prevail; when RealCloseTime != 0, please compare the values of RealCloseTime and CloseTime, whichever is smaller shall prevail.
Key | data | Instruction |
---|---|---|
Cmd | String | Type is string,'End' |
Data | object | Contains all kinds of information in the classroom |
└ stageEnd | object | Up and down the stage. Statistics on the number of stepping down and the time on stage or under stage, if you enter the classroom it means you on stage and the whole class is in the classroom, and did not be stepped down, the number of on stage is 1, the time on stage is in class time |
└ UID | object | user UID |
└ DownCount | Int32 | The number of under stage |
└ DownTotal | Int32 | The time under the stage |
└ UpCount | Int32 | Number of times on the stage |
└ UpTotal | Int32 | Time on the stage |
└ handsupEnd | object | Hand up;Statistics for frequency and time of students’handsing up .If the time interval is shorter,the time of this single hands up may be 0 |
└ UID | object | user UID |
└ CTime | Int64 | The duration of a student raising the hand |
└ Total | Int32 | How many times the student raised hands |
└ inoutEnd | Object | Enter and exit the classroom |
└ UID | Object | user UID |
└ Total | Int64 | The sum of the time of the individual in the classroom(second) |
└ Details | Object Array | Records of individual entering and leaving the classroom |
└ Type | String | Into the classroom and out of the classroom:"In"or"Out" |
└ Device | Int32 | The equipment used entering the classroom is only valid when the type is "in" (the definition refers to the message field entering the classroom) |
└ Time | Int64 | The time to enter the classroom and out of the classroom |
└ Identity | Int32 | User identity 1: Student, 2: Audit Student, 3: Teacher, 4: Co-teacher, 193: Institution principal, 194: Principal assistant |
└ Deputies | Object Array | Record of the teacher's secondary device entering and exiting the classroom. It will be pushed, if there are records of the entering and exiting the classroom generated by the second device. If there are multiple secondary devices, there will be multiple objects present. |
└ ClientID | Int32 | When logging into the classroom with the secondary devices. The client ID is 1,2 to identify different second logged in device. |
└ Total | Int64 | Total time spent in the classroom using this device (seconds) |
└ Details | Object Array | Record of individual entry and exit from the classroom |
└ Type | String | Entering or exiting the classroom: "In" or "Out" |
└ Device | Int32 | Device used to enter the classroom. Only valid when Type is "In" (Refer to the field of entering the classroom for defination) |
└ Time | Int64 | Time for entering and exiting the classroom |
└ awardEnd | object | rewards |
└ UID | object | user UID |
└ Total | Int32 | Number of rewards received |
└ timerEnd | object | Timer |
└ Count | Int32 | Number of times using Timer |
└ Timing_Count | Int32 | Number of times using StopWatch |
└ muteEnd | object | Mute. This field is not available when the instructor doesn't mute the class or individuals. |
└ Persons | object | Mute single student |
└ Total | Int64 | The total amount of time an individual is in a state of being able to speak |
└ MuteAll | object | Teacher uses all mute |
└ Count | Int32 | Number of times to mute all |
└ Total | Int64 | Duration of muting all |
└ smallboardEnd | object | Sketch board-drawing |
└ Count | Int32 | Number of uses |
└ Total | Int64 | Total duration |
└ Period | array | Time period for each use |
└ DCount | Int32 | Number of distributions per use |
└ textboardEnd | object | Sketch board-text |
└ Count | Int32 | Number of uses |
└ Total | Int64 | Total duration |
└ Period | array | Time period for each use |
└ DCount | Int32 | Number of distributions per use |
└ authorizeEnd | object | Authorise |
└ UID | object | user UID |
└ Count | Int32 | Number of times |
└ Total | Int64 | Total duration |
└ diceEnd | object | Dice |
└ Count | Int32 | Number of uses |
└ answerEnd | object | Poll |
└ Count | Int32 | The total number of tools used to answer questions |
└ AverageAccuracy | float | The accuracy of the average answer |
└ Answers | array object | Every time answer question situation |
└ Answer question person | object | Answer question situation |
└ SelectedItem | String | Student choice answer |
└ LastCommitTime | Int64 | Time when the student submitted the answer |
└ RecvQuestionTime | Int64 | Time when the student received the questions |
└ Participants | object array | The description of the student who took part in the answer the question |
└ Identity | Int32 | answer the question identity |
└ Uid | Int32 | student ID |
└ ShowName | String | student nickname |
└ CorrectItems | String | The correct answer |
└ Accuracy | float | The correct probability of this problem |
└ screenshareEnd | object | Desktop sharing |
└ Count | Int32 | Screen sharing number of use |
└ Total | Int64 | Screen sharing the total length |
└ Period | array | Use screen time each time |
└ responderEnd | object | Buzzer |
└ Count | Int32 | The number of times used |
└ Persons | object | Participate in answering the user |
└ buzzer person | object | |
└ Count | Int32 | This person is involved in the number of answers |
└ SCount | Int32 | The number of times the person has won |
└ kickoutEnd | object | Kick out of the classroom |
└ UID | object array | Was kicked out of people UID |
└ Duration | Int64 | Kick out the duration of the classroom |
└ Time | Int64 | Kick out the classroom time |
└ sharewidgetEnd | object | courseware |
└ Files | object array | Use courseware every time particulars |
└ StartTime | Int64 | Open courseware time |
└ EndTime | Int64 | Close courseware time |
└ FileName | String | Courseware name |
└ Count | Int32 | Use the total number of courseware |
└ Total | Int64 | Use the total length of courseware |
└ edbEnd | object | edb courseware |
└ Files | object array | details for each edb |
└ FileKey | String | file index, 0 for local file |
└ ActionTime | Int32 | when the edb was opened |
└ FileSource | Int32 | source of the edb: 0 local ; 1, clouddisk |
└ FileName | String | file name |
└ equipmentsEnd | object | info of equipment |
└ UID | object | UID |
└ Microphone | object | microphone information |
└ Total | Int32 | The total duration of microphone activation time, only including the time when the microphone was turned on and user was on stage. |
└ Camera | object | camera information |
└ Total | Int32 | total time when camera is opened, on stage time only |
└ groupEnd | object | Breakout Room |
└ Grouping | object | each time when grouping |
└ Count | Int32 | number of times of grouping |
└ Duration | Int64 | total duration of grouping |
└ Items | object array | each record of grouping |
└ Duration | Int64 | duration for a grouping |
└ StartTime | Int32 | start time of a grouping |
└ Groups | object array | members of groups |
└ GroupId | Int32 | group id |
└ Role | Int32 | role in group,1:team leader,0:team member |
└ UID | object | UID |
└ silenceEnd | object | Chat mute. This field is not sent when there is no mute operation in the classroom. |
└ Persons | object | Teacher mutes individuals. |
└ Total | Int64 | The total amount of time an individual has been able to chat |
└ SilenceAll | object | Teacher mutes all |
└ Count | Int32 | How many times the whole class is muted in the chat |
└ Total | Int64 | How long the whole class is muted |
└ screenchangeEnd | object | Change of classroom mode, standard or large-screen |
└ UID | object | User ID |
└ WindowTotal | Int32 | Duration of use of standard classroom |
└ FullTotal | Int32 | Duration of use of large-screen classroom |
└ WindowCount | Int32 | Times of use of standard classroom |
└ FullCount | Int32 | Times of use of large-screen classroom |
└ Details | array | Info of operation details |
└ Type | Int32 | type of classroom mode |
└ Time | Int32 | point of time when the operation happened |
└ teachingcameraEnd | object | Secondary camera |
└ Total | Int32 | Duration of use |
└ Times | Int32 | Times of use |
└ Details | Int32 | Details |
└ Local | Int32 | Duration of use of local camera |
└ Net | Int32 | Duration of use of webcam |
└ Video | Int32 | Duration of use of local video |
└ videowallEnd | object | Video Gallery |
└ Total | Int32 | Duration of use |
└ Times | Int32 | Times of use |
Instance
{
"ClassID": 25672,
"CourseID" : 116576,
"Cmd" : "End",
"CloseTime" : 1499718000,
"StartTime" : 1499653800,
"SID" : 1000082,
"Data" : {
"edbEnd" : {
"Files" : [
{
"FileKey" : "49450405-9650126",
"ActionTime" : 1577188373,
"FileSource" : 1,
"FileName" : "小二 奥数 第5讲 火柴游戏.edb"
},
{
"FileKey" : "49179155-9650126",
"ActionTime" : 1577188447,
"FileSource" : 1,
"FileName" : "小二 奥数 第4讲 锯木头.edb"
},
{
"FileKey" : "49450405-9650126",
"ActionTime" : 1577188619,
"FileSource" : 1,
"FileName" : "小二 奥数 第5讲 火柴游戏.edb"
}
]
},
"stageEnd" : {
"1002646" : {
"DownCount" : 0,
"UpTotal" : 965,
"UpCount" : 1,
"DownTotal" : 0
},
"1002647" : {
"DownCount" : 1,
"DownTotal" : 7,
"UpCount" : 2,
"UpTotal" : 957
},
"1002648" : {
"DownCount" : 3,
"DownTotal" : 11,
"UpCount" : 4,
"UpTotal" : 816
}
},
"handsupEnd" : {
"1002647" : {
"CTime" : 3,
"Total" : 1
}
},
"awardEnd" : {
"1002647" : {
"Total" : 2
},
"1002648" : {
"Total" : 2
}
},
"timerEnd" : {
"Count" : 3,
"Timing_Count" : 0
},
"muteEnd" : {
"Persons" : {
"1002646" : {
"Total" : 965
},
"1002647" : {
"Total" : 957
},
"1002648" : {
"Total" : 34
}
},
"MuteAll" : {
}
},
"groupEnd" : {
"Grouping" : {
"Count" : 2,
"Items" : [
{
"Duration" : 6,
"Groups" : [
{
"1" : [
{
"Role" : 1,
"UID" : 1013566
},
{
"Role" : 0,
"UID" : 1013567
}
]
},
{
"2" : [
{
"Role" : 0,
"UID" : 1013564
},
{
"Role" : 1,
"UID" : 1013565
}
]
}
],
"StartTime" : 1594868086
},
{
"Duration" : 4,
"Groups" : [
{
"1" : [
{
"Role" : 1,
"UID" : 1013564
},
{
"Role" : 0,
"UID" : 1013567
}
]
},
{
"2" : [
{
"Role" : 1,
"UID" : 1013566
}
]
},
{
"3" : [
{
"Role" : 1,
"UID" : 1013565
}
]
}
],
"StartTime" : 1594868093
}
],
"Duration" : 10
}
},
"inoutEnd" : {
"1002646" : {
"Total" : 965,
"Details" : [
{
"Type" : "In",
"Device": 0,
"Time" : 1499673085
},
{
"Type" : "Out",
"Time" : 1499674050
}
],
"Identity": 1,
"Deputies" : [
{
"clientID":1,
"Total":100,
"Details":[
{
"Device":0,
"Type":"In",
"Time":1689145418
},
{
"Type" :"Out",
"Time":1689145544
}
]
},
{
"clientID":2,
"Total":100,
"Details":[
{
"Device":1,
"Type":"In",
"Time":1689145418
},
{
"Type" :"Out",
"Time":1689145544
}
]
}
]
},
"1002647" : {
"Total" : 964,
"Details" : [
{
"Type" : "In",
"Device": 0,
"Time" : 1499673094
},
{
"Type" : "Out",
"Time" : 1499674058
}
],
"Identity": 3
},
"1002648" : {
"Total" : 827,
"Details" : [
{
"Type" : "In",
"Device": 0,
"Time" : 1499673196
},
{
"Type" : "Out",
"Time" : 1499674023
}
],
"Identity": 1
}
},
"smallboardEnd" : {
"Count" : 1,
"Total" : 309,
"Period" : [
309
],
"DCount" : 4
},
"randomselEnd" : {
"Count":3
},
"mdscreenEnd" : {
"Count" : 1,
"Total" : 309
},
"textboardEnd" : {
"Count" : 1,
"Total" : 218,
"Period" : [
218
],
"DCount" : 1
},
"authorizeEnd" : {
"1002646" : {
"Count" : 0,
"Total" : 0
},
"1002647" : {
"Count" : 2,
"Total" : 38
},
"1002648" : {
"Count" : 0,
"Total" : 0
}
},
"diceEnd" : {
"Count" : 5
},
"answerEnd" : {
"Count" : 2,
"AverageAccuracy" : 0.5,
"Answers" : [
{
"1002647" : {
"SelectedItem" : "B",
"LastCommitTime" : 1499673922,
"RecvQuestionTime" : 1499673916
},
"Participants" : [
{
"Identity" : 1,
"Uid" : 1002647,
"ShowName" : "236...0002"
},
{
"Identity" : 1,
"Uid" : 1002648,
"ShowName" : "236...0003"
}
],
"CorrectItems" : "A",
"1002648" : {
"SelectedItem" : "A",
"LastCommitTime" : 1499673920,
"RecvQuestionTime" : 1499673915
},
"Accuracy" : 0.5
},
{
"1002647" : {
"SelectedItem" : "BCE",
"LastCommitTime" : 1499673972,
"RecvQuestionTime" : 1499673968
},
"Participants" : [
{
"Identity" : 1,
"Uid" : 1002647,
"ShowName" : "236...0002"
},
{
"Identity" : 1,
"Uid" : 1002648,
"ShowName" : "236...0003"
}
],
"CorrectItems" : "BCE",
"1002648" : {
"SelectedItem" : "ABC",
"LastCommitTime" : 1499673978,
"RecvQuestionTime" : 1499673967
},
"Accuracy" : 0.5
}
]
},
"screenshareEnd" : {
"Count" : 1,
"Total" : 31,
"Period" : [
31
]
},
"responderEnd" : {
"Count" : 2,
"Persons" : {
"1002647" : {
"Count" : 2,
"SCount" : 1
},
"1002648" : {
"Count" : 2,
"SCount" : 1
}
}
},
"sharewidgetEnd" : {
"Files" : [
{
"EndTime" : 1502178862,
"StartTime" : 1502178812,
"FileName" : "animal.wmv"
}
],
"Count" : 1,
"Total" : 50
},
"kickoutEnd" : {
"1002648" : [
{
"Duration" : 300,
"Time" : 1499674023
}
]
},
"equipmentsEnd": {
"100092": {
"Microphone": {
"Total": 381
},
"Camera": {
"Total": 25
}
}
},
"classsetEnd" : {
"Seat" : {
"Group0" : {
"Count" : {
"Hidden" : 4,
"Display" : 4
},
"Total" : {
"Hidden" : 918,
"Display" : 1569
},
"Details" : [
{
"Type" : 0,
"Time" : 1605602050
},
{
"Type" : 1,
"Time" : 1605602567
},
{
"Type" : 0,
"Time" : 1605602864
},
{
"Type" : 1,
"Time" : 1605603120
},
{
"Type" : 0,
"Time" : 1605603397
},
{
"Type" : 1,
"Time" : 1605603728
},
{
"Type" : 0,
"Time" : 1605603873
},
{
"Type" : 1,
"Time" : 1605604338
}
]
}
}
},
"silenceEnd" : {
"Persons" : {
"1002646" : {
"Total" : 965
},
"1002647" : {
"Total" : 957
}
},
"SilenceAll" : {
"Count":0,
"Total":0
}
},
"screenchangeEnd" : {
"102322" : {
"WindowTotal" : 23,
"Details" : [
{
"Type" : 0,
"Time" : 1610350682
},
{
"Type" : 1,
"Time" : 1610350705
},
{
"Type" : 1,
"Time" : 1610350706
}
],
"FullTotal" : 724,
"WindowCount" : 1,
"FullCount" : 2
},
"102020" : {
"WindowTotal" : 697,
"Details" : [
{
"Type" : 1,
"Time" : 1610350626
},
{
"Type" : 0,
"Time" : 1610350731
},
{
"Type" : 0,
"Time" : 1610350733
}
],
"FullTotal" : 105,
"WindowCount" : 2,
"FullCount" : 1
}
},
"teachingcameraEnd" : {
"Total" : 9,
"Details" : {
"Video" : 0,
"Net" : 2,
"Local" : 7
},
"Times" : 2
},
"videowallEnd" : {
"Total" : 4,
"Times" : 1
}
}
}
2.Teacher/Student Appraise after the Lesson
When students or teachers leave the classroom,they can appraise the lesson.
Each appraise is pushed separately. The teacher's evaluation of all students is in one data. Each student's evaluation of the teacher is one data.
If users come in and out of the classroom many times and evaluate for multiple times, such messages will be pushed multiple times. The latest evaluation will be pushed.
Key | Type | meaning |
---|---|---|
Cmd | String | Type is string,'Rating' |
TUID | Int32 | Teacher UID |
└ Comments | Object | Appraise content |
└ UID | Object | Student UID |
└ Account | String | Student account |
└ studentEmail | String | The student's email address |
└ T2S or S2T | Object | Teacher appraise the students is T2S,students appraise the teacher is S2T. |
└ Comment | String | Appraise content |
└ Score | Int32 | scoring |
Instance
Teacher appraise the students
{
"ActionTime" : 1513150417,
"ClassID" : 4136927,
"CourseID" : 1232019,
"Cmd" : "Rating",
"Comments" : {
"1044042" : {
"T2S" : {
"Comment" : "Good student!",
"Score" : 5
},
"Account" : "23605370012"
},
"1044040" : {
"T2S" : {
"Comment" : "",
"Score" : 3
},
"Account" : "23605370011"
}
},
"TUID" : 1024920,
"SID" : 1024920
}
students appraise the teacher
{
"ActionTime" : 1513150527,
"ClassID" : 4136927,
"CourseID" : 1232019,
"Cmd" : "Rating",
"Comments" : {
"1044040" : {
"Account" : "23605370011",
"S2T" : {
"Comment" : "Good teacher!",
"Score" : 4
}
}
},
"TUID" : 1024920,
"SID" : 1024920
}
3.Recording class file generated message
The recording of the class may be segmented into multiple files, and the record files will be generated with the following json format(The instance data is at the end of the text)
Key | Type | Instruction |
---|---|---|
Cmd | String | Type is a string,'Record' |
VUrl | String | The link address of the video file |
VST | Int64 | Video start time |
VET | Int64 | Video end time |
Duration | Int64 | The video time |
FileId | String | file Id |
Size | Int64 | file size |
Instance
{
"ClassID": 51345,
"ActionTime": 1562838399,
"CourseID": 18041431,
"SID": 257,
"TimeStamp": 1562839007,
"VET": 1501747090,
"VST": 1501746988,
"Cmd": "Record",
"VUrl": "http: //1252412222.vod2.myqcloud.com/e0d4af56vodgzp1252412222/6a0543209031868223084052851/f0.mp4",
"Duration": 12345,
"FileId": '123',
"Size": 100
}
4. Recording class file uploaded message
Client can upload recording file for a class in eeo.cn . if the file's uploaded sucessfully , the msg will be send
Key | Type | Instruction |
---|---|---|
Cmd | String | string of 'Upload' |
VUrl | String | address of the file |
Duration | Int64 | duration of the file |
FileId | String | file id |
Size | Int64 | file size |
Instance
{
"ClassID": 51345,
"ActionTime": 1562838399,
"CourseID": 18041431,
"SID": 257,
"TimeStamp": 1562839007,
"Cmd": "Upload",
"VUrl": "http: //1252412222.vod2.myqcloud.com/e0d4af56vodgzp1252412222/6a059031868223084052851/f0.mp4",
"Duration": 12345,
"FileId": '123',
"Size": 100
}
5. EDU answering msg
there's a edu course ware in classin, this msg send out when teacher finished a edu file.
Key | Type | Instruction | |
---|---|---|---|
Cmd | String | 'EduDt' | |
Data | object | content | |
└ type | string | QRExam or clientappExam | |
└ startTime | int | start time, by ms | |
└ endTime | int | end time by ms | |
└ questionList | array | questionlist | |
└ index | int | index of the question | |
└ rightAnswer | string | correct answer | |
└ studentAnswers | array | answer of the students | |
└ nickname | string | nickname of the student | |
└ answer | string | answer of the student |
Instance
{
"SID": 1000082,
"CID": 380592,
"Data": {
"type": "QRExam",
"startTime": 1573097646000,
"endTime": 1573097654009,
"questionList": [{
"index": 0,
"rightAnswer": "A,B",
"studentAnswers": [
{
nickname:'s1',
answer:'A,C'
},{
nickname:'s2',
answer:'A,D'
}
]
}, {
"index": 1,
"rightAnswer": "",
"studentAnswers": []
}, {
"index": 2,
"rightAnswer": "",
"studentAnswers": []
}]
},
"Cmd": "EduDt"
}
6. Data of viewing lesson playback on the ClassIn webpage
Students can watch the lesson playback on the ClassIn webpage. The data is sent when the user closes the replay webpage
Please notice that in those cases the system will send multiple data with same InTime and different Looktime:
the network is poor/when user refresh the page/when the device is under the sleep mode
When there's such data, please use(cmd,classid,telephone,intime) as unique key and only store the record with max Looktime.
Key | Type | Instruction | |
---|---|---|---|
Cmd | String | 'ReplayDataDetail' | |
ClassID | int | lesson ID | |
Data | object | ||
└ Telephone | String | The mobile phone number or email address of the user, subject to the actual login account. If the user is not login , the data is a string starts with'yk_' | |
└ Nickname | String | nick name of the user | |
└ Intime | int | when user enter the live page,Unix timestamp | |
└ LookTime | int | Duration of viewing the page. seconds | |
└ IP | String | IP address of user | |
└ ClientType | int | the device that used: 1-PC brower,2-mobile brower,3-small program of webchat |
Example
{
"SID": 100088,
"ClassID": 10086,
"Cmd": "ReplayDataDetail",
"Data": {
"Telephone": "15201114553",
"Nickname": "husky2021",
"Intime": 1625108250,
"LookTime": 60,
"Ip": "127.0.0.1",
"ClientType": 1
}
}
7. Details of Viewing Playback in the ClassIn Client!!Old!!
This will be replaced by a new data structure on August 20. For details, see ## 7. Details of Viewing Playback in the ClassIn Client!!NEW!!
Data of the user watching lesson replay in ClassIn client. Data is pushed in real time after the user turns off replay.
User's Effective Replay Time(TotalLookVaildTime): The effective time of a user watching a playback on the ClassIn client is calculated as follows:
- The time spent on repeated viewing and on dragging the progress bar manually is not counted. Only the actual playback time of the progress bar is considered as the viewing duration.
- When the user exits the playback and watches it again, the duration of the previously watched parts will not be included in the calculation. Only the duration of the unplayed parts will be considered.
- If there are multiple replays of a classroom, the total effective duration of all the videos will be calculated.
Key | Type | Instruction |
---|---|---|
Cmd | String | 'ClientPlaybackDataDetail' |
ClassID | int | lesson ID |
Data | object | Content |
└ UID | int | user UID |
└ TotalLookCount | int | The total number of times the classroom playback was viewed on the client side. |
└ TotalLookTime | int | Cumulative viewing duration of a user, in seconds. |
└ TotalLookVaildTime | int | User's effective replay Time. Unit in seconds. |
└ TopProcess | String | The user's highest viewing progress. Unit: % |
Example
{
"SID":100088,
"ClassID":10086,
"Cmd":"ClientPlaybackDataDetail",
"Data":{
"UID":"1341438",
"TotalLookCount":6,
"TotalLookTime":23,
"TotalLookVaildTime":23,
"TopProcess":"89%"
}
}
7. Details of Viewing Playback in the ClassIn Client!!NEW!!
Statistics for watching replays in the ClassIn client.
User's Effective Replay Time (TotalLookValidTime): The effective duration that the user watched the lesson playback in the ClassIn client. The calculation rules are as follows:
- The time spent on repeated viewing and on dragging the progress bar manually is not counted. Only the actual playback time of the progress bar is considered as the viewing duration.
- When the user exits the playback and watches it again, the duration of the previously watched parts will not be included in the calculation. Only the duration of the unplayed parts will be considered.
- If there are multiple replays of a classroom, the total effective duration of all the videos will be calculated.
Valid Viewing Count (ValidWatchCount): The number of valid times the user has watched the lesson playback. If the effective viewing duration reaches 75% of the total video length, it is considered one valid viewing.
Push Trigger (TriggerType): 1、When the user opens the lesson playback, 3、When the user closes the lesson playback, 4、When data times out (if the user has not watched for a long time or the client exits abnormally).
Key | Type | Instruction |
---|---|---|
Cmd | String | 'ClientPlaybackDataDetail' |
ClassID | Integer | Lesson ID |
Data | Object | Details of the playback behavior |
└ UID | Integer | User's UID |
└ TotalDuration | Integer | Total video duration |
└ ValidWatchCount | Integer | User's valid viewing count |
└ TotalLookValidTime | Integer | User's actual viewing coverage duration, in seconds |
└ LatestDetails | Object | |
└ TriggerType | Integer | Push Trigger |
Example
{
"ClassID":1,
"Data":{
"UID":1000082,
"TotalLookVaildTime":883,
"TotalDuration":1238,
"ValidWatchCount":2,
"LatestDetails":{
"TriggerType":1
}
}
}
8. IM Classroom Chat
When users chat in the IM classroom (including text and pictures), the data will be packaged at the end of the lesson, and then the corresponding download address will be pushed.
Key | Type | Instruction | |
---|---|---|---|
Cmd | String | 'ChatContent' | |
ClassID | int | lesson ID | |
SID | int | School ID | |
Url | String | Chat message download address | |
TimeStamp | Int32 | Chat message packaging time |
Example
{
"TimeStamp": 1649216600,
"Cmd": "ChatContent",
"CID": 163937,
"SID": 100038,
"Url": "pgdfile.eeo.cn/classchat/202204/8/71c4d8d054cc44b19d9a6c350047359d.zip"
}