• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Resuming after a Communication Error with LMS

Explorer ,
Dec 14, 2013 Dec 14, 2013

Copy link to clipboard

Copied

Is there any way using Captivate 7 to tell a SCORM 1.2  or SCORM 20004 course to send the bookmark data to the LMS on every slide in the course until you get to the quiz, and then only send the resume information at the end of the quiz, so that the quiz does not get bogged down with network traffice?

The problem that I am running into is that I have a course where the first 15 slides are informational and are not part of the quiz.  This is then followed by 25 Random quiz slides which they must get at least 70% correct to pass.  Slides 1 and 2 are text and images only.  Slides 3 through 12 use the Web Object Interface (the one that comes standard with Adobe Captivate 7).  These web object interfaces each are used to display videos.  Each video is between 3 and 10 minuts long.  All together it takes the students almost an hour to get past the video to slide 13.  Slide 13 does an AJAX call (using Javascript) back to our company servers so that we know that they have completed viewing all of the videos.  The callback to our servers seems to always be successful, so we know who completed viewing all of the videos.

This is where the problem comes.  About 1 in ten students get a Communication Error with the LMS when they click on the Continue button on slide 13.  My guess is that most of these people who receive this error are on a very slow or busy network.  If that student closes out of the browser and then tries to get back in to continue from where they left off, instead of returning to slide 13, they are always returned to slide 3, the first Web Object Interface slide and must go through almost an hours worth of videos again before they can get back to slide 13 again.  And on top of that, some students get hit by the communications error multiple time and each time have to restart the course at slide number 3.

Our LMS uses a pop-up browser window to display the course and uses another webpage (which has to stay open while the course is being taken) to communicate back to the LMS.  There has been at least one instance where the student recieved this Communications Error message, closed just the pop-up window where the course was being display, but instead of closing the entire web browser, clicked on the "Launch Course Again" button on this other page and they were able to return back to slide 13 and continue the course from there.  But every other time someone has run into this Communications Error problem and they contact us, they have already closed out of the web browser.

I have read that having the advanced setting of "Send Data On Every Slide" checked can really bog the course down when someone is taking a long quiz (we are using 25 Random Quiz Questions in this course) and I would like to avoid bogging down a network where they may already be having slow network issues).

My main concern is that if someone spends the time to watch each video, then I want to make sure that the SCORM bookmarking process works and if they have to get out of the course after watching some or all of the videos using the Web Object Interface, that the normal SCORM bookmarking process remembers which video slide that the student has already watched rather than forcing them to always go back to slide 3 (the first video slide in the course using the Web Object Interface).

So is there any way to tell the scorm bookmarking process (either 1.2 or 2004) to make sure that it remembers that the student has already watched certain slides without having to set the Send Data On Every Slide indicator?  And since each video (using a Web Object Interface) lasts between 3 and 8 minutes, there should be plenty of time to get this communication back to the LMS and set the SCORM resume data before it is time to go to the next slide.

This problem (the LMS not remembering that the student has already gone past these other screens which are all before any quiz questions are encountered) is the biggest problem that we ran into when we rolled out our first course to about 15,000 students.  And since we are using this past course as the base for the next course that we will be rolling out in about a month (this time using SCORM 2004 Ver. 4), it is liable to be our biggest problem with our next course also.  We actually had to create a 2nd course which did NOT include the video slides and manually re-assign the students who ran into this Communication Error problem and let them take this version of the course.

I don't know if this is a problem related to the new Web Object Interface, where the SCORM bookmarking cannot tell the difference between the first video slide or the last video slide, or if something else is going on.  It just seems strange that after this communication error arises, it never goes back to slide 1 or 2.  It always restarts on slide 3 (the first video slide).  When I first created these slides, I create slide 3 from a blank slide, added the Web Object Interface and a continue button which shows up when the video is supposed to be completed.  Then I just duplicated the rest of the video slides from the first one and only changed the URL that the Web Object pointed at and changed the name on the slide.  Instead of using the Duplicate slide function, would it have made a difference if I had created each new slide from scratch and re-added the Web Object Interface and created a new continue button?  Could that be why the bookmarking system doesn't seem to know the difference between the 12th (10th video) slide and the 3rd (first video) slide?

Any help or advice would be greatly appreciated.  Thank you for your time.

TOPICS
Advanced

Views

6.2K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
People's Champ ,
Dec 16, 2013 Dec 16, 2013

Copy link to clipboard

Copied

There could be several issues here.

SCORM 1.2 and 2004 operate very differrently concerning resume data (lesson_location table). In most LMS's SCORM 1.2 will store the data directly to the table, SCORM 2004 will store the data in a temporary table, and wait for the exit call to see if it should put the data in the permanent table (api.SetValue("cmi.exit", "suspend") will move the data, if the exit is not set to suspend, that data will be discarded.

Many LMS's have timeouts, if you are not sending any data to the LMS during the slides that have the WOI, the LMS could break connection.

If you can see the type of string that is being stored in the lesson_location, you could set it with javascript on the Slide Exit every time you want to save the learner's progress. Setting on the slide exit rather than the slide enter will ensure that there isn't any conflict with the WOI. Our LMS has a debugger panel so we can see all of the SCORM values and watch a log of all of the communication.

Our old courses would fail if the page that was initializing the LMS also had a swf file that was loading. Loading movies through the WOI could be causing problems if the course is trying to communicate to the LMS at the same time.

In our SCORM 2004 courses we always call the api.SetValue("cmi.exit", "suspend") after any data is sent to the LMS. That way it is always stored in the permanent table no matter how the course is exited. If the browser lock up or blew up the last location is still in the LMS. Sometimes a user will lose a connection and not know it, in which case they are out of luck.

We have found that some students will open the course content in one browser and the quiz portion of the course in another, at which point all sorts of tracking anomolies can occur.

If you could be more specific on the Captivate tracking settings, SCORM version and anything else possibly I could help more.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
May 22, 2014 May 22, 2014

Copy link to clipboard

Copied

I'd be interested to hear more about using something like api.SetValue("cmi.exit", "suspend"), except for SCORM 1.2.

We have trouble with users losing bookmarking for various reasons and with similarly long courses, I don't want anyone to have to repeat anything they've done. I'm just a novice when it comes to javascript and parsing the SCORM files, so I haven't been able to figure this one out on my own.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
People's Champ ,
May 22, 2014 May 22, 2014

Copy link to clipboard

Copied

In Captivate SCORM 1.2 the command would be:

SCORM_objAPI.SetValue("cmi.core.exit", "suspend"),

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
May 22, 2014 May 22, 2014

Copy link to clipboard

Copied

And you'd set this up as an execute javascript action at the end of whatever slide you want marked? Does the action need to be set to execute the current window or in the parent window?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
People's Champ ,
May 22, 2014 May 22, 2014

Copy link to clipboard

Copied

Yes, you eecute it on whatever slide you want. In our courses it executes on every slide as it's called in the functions that set data.

The Captivate SCORM API discovery should handle the parenting for you.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
May 22, 2014 May 22, 2014

Copy link to clipboard

Copied


Thanks TLC. If I could mark your answer as correct for the original, I would!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Oct 02, 2020 Oct 02, 2020

Copy link to clipboard

Copied

When you say, "Sometimes a user will lose a connection and not know it, in which case they are out of luck." does this mean they are out of luck, even when you use the code? Is there a way around this? I see there is now an option to send data on every slide:

Preferences>Quiz>LMS Advanced settings

check the checkbox: “Send Data On Every Slide”

 

Would this be a better way of doing it than using the code?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Oct 02, 2020 Oct 02, 2020

Copy link to clipboard

Copied

Just FYI, the default SCORM template is doing that 'Send Data On Every Slide'.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Oct 05, 2020 Oct 05, 2020

Copy link to clipboard

Copied

LATEST

We are having issues that when the LMS gets disconnected, the user does not get credit, and also starts from the begining of the course. We would like to make it so they at least start from the point where the LMS got disconected. The code does not seem to help with this. Does anyone have any ideas? Or a good explanation to why this is happening so that I can let my client know what is and isn't possible?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Nov 16, 2015 Nov 16, 2015

Copy link to clipboard

Copied

Just checking back on this old post to see if anyone had come up with an answer.


The proposed answers listed above did not work, so this problem still exits. I am now using Captivate 8 and just about to start using Captivate 9.


We are using a JavaScript-based video player in our course which streams video from a 3rd party that we have contracted with. It appears the some or all of the problem may be related to this streaming video service which "pings" back to itself every coulple of seconds. This seems to create so much network traffic that even coding SCORM_objAPI.SetValue("cmi.core.exit", "suspend") when a frame first loads, that the JavaScript code that we try to perform never has time to communicate back to the LMS. So even if you have a 5 minute video, even after the video is done playing, the video player keeps "pinging" back to the streaming server every couple of seconds.

I have also seen some postings that say it is best not to try and do a lot of JavaScript as a slide is loading because of the higher amount of activity which takes at the time of a slide load.


It's only after all of the streaming video slides (which are run back-to-back) are done playing that communications back to the LMS is really re-established (such as sending the Suspend Data). It is at this point that some of our users experience the "Communication Error". If they close out of the pop-up window and restart the course, they are often started back at the first streaming video slide.


There might be a way to "fool" the system, but we have not chosen to use this option. We might be able to put blank or dummy slides in between each video chapter which does NOT include the video player for the streaming video. We did try it at one time, but only left 3 seconds laps between the chapter videos and this did not appear to be enough time for the Suspend data to be transferred. Now that we are starting to use Captivate 9, we might try it again and this time leave up to 10 seconds of "dead air space" between each video chapter to try and let the suspend data be transferred. I am also starting to suspect that the main group of people who are getting hit with this communication error are those that for some reason have a slow internet connection, so possibly giving them 10 seconds between each video might just be enough.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 16, 2015 Nov 16, 2015

Copy link to clipboard

Copied

I suggest you get your server administrator to check the CPU activity on the server when you have a number of users accessing these courses.  It could be that your server is becoming bogged down with requests and is unable to respond in time for your course modules.

This is known as server latency.  How LMS server latency can kill your e-learning | Infosemantics Pty Ltd

Fortunately there are some things you can do about it: How to set up Adobe Captivate e-learning to mimimize load on Learning Management Systems | Infoseman...

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
People's Champ ,
Nov 19, 2015 Nov 19, 2015

Copy link to clipboard

Copied

You could try adding a second or so to the timeline before the video and execute this JavaScript onSlideEnter:

SetBookmark("Slide_1");

Change the argument for each slide, or you could get the Captivate object and concatenate the argument:

var objCp = document.Captivate;

var currentSlide = "Slide_"+objCp.cpInfoCurrentSlide;

SetBookmark(currentSlide);

Captivate write huge suspend_data strings. Captivate stores information about every slide and uses that in conjunction with the lesson_location to determine how the bookmarking works. I would think it's not just about writing the huge amount of data, but also the gathering of the data internally.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources
Help resources