我已经在我的LMS中添加了Tin Can课程,并且我已成功上传和播放课程,以便将我的陈述写入Initial Application Realm LRS。到目前为止一切都很好。
现在我希望能够从LRS中检索已写入的所有语句的列表,以便我可以遍历这些语句并检查已登录用户的课程完成情况。我的陈述正在写入以下终点:
https://cloud.scorm.com/tc/7QLMQA89WV/
我尝试使用.NET库和以下代码查询语句:
//Initialize the TinCan Remote LRS for retrieving completion statistics
LRS = new RemoteLRS("https://cloud.scorm.com/tc/7QLMQA89WV/", "<username>", "<pw>");
Version = TinCan.TCAPIVersion.V101;
//Create the TinCan statement to query completed activities for the logged in user
var query = new StatementsQuery();
query.agent = new TinCan.Agent();
query.agent.mbox = "mailto:jpmcfeely@hsl-data.com";
query.verbId = new Uri("http://adlnet.gov/expapi/verbs/completed");
query.activityId = new Uri("http://tincanapi.com/GolfExample_TCAPI");
然而,这会返回所有语句的列表,而不管已使用的动词或活动。可能在查询过滤器中存在错误,因为使用SCORM Cloud时我可以看到TCAPI查询字符串,在输入动词或活动的URI时,它会适当地过滤。
作为测试语句正确输出的一种方法我在我的视图中也有以下内容,不确定这是否是获取语句的人类可读版本的最佳方法,但我为每个语句都有此输出在我的名单中
<p>@statement.actor.name @statement.verb.display.ToJObject().GetValue("und") '@statement.target.ToJObject(Model.Version)["definition"]["name"]["en-US"]'</p>
答案 0 :(得分:3)
+1给安德鲁建议使用该库。您获得结果的原因是因为您错过了X-Experience-API-Version&#39;库适当地添加到所有请求的标头。缺少标头意味着LRS将请求解释为0.9版本请求,除非您使用该版本存储语句,否则将不返回任何语句(语句不会被转换)。
我知道你知道图书馆在哪里,但对于后代来说:
http://rusticisoftware.github.io/TinCanJS/
另请注意,这只会返回LRS&#39;声明的第一页,您需要处理“更多”声明。 LRS返回的URL以递归方式获取下一页。 TinCanJS也提供了一种简单的方法。
答案 1 :(得分:0)
我建议使用TinCanJS库。我稍后会使用链接进行更新,但您应该可以在Google上找到它并获得相关说明。