伯索开放平台
首页API文档SDK文档伯索官网
首页API文档SDK文档伯索官网
  1. SDK帮助文档
  • 快速入门
    • SDK简介
      • SDK简介
    • SDK支持的业务场景
      • SDK支持的业务场景
    • 产品特色
      • 产品特色
  • 产品指南
    • 实时课堂功能介绍
      • 实时课堂功能介绍
    • 微课功能介绍
      • 微课功能介绍
    • 作业批改功能介绍
      • 作业批改功能介绍
    • 上传课件功能介绍
      • 上传课件功能介绍
    • SDK后台功能介绍
      • SDK后台功能介绍
  • 最佳实践
    • 最佳实践
  • 接入流程说明
    • SDK对接标准流程说明
      • SDK对接标准流程说明
    • 基础概念说明
      • 基础概念说明
  • SDK帮助文档
    • 直播SDK接入
      • WEB版本
        • WEB版本
      • iOS版本
        • IOS版本
      • Android版本
        • Android版本
    • 微课SDK接入
      • WEB版本
        • WEB版本
      • iOS版本
        • IOS版本
      • Android版本
        • Android版本
    • 批注SDK接入
      • Web版本
        • Web版本
      • iOS版本
        • IOS版本
      • Android版本
        • Android版本
    • 签名加密
      • 签名加密
    • 回调接口接入流程
      • 回调接口接入流程
    • 文档解析接入方式
      • 文档解析接入方式
    • 历史课堂接入方式
      • 历史课堂接入方式
    • 历史课堂转视频接入方式
      • 历史课堂转视频接入方式
    • 历史课堂/微课下载接口
      • 历史课堂/微课下载接口
  • Open API帮助文档
    • Open API 主要功能
    • Open API集成常用场景
    • 数据字典
    • 接入须知
      • 调用流程
      • 在线调试
      • 通用错误码
    • 用户信息管理
      • 添加用户
      • 修改密码
      • 删除用户
      • 更新用户
      • 用户精确查询
      • 查询多个用户
      • 用户访问Token
      • 验证用户Token有效期
    • 教材包管理
      • 查询机构教材包
      • 查询教材包内教材
      • 向学生分发教材包
    • 实时课堂管理
      • 创建实时课堂
      • 创建实时课堂(班)
      • 更新实时课堂
      • 更新实时课堂(班)
      • 删除实时课堂
      • 查询实时课堂列表
      • 更新实时课堂下听众用户
      • 获取实时课堂监控地址
      • 控制单个学员是否可以回看单次课
      • 获取单个课堂的回看地址
      • 删除单个历史课堂
      • 获取课堂考勤数据
      • 获取历史课堂信息
      • 获取历史课堂观看数据
      • 获取课堂互动信息
      • 获取课堂列表(新)
      • 获取实时课堂旁听链接
    • 班级管理
      • 创建班级
      • 更新班级
      • 删除班级
      • 查询班级列表
      • 向班级中添加学生
      • 从班级中移除学生
      • 更换学生所在班级
      • 老师列表中查询机构分校学科
      • 根据班级获取获取班级详情和人员信息
    • 学情数据
      • 获取学生课堂明细数据
      • 获取学生巩固明细数据
      • 获取学生测验明细数据
      • 获取学生辅导明细数据
      • 获取学生积分明细数据
    • 商城管理
      • 获取商品详情
      • 获取商品列表
      • 获取分校自定义商品栏目列表
      • 订单查询
      • 订单详情查询
    • 作业管理
      • 查询学生作业列表
      • 查询老师作业列表
    • 测验管理
      • 查询机构测评列表
      • 获取测评统计
      • 查询机构测验列表
      • 获取测验明细
  • 产品更新记录
    • Open API 更新日志
    • SDK 更新日志
  • 常见问题
    • PPT制作事项
    • 课件常见问题与解决方法
    • 网络相关问题
    • 声音相关问题
    • 网络测速
  • 推荐
    • 浏览器推荐
    • 常见软件推荐
    • 教育硬件推荐
  1. SDK帮助文档

回调接口接入流程

伯索云SDK的各个功能调用时间往往很长,比如一堂实时在线课,从创建到课堂结束往往十几分钟到数小时不等,课堂结束后的关键性的返回数据通过异步方式回调返回是最佳方案。
回调接口是一个URL地址,通过HTTP/HTTPS协议访问,强烈建议使用HTTPS以增强安全性。 在回调接口开始开发前就可以约定好接口的URL发给伯索对接人进行配置。
回调接口的返回结果请务必遵守以下约定:
正常返回
HTTP头的状态码为200
HTTP头的Content-Type值为"application/json;charset=utf-8"
HTTP消息体为json对象,标准格式为
{"code":0, "msg":""}
异常返回
HTTP头的状态码为200
HTTP头的Content-Type值为"application/json;charset=utf-8"
HTTP消息体为json对象,格式为:
{"code":404, "msg":"error reason"}
msg填入异常原因
2.
回调消息的返回结果如果不符合预期,比如HTTP头状态码为400,503等,将自动在24小时内以不断递增的时间间隔重试5次。 5次发送回调都不成功,回调将不再重试。
3.
伯索的回调数据使用Json格式,包装在Post Body中以Post方式发送, HTTP头的Content-Type值为"application/json;charset=utf-8"
回调基本数据格式
💡
安全签名信息:validBegin: 发送方发送请求时的Unix Epoch 时间戳,单位秒validTime: 取固定值1200,单位秒signature: 按照 签名加密 提供的方法返回的签名字符串
validBegin: 发送方发送请求时的Unix Epoch 时间戳,单位秒
validTime: 取固定值1200,单位秒
signature: 按照 签名加密 提供的方法返回的签名字符串
📌
忽略安全签名信息,直接处理业务字段,也可以跑通业务流程。但是由于回调接口是暴露在公网上,为了防止欺诈攻击,在此强烈建议第三方的回调接口,对signature字段的签名进行强制认证:凡是签名不正确,或者当前 Unix Epoch 时间已超出validBegin + validTime有效期,都认为非法,返回400。
课堂结束后回调数据格式
课堂主信息:

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"
        }
修改于 2023-11-15 08:25:04
上一页
签名加密
下一页
回调接口接入流程
Built with