How does one incorporate TinCan Api with Articulate?

Mar 04, 2014

I've read through every single page on this site about TinCan, but nothing gets into any sort of specifics.

This is where I'm right now..

I have a published Articulate Storyline project that was published to incorporate the TinCanApi under its reporting and tracking options.

I uploaded the test to my host ( which is S3 ), and then I load in within my LMS ( a website I built ). When my test opens up, it returns an error :

```

Unable to connect to the server.

Please verify you can connect to the internet and relaunch the course.

Status Code: 405

```

Which I believe is coming from :

state?method=GET 

From my understanding, I think what is happening here is that the Articulate file itself doesn't have a specified URL location to submit this information to. And I can't seem to find anything about this in your documentation anywhere. Essentially, where do I designate the URL that will collect/provide all information relevant to the TinCan API? Or more specifically, how do I designate the URL from within TinCan API so that it directors to my LMS that waiting to hear responses from TinCan?

Or perhaps I'm doing this wrong? If so what do I need to do in order make it so that TinCan ( in general ) sends some sort of workable response to my App so that I can record the information.

Also I have no interest in using SCORM. I was told that this can be accomplished without SCORM, and I have my own LMS I would like to take care of this.

Thanks!

6 Replies
Trip Levine

It's only two solutions are "You're not connected to the internet", and "You're not using a standard browser". I've definitely made sure those two were accurate.  

Thanks for the recommendation on testing on SCORM. It does work within SCORM just fine.

All the TinCan Statements are going to / rather than to my designated endpoint. This is why this error is occuring.

I need them to go to an absolute URL that would be my app. I notice that in your /tincanAPI tutorial, you provide this information which can be written into the tincan.xml file.

http://my.lms.com/TCActivityProvider/story.html

?endpoint=http://my.lms.com/lrs/endpoint/

&auth=OjFjMGY4NTYxNzUwOGI4YWY0NjFkNzU5MWUxMzE1ZGQ1

&actor={"name": ["First Last"], "mbox": ["mailto:firstlast@mycompany.com"]}

&activity_id=61XkSYC1ht2_course_id

&registration=760e3480-ba55-4991-94b0-01820dbd23a2

And you even say ..

Articulate content will report statements to the Tin Can endpoint as described under the section Cross Origin Requests in Internet Explorer in theTin Can API. To summarize, if the endpoint is http://mycompany.com/TCAPI/endpoint/, then all statements will be posted tohttp://mycompany.com/TCAPI/endpoint/statements?method=PUT. Any required headers will be added to the request data as form parameters delimited by “&.” The JSON content will also be encoded and passed in the parameter named "content." All statements will be reported in this way regardless of browser or platform.

But.. changing the endpoint in the <launch> node in the tincan.xml file does not change where the JS/JSON requests are directed. The URL always goes here to the root.

Here's some failing examples :

/statements/?method=PUT

state?method=GET

See how they're not appending after my designated endpoint "http://my.lms.com/lrs/endpoint/" ?

It should look like this :

http://my.lms.com/lrs/endpoint/statements/?method=PUT

http://my.lms.com/lrs/endpoint/state?method=GET

Any clarity on this issue would be greatly appreciated! 

Trip Levine

Hey Ashley,

  As far as I'm aware, this isn't TinCan. TinCan is working fine. The tincan.xml file produced by articulate and the file that from within Articulate's flash files that activates story.js does not properly adopt the "endpoint" as *clearly* stated in your documentation about how Articulate operates.

Your documentation says :

Articulate content will report statements to the Tin Can endpoint as described under the section Cross Origin Requests in Internet Explorer in theTin Can API. To summarize, if the endpoint is http://mycompany.com/TCAPI/endpoint/, then all statements will be posted tohttp://mycompany.com/TCAPI/endpoint/statements?method=PUT. Any required headers will be added to the request data as form parameters delimited by “&.” The JSON content will also be encoded and passed in the parameter named "content." All statements will be reported in this way regardless of browser or platform.

Maybe you should remove this section from your documentation, and any references that your app is compliant with TinCan?

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