Copy link to clipboard
Copied
Hello,
I'm trying to build a simple SCORM 1.2 compliant LMS (I know that's a contradiction in terms!) for some Captivate 4 movies. I can set and get a value succesfully, and LMSCommit() successfully makes an AJAX call to store any data that's been set via LMSSetValue() in a database. LMSInitialize() succesfully reads it back and makes it all available to LMSGetValue().
The thing is that the movie doesn't make a LMSGetValue() call when it first loads up! So even though all the resume data is there, the movie never seems to ask for it, and so it just loads the first frame, irrespective of what data is available to it.
I'm alerting every API call (javascript alerts) so I can see that the movie initializes, then sets a load of values, then commits, the sits on frame 1, all without even calling LMSGetValue().
So... is it maybe a problem in the way the movies are published? Although I didn't author the original movies I do have access to Captivate 4 so I've been making my own test movies and in Preferences > Quiz > Reporting I've ticked 'Enable reporting', selected 'Standard' and 'SCORM', set 'Report Status' to 'Pass/Fail' and 'Report to LMS as' to 'Score'. I've set 'Choose Report Data' to 'Quiz results and slide views' and 'Reporting Level' to 'Interactions and score'. In the 'LMS Customization Settings...' window I've un-ticked both 'Never Send Resume Data' and 'Escape Versin and Session ID'.
Or am I doing something wrong at the API end?
I'd really appreciate any hints!!!
Thanks a lot,
Ben
Copy link to clipboard
Copied
Perhaps best to try the Captivate lesson in the ADL TestSuite, or Rustici's TestTrack, or perhaps the Reload player, to see if your CP lesson exhibits the same behavior there. I know it CAN get the data when it resumes, as we've built lessons that do...but your settings all seem correct, I think...so it may be a JS or API issue?
Erik
Copy link to clipboard
Copied
Erik,
Thanks very much for your help. I tested in Test Track, as you suggested, and the movie does resume properly! So you're right, there must be some sort of issue with what I've done.
What's eluding me is how to make the data I've saved available to the movie, if it's not making a direct API call!
Any ideas?
Thanks,
Ben
Copy link to clipboard
Copied
Erik,
OK Now I'm confused - my test movie is definitely NOT resuming correctly in Rustici Test Track!
I can't make out anything from their logs, and I wish I had double and triple-checked this morning when I thought it was resuming properly... how would that have changed? I must have been mistaken, because it is definitely not resuming correctly now.
So, I'm reconsidering the possibility that the issue lies in the creation of the Captivate movie, rather than in my API. This makes more sense to me, frankly, since the API is very simple and alerts every system call, so I can see clearly that the movie is simply not requesting the saved data.
The other possibility, I suppose, is that the data should be made available to the movie through some other means than LMSGetValue() - or any other system call - but how?
There is one more thing, and that is that the Rustici site is looking for MMTracking.swf and not finding it. Since I have no idea what that file does I have no idea whether the fact is relevant. I don't see the error on our own server.
Thanks again for your help,
Ben
Copy link to clipboard
Copied
Erik,
This morning my movie has begun to resume properly from the last point, in Rustici's Test Track. I am truly confused now.
My confusion is twofold - am I experiencing an API issue, or is it to do with settings in Captivate? How can it be an API issue when my API is ready to supply the suspend_data to the movie, but the movie never asks for it? And how can it be a Captivate problem if it resumes properly (albeit intermittently) in the Test Track?
If there is anyone who can help, I would be truly grateful!
Thanks,
Ben
Copy link to clipboard
Copied
Per the SCORM spec, as I understand it, the cmi.exit value has everything to do with the LMS sending back resume data.
If cmi.exit is set to 'suspend', then the LMS (if it's programmed to) will provide the suspend_data to the lesson on request.
However, cmi.exit is not set to suspend when the lesson exits, then the lesson itself (I forget the variable) is not set to 'resume'...so suspend_data is NOT sent back to the lesson, even if it's requested...
So that could be the issue? What's the cmi.exit value in various cases? Can you tell?
Erik