回调接口接入流程
伯索云SDK的各个功能调用时间往往很长,比如一堂实时在线课,从创建到课堂结束往往十几分钟到数小时不等,课堂结束后的关键性的返回数据通过异步方式回调返回是最佳方案。
回调接口的返回结果请务必遵守以下约定:
正常返回
HTTP头的Content-Type值为"application/json;charset=utf-8"
{"code":0, "msg":""}
HTTP头的状态码为200
HTTP头的Content-Type值为"application/json;charset=utf-8"
HTTP消息体为json对象,格式为:
{"code":404, "msg":"error reason"}
2.
3.
💡
appId : 在申请接入时,伯索平台给予的appId
validBegin: 发送方发送请求时的Unix Epoch 时间戳,单位秒
validTime: 取固定值1200,单位秒
signature: 按照 签名加密 提供的方法返回的签名字符串
📌
课堂主信息:
meetingId: 客户自行生成的课堂/会议唯一ID;
meetingType: 会议类型;
appId: 机构id;
mediaType: 媒体类型;
recordId: 本段历史课堂id,一堂课可能因为各种原因中断,生成多段历史课堂;
duration: 本段课堂Record录制的实际时长;
userCount: 课堂总共人数;
listenerCount: 参与的听众数即学生人数;
cover: 返回课堂封面地址,以/file-plaso/开头,将/file-plaso/替换为https://file.plaso.cn/就是完整的封面下载路径
userCS: 所有用户在线总秒数(不包括主讲老师);
teacherCS: 老师助教在线总秒数;(主讲老师在线总秒数)
speakerShareTime: 桌面共享累计时长,单位秒;
listenerShareTime: 所有学生接收桌面共享的总时长,单位秒;
beginTime: 课堂开始的Unix Epoch时间戳,从第一个人进入课堂开始计时,单位毫秒;
endTime: 课堂结束的Unix Epoch时间戳(毫秒);
recordBegin: 开始录制的Unix Epoch时间戳(毫秒)
statistics: [ {课堂参与者1信息对象}, {课堂参与者2信息对象} , ..]
test: [题目1, 题目2, 题目3, ..]; //题目=[[答案],老师给予答题时长]
课堂参与者信息:
id: 课堂参与者id;
logCount: 课堂参与者登录次数;
testStar: 随堂测分数;
awardStar: 课堂老师主动奖励的分数;
answers: [[[ 选项1,选项2 ], 答题时长(秒) ], [[ 选项1 ], 答题时长(秒) ], ...] ;
answerDuration: 答题总时长(秒);
handUpCount: 举手次数;
joinClassTime: 第一次进入课堂的时间(毫秒);
leaveClassTime: 主动离开课堂的时间(毫秒);
roleType: 角色;
redPacketStar: 红包雨积分;
name: 用户唯一名,即进入课堂时传入的loginname;
{
"validBegin": 1596876202,
"validTime": 1200,
"signature": "1AC85CB317DADA4864FFF213AE86BB086AE5A13B",
"meetingId":
"sfas-da55-ddf-fdfdf-dfdfdfdf",
"meetingType":
"public",
"appId":
"some_id",
"callback":
"https://dear.client.com/callback",
"mediaType":
"video",
"duration":
7841,
"userCount":
27,
"listenerCount":
26,
"speakerCount":
1,
"userCS":
1212,
"teacherCS":
7849,
"speakerShareTime":
758,
"listenerShareTime":
18069,
"beginTime":
1594511352501,
"endTime":
1594519202002,
"recordBegin":
1594511360631,
"dirname":
"/some/dir",
"recordAvator":
"sfdf-ddfd-fffg-223-df34",
"videoStream":
3,
"richMedia":
true,
"cover":
null,
"statistics":
[{
"id": "sfdf-ddfd-fffg-223-df34",
"crowd": 1,
"logCount": 2,
"nHeatBeat": 0,
"autoOut": 0,
"socketClose": 0,
"seq": 1,
"prefix": 100000,
"testStar": 0,
"awardStar": 0,
"answerDuration": 0,
"uniqueId": "sfdf-ddfd-fffg-223-df34",
"handUpCount": 0,
"joinClassTime": 1594511352502,
"leaveClassTime": 1594519202000,
"roleType": "speaker",
"name": "张三",
"isSpeaker": true,
"online": false,
"addr": "::ffff:121.28.85.34:53699",
"resource": "Chrome 83.0.4103.106(pc)",
"mediaConnectionDelay": 601,
"agoraUid": 12,
"idInMedia": 12,
"shareStreamTimer": {"__total": 758783, "__paused": true, "__begin": 1594514989684},
"onstageDuration": 7849,
"onlineDuration": 7849,
"faceDuration": 7340
}, {
"id": "dfddf-7445-41-dfdf-agdgdgd",
"crowd": 1,
"logCount": 6,
"nHeatBeat": 0,
"autoOut": 0,
"socketClose": 4,
"seq": 2,
"prefix": 200000,
"testStar": 0,
"awardStar": 1,
"answers": [],
"answerDuration": 0,
"uniqueId": "dfddf-7445-41-dfdf-agdgdgd",
"handUpCount": 0,
"joinClassTime": 1594511718775,
"leaveClassTime": 1594519202002,
"roleType": "listener",
"name": "李四",
"online": false,
"addr": "::ffff:183.198.133.159:3609",
"resource": "OPPO 5.1(android)",
"mediaConnectionDelay": 190,
"agoraUid": 13,
"idInMedia": 13,
"shareStreamTimer": {"__total": 758783, "__paused": true, "__begin": 1594514989684},
"onstageDuration": 282,
"onlineDuration": 7414,
"faceDuration": 281
}],
"refFiles":
[],
"attachment":
1,
"recordId":
"5fsd4dd8db81a25a44200643",
"saved":
true,
"topic":
"数学精讲",
"hasMedia":
true,
"fileSize":
304793833,
"fileLocation":
"/some/location",
"_id":
"sfsffwefwfwsfsdfsdf"
}

修改于 2025-04-12 02:45:32