问题标签 [tin-can-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1456 浏览

scorm2004 - 学习 Locker 和 SCORM-to-xAPI-Wrapper

我安装了两个版本的 Learning Locker。在一个版本中收到了声明,但是我无法查看我以前的任何声明,因为 LL 似乎被卡住了

在此处输入图像描述

当我使用我的新版本 LL 时,没有收到任何语句,但是我确实收到了很多错误。

xapiwrapper.min.js:2 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/. xapiwrapper.min.js:2 GET http://52.16.190.132/data/xAPI/activities/profile?activityId=http%3A%2F%2F1…fileId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Factivity-profile 404 (Not Found) xapiwrapper.min.js:2 XHR finished loading: GET "http://52.16.190.132/data/xAPI/activities/profile?activityId=http%3A%2F%2F1…fileId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Factivity-profile". xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/activities/profile?activityId=http%3A%2F%2F1…fileId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Factivity-profile". xapiwrapper.min.js:2 GET http://52.16.190.132/data/xAPI/activities/state?activityId=http%3A%2F%2F10.…D&stateId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Fattempt-state 400 (Bad Request) xapiwrapper.min.js:2 XHR finished loading: GET "http://52.16.190.132/data/xAPI/activities/state?activityId=http%3A%2F%2F10.…D&stateId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Fattempt-state". xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":"homePageis not a valid irl in account. ,An账户must have aand ahomePage.,代理is not a valid actorIdentifier in params. ","trace":"#0 \/var\/www\/learninglocker\/app\/controllers\/xapi\/BaseController.php(114): Controllers\\xAPI\\BaseController->validateValue('agent', Array, 'agent')\n#1 \/var\/www\/learninglocker\/app\/controllers\/xapi\/DocumentController.php(269): Controllers\\xAPI\\BaseController->requiredValue('agent', '{\"account\":{\"ho...', 'agent')\n#2 \/var\/www\/learninglocker\/app\/controllers\/xapi\/DocumentController.php(30): Controllers\\xAPI\\DocumentController->checkParams(Array, Array, Array)\n#3 \/var\/www\/learninglocker\/app\/controllers\/xapi\/DocumentController.php(68): Controllers\\xAPI\\DocumentController->getShowData()\n#4 \/var\/www\/learninglocker\/app\/controllers\/xapi\/BaseController.php(53): Controllers\\xAPI\\DocumentController->show()\n#5 \/var\/www\/learninglocker\/app\/controllers\/xapi\/BaseController.php(36): Controllers\\xAPI\\BaseController->get()\n#6 [internal function]: Controllers\\xAPI\\BaseController->selectMethod()\n#7 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Controller.php(231): call_user_func_array(Array, Array)\n#8 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerDispatcher.php(93): Illuminate\\Routing\\Controller->callAction('selectMethod', Array)\n#9 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerDispatcher.php(62): Illuminate\\Routing\\ControllerDispatcher->call(Object(Controllers\\xAPI\\StateController), Object(Illuminate\\Routing\\Route), 'selectMethod')\n#10 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(962): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request), 'Controllers\\\\xAP...', 'selectMethod')\n#11 [internal function]: Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()\n#12 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Route.php(109): call_user_func_array(Object(Closure), Array)\n#13 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(1028): Illuminate\\Routing\\Route->run(Object(Illuminate\\Http\\Request))\n#14 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(996): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))\n#15 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(776): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))\n#16 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(746): Illuminate\\Foundation\\Application->dispatch(Object(Illuminate\\Http\\Request))\n#17 \/var\/www\/learninglocker\/vendor\/asm89\/stack-cors\/src\/Asm89\/Stack\/Cors.php(51): Illuminate\\Foundation\\Application->handle(Object(Illuminate\\Http\\Request), 1, true)\n#18 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Session\/Middleware.php(72): Asm89\\Stack\\Cors->handle(Object(Illuminate\\Http\\Request), 1, true)\n#19 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Cookie\/Queue.php(47): Illuminate\\Session\\Middleware->handle(Object(Illuminate\\Http\\Request), 1, true)\n#20 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Cookie\/Guard.php(51): Illuminate\\Cookie\\Queue->handle(Object(Illuminate\\Http\\Request), 1, true)\n#21 \/var\/www\/learninglocker\/vendor\/stack\/builder\/src\/Stack\/StackedHttpKernel.php(23): Illuminate\\Cookie\\Guard->handle(Object(Illuminate\\Http\\Request), 1, true)\n#22 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(642): Stack\\StackedHttpKernel->handle(Object(Illuminate\\Http\\Request))\n#23 \/var\/www\/learninglocker\/public\/index.php(49): Illuminate\\Foundation\\Application->run()\n#24 {main}"} )http://52.16.190.132/data/xAPI/activities/state?activityId=http%3A%2F%2F10.…D&stateId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Fattempt-state xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/activities/state?activityId=http%3A%2F%2F10.…D&stateId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Fattempt-state 400 (Bad Request) xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/activities/state?activityId=http%3A%2F%2F10.…D&stateId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Fattempt-state". xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":"homePageis not a valid irl in account. ,An账户must have aand ahomePage.,代理is not a valid actorIdentifier in params. ","trace":"#0 \/var\/www\/learninglocker\/app\/controllers\/xapi\/BaseController.php(114): Controllers\\xAPI\\BaseController->validateValue('agent', Array, 'agent')\n#1 \/var\/www\/learninglocker\/app\/controllers\/xapi\/DocumentController.php(269): Controllers\\xAPI\\BaseController->requiredValue('agent', '{\"account\":{\"ho...', 'agent')\n#2 \/var\/www\/learninglocker\/app\/controllers\/xapi\/DocumentController.php(30): Controllers\\xAPI\\DocumentController->checkParams(Array, Array, Array)\n#3 \/var\/www\/learninglocker\/app\/controllers\/xapi\/DocumentController.php(80): Controllers\\xAPI\\DocumentController->getShowData()\n#4 \/var\/www\/learninglocker\/app\/controllers\/xapi\/BaseController.php(38): Controllers\\xAPI\\DocumentController->store()\n#5 [internal function]: Controllers\\xAPI\\BaseController->selectMethod()\n#6 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Controller.php(231): call_user_func_array(Array, Array)\n#7 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerDispatcher.php(93): Illuminate\\Routing\\Controller->callAction('selectMethod', Array)\n#8 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/ControllerDispatcher.php(62): Illuminate\\Routing\\ControllerDispatcher->call(Object(Controllers\\xAPI\\StateController), Object(Illuminate\\Routing\\Route), 'selectMethod')\n#9 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(962): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request), 'Controllers\\\\xAP...', 'selectMethod')\n#10 [internal function]: Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()\n#11 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Route.php(109): call_user_func_array(Object(Closure), Array)\n#12 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(1028): Illuminate\\Routing\\Route->run(Object(Illuminate\\Http\\Request))\n#13 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Router.php(996): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))\n#14 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(776): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))\n#15 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(746): Illuminate\\Foundation\\Application->dispatch(Object(Illuminate\\Http\\Request))\n#16 \/var\/www\/learninglocker\/vendor\/asm89\/stack-cors\/src\/Asm89\/Stack\/Cors.php(51): Illuminate\\Foundation\\Application->handle(Object(Illuminate\\Http\\Request), 1, true)\n#17 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Session\/Middleware.php(72): Asm89\\Stack\\Cors->handle(Object(Illuminate\\Http\\Request), 1, true)\n#18 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Cookie\/Queue.php(47): Illuminate\\Session\\Middleware->handle(Object(Illuminate\\Http\\Request), 1, true)\n#19 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Cookie\/Guard.php(51): Illuminate\\Cookie\\Queue->handle(Object(Illuminate\\Http\\Request), 1, true)\n#20 \/var\/www\/learninglocker\/vendor\/stack\/builder\/src\/Stack\/StackedHttpKernel.php(23): Illuminate\\Cookie\\Guard->handle(Object(Illuminate\\Http\\Request), 1, true)\n#21 \/var\/www\/learninglocker\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(642): Stack\\StackedHttpKernel->handle(Object(Illuminate\\Http\\Request))\n#22 \/var\/www\/learninglocker\/public\/index.php(49): Illuminate\\Foundation\\Application->run()\n#23 {main}"} )http://52.16.190.132/data/xAPI/activities/state?activityId=http%3A%2F%2F10.…D&stateId=http%3A%2F%2Fadlnet.gov%2Fxapi%2Fprofile%2Fscorm%2Fattempt-state xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/statements 400 (Bad Request) xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/statements". xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":["测试should be a validLocker\XApi\IRI instatement.actor.account.homePage"]} )http://52.16.190.132/data/xAPI/statements jquery.min.js:4 XHR finished loading: GET "http://10.3.0.171/moodle/pluginfile.php/29/mod_scorm/content/12/models_html5/quiz.html".xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/statements 400 (Bad Request) xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/statements". xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":["测试should be a validLocker\XApi\IRI instatement.actor.account.homePage"]} )http://52.16.190.132/data/xAPI/statements yui_combo.php?rollup/3.17.2/yui-moodlesimple.js&rollup/1426267206/mcore-debug.js:24186 XHR finished loading: GET "http://10.3.0.171/moodle/lib/yui/build/moodle-core-checknet/assets/checknet.txt?time=1426596376630". /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/statements 400 (Bad Request) /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/statements". /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":["测试should be a validLocker\XApi\IRI instatement.actor.account.homePage"]} )http://52.16.190.132/data/xAPI/statements /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/statements 400 (Bad Request) /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/statements". /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":["测试should be a validLocker\XApi\IRI instatement.actor.account.homePage"]} )http://52.16.190.132/data/xAPI/statements /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/statements 400 (Bad Request) /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/statements". /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":["测试should be a validLocker\XApi\IRI instatement.actor.account.homePage"]} )http://52.16.190.132/data/xAPI/statements /moodle/pluginfile.php/29/mod_scorm/content/12/apiwrapper_2004.3rd.js:615 SetValue(cmi.total_time, PT71.07S) failed. 404: Data Model Element Is Read Only /moodle/pluginfile.php/29/mod_scorm/content/12/apiwrapper_2004.3rd.js:615 GetValue(cmi.exit) failed. 405: Data Model Element Is Write Only /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 POST http://52.16.190.132/data/xAPI/statements 400 (Bad Request) /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 XHR finished loading: POST "http://52.16.190.132/data/xAPI/statements". /moodle/pluginfile.php/29/mod_scorm/content/12/scorm-xapi/xapiwrapper.min.js:2 There was a problem communicating with the Learning Record Store. ( 400 | {"error":true,"success":false,"message":["测试should be a validLocker\XApi\IRI instatement.actor.account.homePage"]} )

有人有想法么?

谢谢

斯蒂芬

0 投票
2 回答
5806 浏览

scorm - 我可以将 SCORM 内容转换为 html5 格式吗?

我创建了 SCORM OF swf 内容。那么如何将此 SCORM 转换为具有相同内容但采用 HTML5 格式的另一个 SCORM?有没有直接或间接的方式?

0 投票
1 回答
142 浏览

tin-can-api - Tincan LMS 论坛跟踪

我目前正在使用moodle 作为我的LMS,很快就会迁移到黑板。我目前正在尝试找到一种使用 LRS 跟踪论坛活动的方法,有人知道吗?

0 投票
1 回答
189 浏览

tin-can-api - TinCanObjC sendStatement 错误

我正在开发一个 iOS 项目,并希望使用 Tin Can 向 LRS 发送报表。

对于初学者,我一直在使用 SCORM 公共 LRS。我一直在使用github.com/RusticiSoftware/TinCanObjC/上的示例代码,并且能够使用 getStatementWithId 方法从公共 LRS 中检索语句,但是在尝试发送语句时(使用 github 上提供的示例代码)我反复收到带有以下错误消息的 HTTP 400 响应代码:

“PUT 请求的 statementId 参数与语句中指定的参数冲突”

任何人都可以提供任何关于我哪里出错的见解吗?我很确定我的 JSON 格式有效,并且我一直无法找到有关 PUT 请求的 statementID 参数的大量信息。提前致谢。

0 投票
0 回答
134 浏览

javascript - XHR、Windows Phone 8.1 和丢失的授权标头

当谈到 Windows 手机(8.1,Lumia 925)上的 XHR 时,我有一种奇怪的行为。

我正在使用一个 javascript 库来执行一些 XHR 请求(Tin Can JS 库),它对设置一些标头的外部 URL 执行 PUT。如果我在 IE11 上运行与网页完全相同的代码,则请求会发送以下标头:

如果我在由 Cordova 包装的 Windows Phone 上运行它,这些是标题:

明显缺少的是 Authorization 标头。我通过console.log进行了检查,即使在windows phone上也执行了适当的xhr.setRequestHeader,但似乎标头被丢弃或忽略了。

我找不到导致这种情况的原因或解决方法。

0 投票
4 回答
2785 浏览

scorm - xAPI / 锡罐到 LRS 到 LMS

我试图更好地理解 xAPI / Tin Can 的工作原理(我以后将其称为 xAPI)

以前我正在开发一个 SCORM 1.2 LMS,其中有“记录”,例如:每个内容包的原始尝试状态原始分数。LMS 想要升级到 xAPI,但我不确定 xAPI 工作原理背后的原理。

http://tincanapi.com/learning-record-store/它声明:

存储在 LRS 中的数据可以通过 LMS、报告工具或其他 LRS 访问,并且可以存储为单独的学习记录和/或整个成绩单

随后在http://www.learningsolutionsmag.com/articles/1271/the-xapi-and-the-lms-what-does-the-future-hold它还指出:

具有内置 LRS 的 LMS 支持 Experience API,并且还执行 LMS 产品为管理学习交付所做的所有其他事情。

问题是,

LMS 和 LRS 之间的这种关系究竟意味着什么?我需要能够从位于 LMS之外的应用程序中设置上述 LMS“记录” ,你如何使用 xAPI 来做到这一点?

或者也许我完全误解了 xAPI LRS,它旨在完全取代 LMS 记录?

谢谢您的帮助。对此信息资源的链接也将不胜感激。

0 投票
1 回答
197 浏览

scorm - LMS 商店用户如何回答 SCORM 包问题?

我正在从 html/js 创建 SCORM/Tincan 包并使用 SCORM Cloud 进行测试。我不确定 LMS 将如何存储因使用此类软件包而产生的用户数据。我是否需要为包提供额外的编码。例如,使用某些 api 语句来指示 LMS 存储用户数据还是自动完成?LMS 是否在用户的“上下文”中打开课程/包,然后存储他/结果.. 或者是否需要进行额外的实施工作才能使这种持久性发生?

0 投票
4 回答
1060 浏览

scorm - 对于初学者来说,在没有创作包的情况下实施 LMS Scorm Tracking 是否可行?

在构建电子学习解决方案之前,我正在确定是使用 Captivate 或 Storyline 等创作包,还是创建利用 JS 调用进行跟踪的 HTML 页面。如果我避免使用创作工具,我会在现有资产的内容和重用方面获得灵活性。例如,Storyline 正在输出 SWF 文件,我无法像简单的 HTML 页面那样在团队中传递这些文件以供审阅。但是,我是 SCORM 的新手。我想知道是否可以加快实施 SCORM LMS 跟踪 JS 调用以及我的自定义 HTML 页面的速度,或者最好的方法是从创作工具开始?

0 投票
3 回答
4066 浏览

iframe - IFRAMES 是否仍然是跟踪 SCORM SCO 的必需品

在需要使用 LMS 进行跟踪的情况下,从 html 和 javascript 构建 SCORM 解决方案时,是否仍然需要将所有页面包含在 IFRAME 中或是否正在采用其他方法?尝试创建响应式页面时,在 IFRAME 中工作存在哪些困难?

0 投票
1 回答
575 浏览

java - 我如何接收 Tin Can API 报表?

我有一个发出 Tin Can API 语句的源,我可以在其中提供端点来发送这些语句(它是 moodle 的插件)。

我想编写一个能够接收这些语句的简单 Java 服务器。现在不需要身份验证。只需接收并打印出来,就像http://tincanapi.com/public-lrs/一样。

我从哪说起呢?