伯索开放平台
首页API文档SDK文档伯索官网
首页API文档SDK文档伯索官网
  1. Web版本
  • 快速入门
    • 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. Web版本

Web版本

一. 引用在线JS库资源
<script type='text/javascript' src='https://wwwr.plaso.cn/static/sdk/annotate/5.00/js/plasoAPI/annotateSDK.js'></script>
annotateSDK.js会在window上注入AnnotateSDK对象
二. 启动页面
new AnnotateSDK(config, apiList);
configconfig是Object类型,包含以下参数
参数名参数类型是否必填说明
urlstring是批注页面url,拼接方式请查阅 这里
multiOutputbool否是否返回多个结果(一张图片对应一个结果), 默认值为false
apiList定义了一些需要和批改页面交互的API,示例代码如下:
 // apiList API汇总

   var apiList = {
        // 用于批改页面获取待批改的图片,图片需要配置跨域访问
        getInitImageList: function() {
            return ['https://download.plaso.cn/static/sdk/websdkdemo/imgs/zuoye_demo1.jpeg',
            'https://download.plaso.cn/static/sdk/websdkdemo/imgs/zuoye_demo2.jpeg',
            'https://download.plaso.cn/static/sdk/websdkdemo/imgs/zuoye_demo3.jpg'];
        },

        // 发送作业所需的query,会在点击发送按钮的时候被批改页面调用
        getSendQuery: function() {
            /*
            * beginTime:时间戳(秒) 签名生效的开始时间
            * validTime:签名的有效时长,单位是秒
            * signature:签名
            */
            //生成签名示例
            var params = {
                appId: 'demo',
                exerciseId: zyId,
                beginTime: parseInt(Date.now() / 1000),
                validTime: 3600
            }

            var query = genQuery(params);
            var signature = sign(query);
            return `${query}&signature=${signature}`;
        },

        // 发送完成后,批改页面会调用此方法,让使用者可以保存作业的关键信息,使用者保存完成后需要返回true或者Promise.resolve()
        saveResult: function(result) {
            // result = {
            // recordId: 5d6492469e95d05722159626, //伯索生成的作业记录的id,在播放作业的时候用到,使用者可以配合exerciseId作一一对应来存放
            // accuracy: 0.5, // 正确率
            // grade: 0, // ['努力', '过关', '不错', '良好', '优秀'],返回的数字和数组下标对应
            // }

            // 注意!!!: 如果为多结果输出,则result格式为数组,数据元素格式同上,即 result=[{},{},{}]
            if (!(result instanceof Array)) {
                result = [result];
            }
            for (var i = 0; i < result.length; i++) {
                // 播放
                console.log("https://wwwr.plaso.cn/static/sdk/annotate/5.00/?" + this.getWeikeQuery(result[i].recordId))
            }

            return Promise.resolve();
        },

        // 点击批改页面‘录制微课’会调用此方法,获取录制微课的地址
        getWeikeUrl: function() {
            /**
             * appId:应用标识(必填)
             * meetingType:会议标识,mini代表制作微课(必填)
             * meetingId: 微课id,唯一标识该微课;使用ASSIIC字符,不得包含/,\,空格等(必填)
             * userType:speaker,填写此参数会进入多页模式,否则是单页模式(非必填)
             * userName:会议登录的用户名(必填)
             * autoClose:1,填写此参数会在点击完成时自动关闭录制页面(非必填)
             * beginTime:时间戳(秒) 签名生效的开始时间
             * validTime:签名的有效时长,单位是秒
             * signature:签名
            */

            var params = {
                appId: 'demo',
                meetingType: 'mini',
                meetingId: '1234',
                userType: 'speaker',
                userName: 'hello',
                autoClose: 1,
                beginTime: parseInt(Date.now() / 1000),
                validTime: 3600
            }
            var query = genQuery(params);
            var signature = sign(query);
            return `https://www.plaso.cn/liveclass/recorder/?${query}&signature=${signature}`;
        },

        // 点击批改页面‘引用收藏’会调用此方法,获取已收藏的微课列表
        getFavoriteList: function() {
            //单个微课格式
            // {
            //     myid, 必须,(使用录制微课sdk页面录制完成时生成的recordId)
            //     name, 必须
            //     url, 可选,封面
            //     duration, 必须, 时长
            //     size,可选,文件大小,单位B
            // }
            return [];
        },

        // 播放作业里的微课时会调用此方法
        getWeikeQuery: function(recordId) {
            /**
             * appType:player,表示调用微课播放器(必填)
             * appId:应用标识(必填)
             * recordId:伯索生成的微课ID(必填)
             * withoutC:true,true表示播放器不显示关闭按钮(非必填)
             * beginTime:时间戳(秒) 签名生效的开始时间
             * validTime:签名的有效时长,单位是秒
             * signature:签名
            */

            var params = {
                appType: 'annotateSDKPlayer',
                appId: 'demo',
                recordId: recordId,
                withoutC: true,
                beginTime: parseInt(Date.now() / 1000),
                validTime: 3600
            }
            var query = genQuery(params);
            var signature = sign(query);
            return `${query}&signature=${signature}`;
        }
    }
三.注一:拼接批注页面URL
url一定要使用https协议,前缀为: https://wwwr.plaso.cn/static/sdk/annotate/5.00/? 后跟参数,使用 & 符号拼接, 示例: https://wwwr.plaso.cn/static/sdk/annotate/5.00/?appType=annotateSDK&appId=plaso-sdk-demo-id&exerciseId=abcd1234
参数名参数类型是否必填说明
appTypestring是固定值 annotateSDK ,不能变更。
appIdstring是由伯索分配的开发者账号id。
exerciseIdstring是一份作业的唯一标识,由使用者生成。
四.注二:生成签名
apiList中的getSendQuery里需要的生成签名,请参考 签名加密 |
需要参与签名的业务参数有:
参数名说明
exerciseId客户自己生成的唯一作业id。
beginTime签名起效时间, Unix epoch格式,单位秒。
签名函数一定调用服务端服务, 进行基本鉴权, 一定不要将 appkey 明文暴露在js代码里。
五. Demo示例
请访问 Demo示例
修改于 2025-03-20 06:43:53
上一页
Web版本
下一页
iOS版本
Built with