我已经将锡罐课程添加到我的LMS中,并且我能够成功地上传和回放该课程,以便将我的语句写入初始应用领域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>发布于 2014-06-10 02:08:58
+1对Andrew的使用库的建议。你得到结果的原因是因为你缺少'X-Experience-API-Version‘头,库会相应地将它添加到所有请求中。缺少头部意味着LRS将请求解释为0.9版本的请求,除非您存储了使用该版本的语句,否则将不会返回任何语句(语句不会向下转换)。
我知道你知道图书馆在哪里,但对于后人来说:
http://rusticisoftware.github.io/TinCanJS/
还要注意的是,这只会返回LRS的第一页语句,然后你需要处理LRS返回的'more‘URL来递归地获取下一页。TinCanJS也提供了一种简单的方法来实现这一点。
发布于 2014-06-10 01:57:07
我推荐使用TinCanJS库。我稍后会更新一个链接,但你应该可以在谷歌上找到它和说明。
https://stackoverflow.com/questions/24124663
复制相似问题