SCORM 1.2: Not passing suspend_data

Jul 09, 2014

I exported to Scorm 1.2, but I'm having issues. My presentation is not passing the “suspend_data” after each next button is clicked. It doesn’t seem to alert me to anything about what the user is doing. If I let it sit for a while it will pass a “suspend_Data” of “null” right before the “commit” call.

Does anybody know how to remedy this?

4 Replies
Ashley Terwilliger-Pollard

Hi Michael and welcome to Heroes!

How are you viewing the suspend data from Storyline? Storyline compresses suspend data to avoid exceeding data limits imposed by some learning management systems. As a result, the suspend_data string in an LMS debug log isn't human-readable. That is, you won't be able to decipher it.

Scorm 1.2 does have a smaller limit than the other versions mentioned here. There is also the discussion here on how a few users have set it up to send the suspend data on every slide.

Hope that helps!

michael d

Thank you Ashley!

Now - we do not need to read the suspend_data, so the compression state is irrelevant to us. We just need the presentation to actually send it to the API, so we can save it in the DB, and return it the next time the user loads it. Just for reference, here is how I am reading it for friendlier tracking purposes in the DB:

This is the end of slide 1:

1E44050ji1001111a0101101111711000000000000

Which from what I can tell breaks down to this:

1E4

40

50 [values will follow a quasi-hex format: 60,70,80,90,a0,b0…]

ji1

001111

a

01011

01111 [values will follow a format of 0 then 4 digits]

711000000000000

Which means:

viewed=4,5|lastviewedslide=1.1|0.1,1.1

(the 4 and 5 seem to be more of an index then an actual slide value)

Lastviewedslide seems to be the only value I can pull out programmatically with a high confidence currently. I haven’t messed with the other values enough to see all their possibilities in relation to the extra data. But again, WE DO NOT NEED TO DECOMPRESS THIS DATA. It will work for us just to store it and return it as the articulate files provide it to us.

The following link is how the files are set up on our side: https://www.dropbox.com/sh/x6g2qt33bqpwj0w/AACAyFgyMpVuCx_LKapSlWb0a

Hopefully this will give you a better understanding of how we are using them. I should note I was having some JS access issues running this from the file system, so you may want to pull them into a web IDE to step through them. I included a VS2012 sln file if that helps (if not, just ignore it).

Each module is contained in its own folder. /Modules/Module[0-4]/

The API referenced by each module is in /Modules/api.html(/modules/api2004.html if you want to use SCORM 2004)

The main page for each module is/Modules/Module[0-4]/index.html. This page references (through 2 frames) thecommon /Modules/api.html file, and the relative index_lms.html.

The index_lms.html page loads the needed JS files, and thenframes in the "scormdriver_content" with the relative story.htmlfile.

I have put javascript alerts on all of my API functions, andremoved any custom functionality. So whenever an API call is made through SCORM, and alert box will appeardetailing the call.

For this project, we need to keep track of every slide theuser visits by having the "suspend_data" sent to LMSSetValue in theAPI.

If you load /modules/module0/index.html you will see a bunchof setup API calls made. Thenevery time you click "next" you will see a "LMSSetValue"call made passing the "suspend data". This is correct.

BUT, If you load /modules/module[1-3]/index.html you will see thesetup API calls being made, but then you will not see any "suspenddata" call after that. If youwait long enough, it will send a "suspend data" of "null"followed by a commit call (since it thinks you walked away and are notfinishing it).

So we need to track down the difference between the Module0files and Module 1-3 files. I'm pretty certain we didn't Publish with any different settings. Module0 and Module1 should be virtually identical, except for some minor content changes. I can't seem to figure out why Module0 has the suspend data call, and why Module1 does.

Sorry this is so long. Thanks in advance!

michael d

I found a fix for this:

I just needed to make sure that RESUME was on (either PROMPT or ALWAYS).

Storyline will not send suspend data if resume is set to off.

I set it off because I didn't want the LMS to be affected by any Flash cookies, but if you make sure "If LMS ignore Flash cookie" is checked, and Resume is set to ON then suspend data gets passed normally.

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