虚拟仿真实训教学管理及资源共享平台虚拟实训开发对接文档

本文介绍虚拟仿真实训教学管理及资源共享平台(以下简称虚拟实训平台)的虚拟实训程序开发接口包括用户身份信息获取及学习数据回传的对接说明。

虚拟仿真实训练习api

处理流程

第一步、获取token

由平台跳转至虚拟仿真实训程序的页面中,在地址栏的url参数里面有由当前登录平台的用户的身份信息加密生成的token,在url的参数中,参数名token,例如:

https://xxx.com/index.html?token=sFXXmqOYUnJqZ21mlG1mY5qYZVrZy8dTnIaUmlZlg8ael4VrWGRgWmVTrKSFb1SN15tscMa+2GXHlJG9qW+RmGdVj1OclJOdop6eWJ1XmqXW1KxywJG/YNrS19WXZ8XPlpWRlpqoYmhrZmWZ0qKOYLLZm6TNxb9gyMXExp2myL9kZJpnamNlcXBna2aRn6KYhOE=

https://xxx.com/index.html表示为虚拟实训上传到平台上供用户访问的网络地址,这条例子中的地址并非真实可用的网址,各位虚拟实训开发者自行获取地址栏中的token参数.

获取url参数方法

JavaScript:

//封装
function GetRequest() { 
	var url = location.search; 
	var theRequest = new Object(); 
	if (url.indexOf('?') != -1) { 
		var str = url.substr(1); 
		strs = str.split('&'); 
		for(var i = 0; i < strs.length; i ++) { 
			theRequest[strs[i].split('=')[0]]=unescape(strs[i].split('=')[1]); 
		}
	}
	return theRequest; 
}
//调用
var getcode=GetRequest()
getcode.token;//获取token

获取到的token如下:

sFXXmqOYUnJqZ21mlG1mY5qYZVrZy8dTnIaUmlZlg8ael4VrWGRgWmVTrKSFb1SN15tscMa+2GXHlJG9qW+RmGdVj1OclJOdop6eWJ1XmqXW1KxywJG/YNrS19WXZ8XPlpWRlpqoYmhrZmWZ0qKOYLLZm6TNxb9gyMXExp2myL9kZJpnamNlcXBna2aRn6KYhOE=

每次访问虚拟实训的token都不一样,token只适用于本次虚拟实训操作,token可以用于多次的用户信息获取,但是只能传输一次学习数据,传过一次学习数据后,token就失效了。

第二步、记录实训操作开始时间戳

在程序启动的时候记录一个秒级时间戳,用于接下来的学习数据回传,时间戳为10位数字。以下是虚拟实训程序开发的主流语言获取秒级时间戳的方法。

C#:

(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000

JavaScript:

Math.round(new Date() / 1000)

Java:

// pure java
    (int) (System.currentTimeMillis() / 1000)
// joda
    (int) (DateTime.now().getMillis() / 1000)

Python:

import time
    time.time()

第三步、获取用户信息

api详情

api路径请求方式地址例子
Home/Virtual/getinfoPOSThttps://xxx.com/Home/Virtual/getinfo

字段说明

字段名类型必填参数描述例子
tokenstring第一步获取到的由用户身份信息加密得出的tokensFXXmqOYUnJqZ21mlG1mY5qYZVrZy8dTnIaUmlZlg8ael4VrWGR
gWmVTrKSFb1SN15tscMa+2GXHlJG9qW+RmGdVj1OclJOdop6e
WJ1XmqXW1KxywJG/YNrS19WXZ8XPlpWRlpqoYmhrZmWZ0qKO
YLLZm6TNxb9gyMXExp2myL9kZJpnamNlcXBna2aRn6KYhOE=

返回json

{
	"state": 1, //调用状态: 1 成功 其他 不成功
	"course": { //虚拟实训课程信息
		"id": "10", //虚拟实训课程guid
		"name": "心肺复苏术培训课",//虚拟实训名称
		"img": "https://xxx.com/xxx.png",//竖版封面图
		"img1": "https://xxx.com/xxx.png"//横版封面图
	},
	"user": {//用户信息
		"id": "39",//用户guid
		"name": "王一恒",//用户名称
		"username": "tiedan",//用户账号
		"faceimg": "https://xxx.com/Public/xxx.jpg"//用户照片
	},
	"msg": "成功" //调用结果说明
}

第四步、用户学习数据回传接口

api详情

api路径请求方式地址例子
Home/Virtual/score_uploadPOSThttps://xxx.com/Home/Virtual/score_upload

字段说明

字段名类型必填参数描述例子
tokenstring第一步获取到的由用户身份信息加密得出的tokensFXXmqOYUnJqZ21mlG1mY5qYZVrZy8dTnIaUmlZlg8ael4VrWGR
gWmVTrKSFb1SN15tscMa+2GXHlJG9qW+RmGdVj1OclJOdop6e
WJ1XmqXW1KxywJG/YNrS19WXZ8XPlpWRlpqoYmhrZmWZ0qKO
YLLZm6TNxb9gyMXExp2myL9kZJpnamNlcXBna2aRn6KYhOE=
starttimestring虚拟实训操作开始的时间戳,即第二步记录时间戳1644903304
endtimestring虚拟实训操作结束的时间戳,即调用此接口时候的时间戳1644913071
scorestring本次虚拟实训得分,0~100分数,可以小数点后两位88
scoredatastring学习数据,包含用户在本次虚拟实训中每一步的操作详细数据及根据用户本次操作生成出的个人综合能力雷达图,注意这各参数的值是一个json字符串例子:{"step": [{"seq": 1, "score": 10, "title": "步骤名称1", "endtime": 1643174853, "remarks": "步骤操作记录说明1", "duration": 300, "maxscore": 20, "starttime": 1643174553, "evaluation": "步骤操作评价1", "expecttime": 300, "scoringmodel": "步骤考察点1"}, {"seq": 2, "score": 15, "title": "步骤名称2", "endtime": 1643174853, "remarks": "步骤操作记录说明2", "duration": 300, "maxscore": 20, "starttime": 1643174553, "evaluation": "步骤操作评价2", "expecttime": 450, "scoringmodel": "步骤考察点2"}], "radar": [{"name": "反应力", "score": 3, "maxscore": 5}, {"name": "准确率", "score": 5, "maxscore": 5}, {"name": "熟练度", "score": 75, "maxscore": 100}, {"name": "操作力", "score": 7, "maxscore": 10}, {"name": "速度", "score": 3, "maxscore": 5}], "endtime": 1643174853, "duration": 300, "scoretype": "default", "starttime": 1643174553, "expecttime": 300} 结构详见下面
scoredata参数结构
字段名类型必填参数描述例子
starttimeint虚拟实训操作开始的时间戳,即第二步记录时间戳1644903304
endtimeint虚拟实训操作结束的时间戳,即调用此接口时候的时间戳1644913071
durationint虚拟实训操作耗时,单位秒300
expecttimeint虚拟实训合理耗时,单位秒300
scoretypestring赋分模板,写default就行default
step[ ]实验操作步骤数据例子:[{"seq": 1, "score": 10, "title": "步骤名称1", "endtime": 1643174853, "remarks": "步骤操作记录说明1", "duration": 300, "maxscore": 20, "starttime": 1643174553, "evaluation": "步骤操作评价1", "expecttime": 300, "scoringmodel": "步骤考察点1"}, {"seq": 2, "score": 15, "title": "步骤名称2", "endtime": 1643174853, "remarks": "步骤操作记录说明2", "duration": 300, "maxscore": 20, "starttime": 1643174553, "evaluation": "步骤操作评价2", "expecttime": 450, "scoringmodel": "步骤考察点2"}] 结构详见下面
radar[ ]雷达图的各维度数据例子:[{"name": "反应力", "score": 3, "maxscore": 5}, {"name": "准确率", "score": 5, "maxscore": 5}, {"name": "熟练度", "score": 75, "maxscore": 100}, {"name": "操作力", "score": 7, "maxscore": 10}, {"name": "速度", "score": 3, "maxscore": 5}] 结构详见下面
scoredata.step[]参数结构
字段名类型必填参数描述例子
seqint步骤序号从1开始1
maxscoreint步骤满分0~100 可以小数点后两位(注,所以步骤满分之和应不大于100)10
scoreint步骤得分0~100 可以小数点后两位(注,所以步骤分数之和应和scoredata中的score相等,步骤分数不得大于当前步骤的maxscore)10
titlestring步骤标题步骤名称1
starttimeint当前虚拟步骤开始的时间戳(不得早于上一个步骤的结束时间)1644903304
endtimeint当前虚拟步骤结束的时间戳 (不得晚于下一个步骤的开始时间)1644913071
durationint虚拟实训操作耗时,单位秒300
expecttimeint虚拟实训合理耗时,单位秒300
scoringmodelstring步骤操作考察点文字说明这一步骤考察用户在操作基础操作台时候的操作顺序是否正确
remarksstring操作记录,按照每一个虚拟实训程序的情况自行制定自动生成记录学生(王一恒)操作了基础控制台先点击了蓝色按钮再点击了红色按钮
evaluationstring操作评价,按照每一个虚拟实训程序的情况自行制定自动生成评价学生(王一恒)在这一步先操作了蓝色按钮,正确应该是先操作黄色按钮,扣2分,所以这部分只能得到8分
scoredata.radar[]参数结构
字段名类型必填参数描述例子
namestring雷达属性项名称反应力
scoreint本次操作分数(不得大于满分)3
maxscoreint满分5

返回json

{
	"state": 1,//状态 1 成功 其他 失败
	"msg": "成绩上传完成" //上传结果说明
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值