Mobile Player, Tincan, ScormCloud & result connect to server error

I have a pretty basic storyline eLearning module with a graded quiz at the end.  It is published for TinCan, and course completion is based on a graded result slide and is hosted on SCORMCloud.  It works fine on PC, and gets through the content on the Mobile player.  But when I complete the quiz and get to the results slide I get a Connect to server error, which I cannot get out of through retry, only close.  Completion and the interaction results are not recorded from the mobile player.  Anybody have any success with this situation?  If so any suggestions?

44 Replies
Paul Shorr

Peter,

I am hoping you can help direct me to a clearer answer to how to remedy my problem.  I am working with both SCORM Cloud support and with VIra (Case #00318111) to sort this out.  Although SCORM Cloud supports launching the Articulate Mobile Player, it does not seem to be able to register course completion or track results.  At least some user data appears to be saving, since I am prompted to resume the course from Scorm Cloud started on the Mobile Player on my PC and can complete the course there. 

So I have questions for QA or development - are there any edits I need to make to the tincan.xml file to make it work with SCORM Cloud?  Of course, I am working on a project that is expected to launch in a few weeks, and gradually roll out to iPads.  I don't think the client will accept that they cannot use the iPad to complete the course.  And frankly, Storyline HTML5 output on Mobile Safari is still not ready for primetime as far as I can tell.

I am appealing to you so that I can at least get an understanding as to whether the use of the mobile player with SCORM Cloud (or any LMS other than Articulate Online) is something that is on the radar and can be addressed?

Thank you,

Paul

Paul Shorr

Peter,

Thanks so much.  I understand that there must be thousands of important issues and I appreciate Articulate's customer centered approach and the ability to get answers, if not solutions!

I hope you are not too badly affected by the incoming blizzard (I'm in NYC, where it is expected to hit but not as bad as elsewhere.

Paul

Peter Anderson

Hi Paul, 

Our senior engineers have logged the issue with the QA team. As soon as QA receives it, they will attempt to resolve it as quickly as possible, including offering workarounds, if possible, and then they will update us. Not much left for me to do on my end, but I will follow along and update the thread with any information I receive. 

Really sorry for the inconvenience and frustration. 

Jamie Smith

I've discovered the error and attempted to bring it to the attention of Articulate Support. But, to no avail, they've simply referred it to Rustici.

In a previous exchange with Articulate Support, I brought their attention to the fact that when the Mobile Player submits a statement with results, it adds the 'extensions' attribute to the 'object'. This does not occur in the Flash container communications. So, I took it upon myself to submit an identically formatted statement to the Public LRS at Rustici in order to receive a more complete feedback. With the Mobile Player, no feedback is given regarding the error.

Below is the error returned from the Public LRS when sending the Mobile Player statement using their online statement generator.

Notice that the error reflects that the field 'extensions' is not recognized. This only occurs with the Mobile Player since only the Mobile Player sends this field. As a side note, I also reported that the result score is incorrect when sent from the Mobile Player.

Error returned from Tin Can/Rustici Public LRS:

There was a problem communicating with the Learning Record Store. (400 | statement could not be created from given JSON. Error message: Unrecognized field "extensions" (Class RusticiSoftware.ScormContentPlayer.Logic.TinCan.TinCanActivity), not marked as ignorable

 at [Source: java.io.StringReader@1d56ed4; line: 1, column: 73] (through reference chain: RusticiSoftware.ScormContentPlayer.Logic.TinCan.TinCanActivity["extensions"])

 at [Source: java.io.StringReader@15f59a8; line: 24, column: 6])

Jamie Smith

Below is the most recent reply from Support when bringing their attention to this discovered problem...

I've removed the Articulate staff member names to provide some privacy.

Click to show quoted text to see my original forwarded information to Support.

Maybe you can forward my findings and they will find it more useful coming from a staff member.

 

On Feb 15, 2013, at 9:54 PM, "XXXXXXXXX, Articulate Support" <support@articulate.com> wrote:

 

Hi James,

 

Unfortunately, we do not have documentations regarding the questions you raised. Customization or building of LMSs/LRSs falls outside the scope of our support. Our Tin Can API documentation (http://www.articulate.com/tincanapi) is just provided as a courtesy. Any further help or info will need to be sought from Rustici.

 

Just reply to this email if you need more help.

 

Regards,

 

XXXXXXX

Customer Support Engineer

Articulate Support - http://www.articulate.com/support/

 

[collapse]ORIGINAL MESSAGE

 

From: Jamie Smith [james.smith@airtran.com]

Sent: 2/13/2013

To: Articulate Support [support@articulate.com]

CC:  

Subject: Re: Case #00318677: Is there a white paper or some thorough ... [ ref:_00D30Txo._50040P0lEZ:ref ]

 

At this point my main concerns are specific to the Articulate Storyline

reporting with regards to the following:

 

1. Inconsistencies in reporting when using Articulate Mobile player and

the Flash player.

 

2. Use of the 'extensions' attribute within an Articulate reported

statement. (I've only observed this in the Mobile player.) There is no

documentation of how data is reported within the 'extension' attribute and

is entirely specific to the content per Rustici documentations. So, this

is an Articulate functionality that I'd like to know more about so I can

more accurately report on the data. A specific example is

'"extensions":{"tracked":"true","master":"true"}' which was included in a

statement generated for a Result object that is used to report overall

course completion.

 

Thanks again.

 

Jamie Smith

[/collapse]
Jamie Smith

One more side note regarding the use of 'extensions' in the 'object' of a statement. According to the .95 API specs, the 'extensions' attribute must be added to the 'definition' key of the 'object'. When added by the Mobile Player, it is added directly to the 'object' as opposed to the 'definition' of the 'object'. See below and note how an actual statement captured from the Mobile Player adds the 'extensions' attribute to the 'object'. This is rejected by the SCORM Cloud and the Public LRS.

{"verb":"passed","result":{"success":"true","score":{"scaled":1,"raw":24.999999999999996,"max":24.999999999999996,"min":0}},"actor":null,"object":{"id":"5VD6gIH5PJl","extensions":{"tracked":true,"main":"true"}},"context":{"registration":"4ba3c163cd1efd4c14e3a415fa0a3010","contextActivities":{"parent":{"id":"5VD6gIH5PJl"},"grouping":{"id":"http://mytraining.com/content/16/tincan.xml"}}}}

Also, I did try relocating the 'extensions' attribute to the 'definition' of the 'object'. The Public LRS returned  the following error.

There was a problem communicating with the Learning Record Store. (400 | Extension key tracked is not a valid URI)

Statement used that generated the above error:

{

    "actor": {

        "mbox": "mailto:jamie.smith@airtran.com",

        "name": "Jamie Smith",

        "objectType": "Agent"

    },

    "verb": {

        "id": "http://adlnet.gov/expapi/verbs/passed",

        "display": {

            "en-US": "passed"

        }

    },

    "object": {

        "id": "http://www.example.com/tincan/activities/DANzNEYX",

        "objectType": "Activity",

        "definition": {

            "name": {

                "en-US": "Example Activity"

            },

            "description": {

                "en-US": "Example activity definition"

            },"extensions":{"tracked":true,"main":"true"}

        }

    },

"result":{"success":"true","score":{"scaled":1,"raw":24.999999999999996,"max":24.999999999999996,"min":0}}

}

Paul Shorr

Rustici support (ticket #11524) confirms:

"I've spoken with Ben Clark, the developer here who has been working with ADL and the TinCan spec group. I just just wanted to let you know that your finds in the linked Articulate ticket are correct. Extensions must be in the object definition and the key must be a URI. This means it's probably not something we can fix ourselves."

Thanks,

Paul

Paul Shorr

Jamie Smith said:

One more side note regarding the use of 'extensions' in the 'object' of a statement. According to the .95 API specs, the 'extensions' attribute must be added to the 'definition' key of the 'object'. When added by the Mobile Player, it is added directly to the 'object' as opposed to the 'definition' of the 'object'. See below and note how an actual statement captured from the Mobile Player adds the 'extensions' attribute to the 'object'. This is rejected by the SCORM Cloud and the Public LRS.

{"verb":"passed","result":{"success":"true","score":{"scaled":1,"raw":24.999999999999996,"max":24.999999999999996,"min":0}},"actor":null,"object":{"id":"5VD6gIH5PJl","extensions":{"tracked":true,"main":"true"}},"context":{"registration":"4ba3c163cd1efd4c14e3a415fa0a3010","contextActivities":{"parent":{"id":"5VD6gIH5PJl"},"grouping":{"id":"http://mytraining.com/content/16/tincan.xml"}}}}

 

Also, I did try relocating the 'extensions' attribute to the 'definition' of the 'object'. The Public LRS returned  the following error.

 

There was a problem communicating with the Learning Record Store. (400 | Extension key tracked is not a valid URI)

 

Statement used that generated the above error:

{

    "actor": {

        "mbox": "mailto:jamie.smith@airtran.com",

        "name": "Jamie Smith",

        "objectType": "Agent"

    },

    "verb": {

        "id": "http://adlnet.gov/expapi/verbs/passed",

        "display": {

            "en-US": "passed"

        }

    },

    "object": {

        "id": "http://www.example.com/tincan/activities/DANzNEYX",

        "objectType": "Activity",

        "definition": {

            "name": {

                "en-US": "Example Activity"

            },

            "description": {

                "en-US": "Example activity definition"

            },"extensions":{"tracked":true,"main":"true"}

        }

    },

"result":{"success":"true","score":{"scaled":1,"raw":24.999999999999996,"max":24.999999999999996,"min":0}}

}


Jamie,

I've asked Rustici support to provide sample code for adding the extension to the object definition.  Note that the error messge states that "the extension key tracked is not a valid URI", and Rustici support says "Extensions must be in the object definition and the key must be a URI."  Perhaps with the correct formatting of the tincan.xml file, SCORM Cloud will accept the statement as written by the mobile player.

I need a solution pretty soon as well...

Thanks,

Paul