Tracking Student Responses? [Articulate Storyline]

Nov 15, 2016

Hi there

I'm trying to get the full quiz data sent to my LMS (moodle, for the record). There was a post relating to this over here (https://articulate.com/support/article/quiz-data-sent-to-an-lms-in-articulate-storyline); I figured this feature would have been fed down the line to the latest '360' version of storyline, but in some preliminary testing, it seems not the case. 

Is anyone able to confirm this for me? Or am I doing something wrong?  :) 

I've tested SCROM 1.2 & SCORM 2004 (2nd, 3rd, and 4th edition).

Thanks!

25 Replies
Kris N

Hi Matthew -

Excellent! That was definitely it (I had hoped it was collecting data in the background, and pushing it to the database; but I can see why the results page is needed to bring all the data together, and send it to the DB at that point).

I just did a test with every 'graded quiz' possible. object based ones report the object IDs (which makes sense), so tracking student responses won't be too hard; one thing I found though is that the fill-in-the-blank and the numeric graded quizes don't seem to pass the student response through (see attachment); any thought?


(I can't tell if this is because the right/ wrong is determined at the time of the quiz and if it's unable to pass the value because it's the wrong data-type being passed to the DB? )

 

Dan Marsden

could also be a bug with Moodle preventing that from being saved - it looks like you are using a SCORM 2004 package. Moodle doesn't provide full support for SCORM 2004 - I'd suggest you run the SCORM debugger in Moodle and run through the quiz keeping an eye on what happens when it saves the learner_resonse for that question.

Kris N

Hi Dan,

Thanks for that; took a bit of time to get Moodle SCORM debugging happening - but got it now.
Unfortunately, it's not really any more detailed than the standard Moodle report;
I tried using SCORM 1.2, especially since this 2014 post corroborates your comment about Moodle SCORM support.

I also tested this same package in SCORMcloud. I've attached its debug / output below the moodle one - but it's also not showing any 'data' being passed thru.

Part of me is wondering if the value isn't being passed properly (or at all) - or if it is, is it being passed as an 'object' rather than a properly value (int / string). I've seen this sort of weirdness with JS before, particularly when it's not cast properly. 

 

Debug report from Moodle is below:

*****
Textual Fill-in
*****

Mon, 21 Nov 2016 02:56:41 GMT: LMSGetValue("cmi.interactions._count") - 4 => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.id", "Scene1_Slide6_FillInTheBlank_0_0") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.type", "fill-in") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.student_response", "") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.correct_responses_0.pattern", "[object Object],[object Object],[object Object]") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.result", "wrong") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.weighting", "1") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.latency", "0000:01:13.39") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.objectives_0.id", "Simple1_test5") => 0
Mon, 21 Nov 2016 02:56:41 GMT: LMSSetValue("cmi.interactions_4.time", "13:56:41") => 0
Mon, 21 Nov 2016 02:56:52 GMT: LMSSetValue("cmi.core.score.raw", "18.18") => 0
Mon, 21 Nov 2016 02:56:52 GMT: LMSSetValue("cmi.core.score.max", "100") => 0
Mon, 21 Nov 2016 02:56:52 GMT: LMSSetValue("cmi.core.score.min", "0") => 0
Mon, 21 Nov 2016 02:56:52 GMT: LMSGetValue("cmi.interactions._count") - 5 => 0


******
Numerical Fill-in
******

Mon, 21 Nov 2016 02:57:29 GMT: LMSGetValue("cmi.interactions._count") - 9 => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.id", "Scene1_Slide11_Numeric_0_0") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.type", "fill-in") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.student_response", "") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.correct_responses_0.pattern", "Correct Response is equal to 42") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.result", "wrong") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.weighting", "1") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.latency", "0000:02:01.34") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.objectives_0.id", "Simple1_test5") => 0
Mon, 21 Nov 2016 02:57:29 GMT: LMSSetValue("cmi.interactions_9.time", "13:57:29") => 0

--------

SCORMcloud Debug Data:

*****
Textual Fill-in
*****

- [16:09:42.649] LMSGetValue('cmi.interactions._count') returned '4' in 0 seconds
[16:09:42.649] CheckForGetValueError (cmi.interactions._count, cmi.interactions._count, , )
[16:09:42.649] Call is error free.
[16:09:42.649] RetrieveGetValueData (cmi.interactions._count, cmi.interactions._count, , )
[16:09:42.649] Element is: interactions._count
[16:09:42.649] LMSGetLastError() returned '0' in 0 seconds
- [16:09:42.649] LMSSetValue('cmi.interactions.4.id', 'Scene1_Slide6_FillInTheBlank_0_0') returned 'true' in 0.001 seconds
[16:09:42.649] CheckForSetValueError (cmi.interactions.4.id, Scene1_Slide6_FillInTheBlank_0_0, cmi.interactions.n.id, 4, )
[16:09:42.649] Element is: interactions.id
[16:09:42.649] Call is error free.
[16:09:42.649] StoreValue (cmi.interactions.4.id, Scene1_Slide6_FillInTheBlank_0_0, cmi.interactions.n.id, 4, )
[16:09:42.649] Element is: interactions.id
[16:09:42.649] Adding new interaction at position 4
- [16:09:42.650] LMSSetValue('cmi.interactions.4.type', 'fill-in') returned 'true' in 0 seconds
[16:09:42.650] CheckForSetValueError (cmi.interactions.4.type, fill-in, cmi.interactions.n.type, 4, )
[16:09:42.650] Element is: interacitons.type
[16:09:42.650] Call is error free.
[16:09:42.650] StoreValue (cmi.interactions.4.type, fill-in, cmi.interactions.n.type, 4, )
[16:09:42.650] Element is: interacitons.type
- [16:09:42.650] LMSSetValue('cmi.interactions.4.student_response', '') returned 'true' in 0 seconds
[16:09:42.650] CheckForSetValueError (cmi.interactions.4.student_response, , cmi.interactions.n.student_response, 4, )
[16:09:42.650] Element is: interactions.student_response
[16:09:42.650] Call is error free.
[16:09:42.650] StoreValue (cmi.interactions.4.student_response, , cmi.interactions.n.student_response, 4, )
[16:09:42.650] Element is: interactions.student_response
- [16:09:42.650] LMSSetValue('cmi.interactions.4.correct_responses.0.pattern', '[object Object],[object Object],[object Object]') returned 'true' in 0.001 seconds
[16:09:42.650] CheckForSetValueError (cmi.interactions.4.correct_responses.0.pattern, [object Object],[object Object],[object Object], cmi.interactions.n.correct_responses.n.pattern, 4, 0)
[16:09:42.650] Element is: interactions.correct responses.pattern
[16:09:42.650] Call is error free.
[16:09:42.650] StoreValue (cmi.interactions.4.correct_responses.0.pattern, [object Object],[object Object],[object Object], cmi.interactions.n.correct_responses.n.pattern, 4, 0)
[16:09:42.650] Element is: interactions.correct_responses.pattern
- [16:09:42.651] LMSSetValue('cmi.interactions.4.result', 'correct') returned 'true' in 0 seconds
[16:09:42.651] CheckForSetValueError (cmi.interactions.4.result, correct, cmi.interactions.n.result, 4, )
[16:09:42.651] Element is: interactions.result
[16:09:42.651] Call is error free.
[16:09:42.651] StoreValue (cmi.interactions.4.result, correct, cmi.interactions.n.result, 4, )
[16:09:42.651] Element is: interactions.result
- [16:09:42.651] LMSSetValue('cmi.interactions.4.weighting', '1') returned 'true' in 0 seconds
[16:09:42.651] CheckForSetValueError (cmi.interactions.4.weighting, 1, cmi.interactions.n.weighting, 4, )
[16:09:42.651] Element is: interactions.weighting
[16:09:42.651] Call is error free.
[16:09:42.651] StoreValue (cmi.interactions.4.weighting, 1, cmi.interactions.n.weighting, 4, )
[16:09:42.651] Element is: interactions.weighting
- [16:09:42.651] LMSSetValue('cmi.interactions.4.latency', '0000:00:37.40') returned 'true' in 0.001 seconds
[16:09:42.651] CheckForSetValueError (cmi.interactions.4.latency, 0000:00:37.40, cmi.interactions.n.latency, 4, )
[16:09:42.651] Element is: interactions.latency
[16:09:42.651] Call is error free.
[16:09:42.651] StoreValue (cmi.interactions.4.latency, 0000:00:37.40, cmi.interactions.n.latency, 4, )
[16:09:42.651] Element is: interactions.latency
- [16:09:42.652] LMSSetValue('cmi.interactions.4.objectives.0.id', 'Simple1_test6-SCORM_12') returned 'true' in 0 seconds
[16:09:42.652] CheckForSetValueError (cmi.interactions.4.objectives.0.id, Simple1_test6-SCORM_12, cmi.interactions.n.objectives.n.id, 4, 0)
[16:09:42.652] Element is: interactions.objectives.id
[16:09:42.652] Call is error free.
[16:09:42.652] StoreValue (cmi.interactions.4.objectives.0.id, Simple1_test6-SCORM_12, cmi.interactions.n.objectives.n.id, 4, 0)
[16:09:42.652] Element is: interactions.objectives.id
+ [16:09:42.652] LMSSetValue('cmi.interactions.4.time', '16:09:42') returned 'true' in 0 seconds
[16:09:42.797] Beginning prerequisites evaluation of activity Simple1_test6-SCORM_12_ORG
[16:09:42.798] Beginning prerequisites evaluation of activity Simple1_test6-SCORM_12_ORG
[16:09:42.798] Beginning prerequisites evaluation of activity Simple1_test6-SCORM_12_SCO

 

******
Numerical Fill-in
******

- [16:10:17.123] LMSGetValue('cmi.interactions._count') returned '9' in 0 seconds
[16:10:17.123] CheckForGetValueError (cmi.interactions._count, cmi.interactions._count, , )
[16:10:17.123] Call is error free.
[16:10:17.123] RetrieveGetValueData (cmi.interactions._count, cmi.interactions._count, , )
[16:10:17.123] Element is: interactions._count
[16:10:17.123] LMSGetLastError() returned '0' in 0 seconds
- [16:10:17.123] LMSSetValue('cmi.interactions.9.id', 'Scene1_Slide11_Numeric_0_0') returned 'true' in 0.001 seconds
[16:10:17.123] CheckForSetValueError (cmi.interactions.9.id, Scene1_Slide11_Numeric_0_0, cmi.interactions.n.id, 9, )
[16:10:17.123] Element is: interactions.id
[16:10:17.123] Call is error free.
[16:10:17.123] StoreValue (cmi.interactions.9.id, Scene1_Slide11_Numeric_0_0, cmi.interactions.n.id, 9, )
[16:10:17.123] Element is: interactions.id
[16:10:17.123] Adding new interaction at position 9
- [16:10:17.124] LMSSetValue('cmi.interactions.9.type', 'fill-in') returned 'true' in 0 seconds
[16:10:17.124] CheckForSetValueError (cmi.interactions.9.type, fill-in, cmi.interactions.n.type, 9, )
[16:10:17.124] Element is: interacitons.type
[16:10:17.124] Call is error free.
[16:10:17.124] StoreValue (cmi.interactions.9.type, fill-in, cmi.interactions.n.type, 9, )
[16:10:17.124] Element is: interacitons.type
- [16:10:17.124] LMSSetValue('cmi.interactions.9.student_response', '') returned 'true' in 0 seconds
[16:10:17.124] CheckForSetValueError (cmi.interactions.9.student_response, , cmi.interactions.n.student_response, 9, )
[16:10:17.124] Element is: interactions.student_response
[16:10:17.124] Call is error free.
[16:10:17.124] StoreValue (cmi.interactions.9.student_response, , cmi.interactions.n.student_response, 9, )
[16:10:17.124] Element is: interactions.student_response
- [16:10:17.124] LMSSetValue('cmi.interactions.9.correct_responses.0.pattern', 'Correct Response is equal to 42') returned 'true' in 0.001 seconds
[16:10:17.124] CheckForSetValueError (cmi.interactions.9.correct_responses.0.pattern, Correct Response is equal to 42, cmi.interactions.n.correct_responses.n.pattern, 9, 0)
[16:10:17.124] Element is: interactions.correct responses.pattern
[16:10:17.124] Call is error free.
[16:10:17.125] StoreValue (cmi.interactions.9.correct_responses.0.pattern, Correct Response is equal to 42, cmi.interactions.n.correct_responses.n.pattern, 9, 0)
[16:10:17.125] Element is: interactions.correct_responses.pattern
- [16:10:17.125] LMSSetValue('cmi.interactions.9.result', 'wrong') returned 'true' in 0 seconds
[16:10:17.125] CheckForSetValueError (cmi.interactions.9.result, wrong, cmi.interactions.n.result, 9, )
[16:10:17.125] Element is: interactions.result
[16:10:17.125] Call is error free.
[16:10:17.125] StoreValue (cmi.interactions.9.result, wrong, cmi.interactions.n.result, 9, )
[16:10:17.125] Element is: interactions.result
- [16:10:17.125] LMSSetValue('cmi.interactions.9.weighting', '1') returned 'true' in 0 seconds
[16:10:17.125] CheckForSetValueError (cmi.interactions.9.weighting, 1, cmi.interactions.n.weighting, 9, )
[16:10:17.125] Element is: interactions.weighting
[16:10:17.125] Call is error free.
[16:10:17.125] StoreValue (cmi.interactions.9.weighting, 1, cmi.interactions.n.weighting, 9, )
[16:10:17.125] Element is: interactions.weighting
- [16:10:17.125] LMSSetValue('cmi.interactions.9.latency', '0000:01:11.87') returned 'true' in 0.001 seconds
[16:10:17.125] CheckForSetValueError (cmi.interactions.9.latency, 0000:01:11.87, cmi.interactions.n.latency, 9, )
[16:10:17.125] Element is: interactions.latency
[16:10:17.126] Call is error free.
[16:10:17.126] StoreValue (cmi.interactions.9.latency, 0000:01:11.87, cmi.interactions.n.latency, 9, )
[16:10:17.126] Element is: interactions.latency
- [16:10:17.126] LMSSetValue('cmi.interactions.9.objectives.0.id', 'Simple1_test6-SCORM_12') returned 'true' in 0 seconds
[16:10:17.126] CheckForSetValueError (cmi.interactions.9.objectives.0.id, Simple1_test6-SCORM_12, cmi.interactions.n.objectives.n.id, 9, 0)
[16:10:17.126] Element is: interactions.objectives.id
[16:10:17.126] Call is error free.
[16:10:17.126] StoreValue (cmi.interactions.9.objectives.0.id, Simple1_test6-SCORM_12, cmi.interactions.n.objectives.n.id, 9, 0)
[16:10:17.126] Element is: interactions.objectives.id
- [16:10:17.126] LMSSetValue('cmi.interactions.9.time', '16:10:17') returned 'true' in 0.001 seconds
[16:10:17.127] CheckForSetValueError (cmi.interactions.9.time, 16:10:17, cmi.interactions.n.time, 9, )
[16:10:17.127] Element is: interactions.time
[16:10:17.127] Call is error free.
[16:10:17.127] StoreValue (cmi.interactions.9.time, 16:10:17, cmi.interactions.n.time, 9, )
[16:10:17.127] Element is: interactions.time
- [16:10:22.230] LMSGetValue('cmi.interactions._count') returned '10' in 0 seconds
[16:10:22.230] CheckForGetValueError (cmi.interactions._count, cmi.interactions._count, , )
[16:10:22.230] Call is error free.
[16:10:22.230] RetrieveGetValueData (cmi.interactions._count, cmi.interactions._count, , )
[16:10:22.230] Element is: interactions._count
[16:10:22.230] LMSGetLastError() returned '0' in 0 seconds

 

Kris N

Thanks Dan -- that was my thoughts / feelings too! 
Although I'm debating as to whether it's passing an empty value, or the wrong [data]type of value. Either case - hopefully something the Articulate staff can help me out with :) 

Leslie - I've attached it (unless you would like me to send it another way? ).

Jacqueline Bates

Hi I am having the same problem. I am trying to get quiz result data sent to my LMS (Launch & Track: Brightwave) - published as SCORM 1.2.

My Articulate Storyline 360 story has a results screen at the end of the quiz screens followed by a course completion page with a course exit button (all created from 360 template library slides). Results screen is used for Tracking and Report status to LMS is set to Passed/Incomplete (have also tried Passed/failed).

Completion mark is default 80% - the course retains completion mark and results in each slide but does not pass results to LMS.

I didn't have this issue with Storyline 2.

David Oskorus

Hi-

I am having the same issue.
I updated a SL2 course that was recording user responses (SCORM 2004 v4).
After converting to and publishing from SL360 (SCORM 2004 v4) it is not.

I am only trying to record fill in responses, but in an effort to figure out what is going on, I created a simple test course with a few questions, including a multiple choice question. The multiple choice question seems to be recording the selected answer, but the fill ins do not.

I ultimately need to publish as HTML5 only, but in an effort to troubleshoot, published the test to Flash as well.

It appears the Multiple Choice responses are recorded for both Flash and HTML5 output.

However, user answers for Fill In questions (Graded: Fill in the Blank, Survey: Short or Essay, or Free Form: Text Entry)  are recorded when published to Flash but they are NOT recorded when published to HTML5 only.

Here are some exerpts from the SCORM Cloud logs when I tested the Flash Output vs the HTML5 output:

Flash output SCORM Cloud log

+ [11:41:16.202] SetValue('cmi.interactions.0.type', 'choice') returned 'true' in 0 seconds
+ [11:41:16.202] SetValue('cmi.interactions.0.learner_response', 'George_Washington') returned 'true' in 0.001 seconds
+ [11:41:39.156] SetValue('cmi.interactions.1.type', 'fill-in') returned 'true' in 0.001 seconds
+ [11:41:39.157] SetValue('cmi.interactions.1.learner_response', 'Abe Lincoln') returned 'true' in 0.001 seconds
+ [11:41:49.196] SetValue('cmi.interactions.2.type', 'fill-in') returned 'true' in 0.001 seconds
+ [11:41:49.197] SetValue('cmi.interactions.2.learner_response', 'Harry Truman') returned 'true' in 0 seconds
+ [11:41:56.416] SetValue('cmi.interactions.3.type', 'fill-in') returned 'true' in 0 seconds
+ [11:41:56.416] SetValue('cmi.interactions.3.learner_response', 'Harry Truman') returned 'true' in 0.001 seconds
+ [11:42:07.668] SetValue('cmi.interactions.4.type', 'fill-in') returned 'true' in 0 seconds
+ [11:42:07.668] SetValue('cmi.interactions.4.learner_response', 'Ronald Reagan') returned 'true' in 0.001 seconds


HTML5 output SCORM Cloud log

+ [11:45:18.806] SetValue('cmi.interactions.0.type', 'choice') returned 'true' in 0.001 seconds
+ [11:45:18.807] SetValue('cmi.interactions.0.learner_response', 'George_Washington') returned 'true' in 0.003 seconds
+ [11:45:27.157] SetValue('cmi.interactions.1.type', 'fill-in') returned 'true' in 0.001 seconds
+ [11:45:27.158] SetValue('cmi.interactions.1.learner_response', '') returned 'true' in 0 seconds
+ [11:45:41.847] SetValue('cmi.interactions.2.type', 'fill-in') returned 'true' in 0.001 seconds
+ [11:45:41.848] SetValue('cmi.interactions.2.learner_response', '') returned 'true' in 0 seconds
+ [11:47:26.557] SetValue('cmi.interactions.3.type', 'fill-in') returned 'true' in 0.001 seconds
+ [11:47:26.558] SetValue('cmi.interactions.3.learner_response', '') returned 'true' in 0 seconds
+ [11:47:36.699] SetValue('cmi.interactions.4.type', 'fill-in') returned 'true' in 0 seconds
+ [11:47:36.699] SetValue('cmi.interactions.4.learner_response', '') returned 'true' in 0.002 seconds

The same answers were entered both times. You can see all of the responses being recorded via the Flash output, but only the Multiple Choice being recorded via the HTML5 output.

Hopefully something that can be corrected.

Thanks!

Kris N

Hi David,

Just to let you know - they have identified my issue as a 'bug', and are currently escalating it / troubleshooting as we speak :) Once they've passed something back to me, I'll comment here with the update (I dare say it will be a software patch - but I'll still share the resolution here).

Thank you for confirming it too! Definitely helps with validating the fault! :D 

This discussion is closed. You can start a new discussion or contact Articulate Support.