Learning Locker 和 SCORM-to-xAPI-Wrapper

Learning Locker and 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. ,Anaccountmust have anameand ahomePage.,agentis 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. ,Anaccountmust have anameand ahomePage.,agentis 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":["testshould be a validLocker\XApi\IRIinstatement.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":["testshould be a validLocker\XApi\IRIinstatement.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\IRIinstatement.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\IRIinstatement.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\IRIinstatement.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\IRIinstatement.actor.account.homePage"]} )

有人有什么想法吗?

谢谢

斯蒂芬

看起来 LRS 正在拒绝这些声明,因为您在请求中使用的代理对象无效。看起来你可能正在使用

{
    "name": "test",
    "account": {
        "homePage": "test",
        "name": "test"
    },
    "objectType": "Agent"
}

而要有效,您需要使用类似的东西:

{
    "name": "test",
    "account": {
        "homePage": "http://example.com/test",
        "name": "test"
    },
    "objectType": "Agent"
}

如果不是这种情况,您能否将要发送的完整陈述添加到您的问题中。有关代理有效值的更多详细信息,请参阅 this blog

您可能还想将 TinCanJS as an alternative JS library and SCORM Cloud 视为额外的 LRS,用于测试不适用于 Learning Locker 的内容,这样您就可以确定问题出在内容还是 LRS 上。