Help on Articulate Integration for a Web Developer

Aug 24, 2015

Hi. Apologies in advance for the long post, I had problems posting this so I think I have to try and break up my full text into the comments.

So I'm a developer with a small digital agency and one of our clients asked us to research the possibility of integrating learning modules created using Articulate Storyline 2 into their web site, where after the user completes the quiz, then the site can record/report details about the user's participation/score.

I've been testing with Storyline 2 and reading forums and API's and I think it should be possible via the Tin Can API. From what I understand, with the correct Publish settings and embedding configuration, a course made by Storyline 2 can be configured to call an external API (setup to the Tin Can specification) on interaction and/or completion , passing it the results data in the Tin Can format. 

However, I've failed to create a working proof of concept so I can definitely say to the client whether it will possible. 

I was hoping someone here could give me some additional info, and maybe some directions/pointers on where I'm going wrong.

More in comments....

 

9 Replies
Nelson Cheng

Here are the key articles/post that I've been working from to try and figure this out: 

https://community.articulate.com/series/articulate-storyline-2/articles/publishing-a-course-for-lms#reporting (On how to publish your course with the Tin Can API enabled to integrate with an LMS)

https://community.articulate.com/discussions/developer-sdks-and-apis/articulate-and-enterprise-integration (This is basically my question, only not for a dev. Dennis Hall gives some good info on what to do embed your exported module into a site such that it should be able to communicate to an external system in the Tin Can data format)

https://en-au.articulate.com/tincanapi/?_ga=1.26335613.1979306179.1439851582 (Where the 'Launching Public Content' and 'Communication' sections essentially tell us how the module should be set and work to communicate with the external system)

http://scorm.com/wp-content/assets/tincandocs/TinCanAPI.pdf 

Nelson Cheng

Sorry for the chain or replies, I've had to break it out further!

Here are some details of my setup, I hope this gives enough information of what I've tried.

  • I'm using a Trial version of Storyline 2, and I've published a basic course, with essentially 1 multi-choice question and a results slide
  • I've also created a test 'statements' RESTful API function (http://local.api.com/public/statements) in a local test web api (built in .NET). It's a POST method function, taking in a string param called method (as described in the "Cross Origin Requests" section of the Tin Can API"). This function works for me locally, I tested it by using the Google REST console app
  • I've published my test course with the following settings:
    • Publish to LMS. Output Options as publish to Tin Can API
    • I've set the Reporting Launch URL as my local API location "http://local.api.com/public/" (I'm not sure if this is supposed to be the external API location, or the web location that the story.html file will be hosted at)?
    • I've noted down the Reporting Identifier value (to use later)
    • I've set the "Track using quiz result" option under Tracking to my Result slide
  • I've attached to this a basic html page (to this reply and the original post) which I tried (I obscured a few details in this uploaded version). It just has an iframe in it, where I embedded a link to the local version of my course, and the details are set in the querystring of the src
    • endpoint set to "http://local.api.com/public" (url encoded)
    • actor personalized to me
    • activity_id set to the identity as set when I published
    • I didn't change auth or registration. I don't really understand what these fields are used for

Basically, by running my page2.html in a browser, I can do my course, embedded in a page. But doing/completing the course does not hit/call my local Rest API function. When I run a http reporting software (Fiddler4) I don't see any attempt to call the http://local.api.com/public api (to hit statements or otherwise).

Continued in one last reply

Nelson Cheng

So basically I'd like to know the following:

  • am I on the right track? Is what I described possible?
  • If so, am I attempting to set it up correctly?
  • What should I put in the Launch Url when I publish? API location (same as endpoint)? or should it be the web location where the course will be hosted at? or is it something else
  • Am I correct to assume that if the course is published correctly, it should attempt to call the external API as described in the endpoint querystring location when the user submits each question slide in the course, and also when they reach the results slide?
  • Can anyone see if I'm doing wrong? Is it because I created the course in a Trial version of Storyline 2, that it doesn't seem to communicate via Tin Can?
  • What are the auth and registration querystring values used for and what should I set them to?

Once again, apologies for the huge chain of replies. I tried to post this all in one huge post and the forum didn't like it. Thanks for reading!

Nelson Cheng

Hi again. Just to add, I'm still trying to get it to work, still with no success. Thought I'd keep you updated with things I tried.

I tried to actually host my page2.html file (renamed articulate-test.html, attached) in a local website via IIS. I also host my course file in the local website at /testnew3/story_html5.html (local website being http://local.test.com)

I did this so I could set the Launch URL when I publish to http://local.test.com/testnew3/story_html5.html, which is an actual URL I can use locally to load my course in a browser.

Unfortunately, still no luck. 

Nelson Cheng

Hi All,

If you've made it down here, thanks a lot for reading. The good news is that I've successfully made it! Sort of...

I got the TinCan/External LMS communication to work by using my above method of hosting the page with iframe and course files in a local web site, and setting my Launch Url on Publish to the http location of the course file. However, this only works for me with the flash based story.html/story.swf version. I can't get it to work with the html5 version. I attempted to publish the same course with an updated Launch Url as pointing to the story_html5.html file, and updated my iframe src to the story_html5.html url, but when I run the course from my page, it doesn't call the service as the flash based one does.

So my questions now are:

  • is the Tin Can / LMS integration feature supported in the html 5 version of published courses from Storyline 2?
  • If so, do I need to do anything extra to enable this feature in the html5 published version, or is it a bug that this doesn't work for me?
  • If this is a bug/outstanding feature, can we expect a bug fix/update in the future that addresses this?

Thanks, apologies again for the loooong read. I hope at least this might prove to be a help to anyone in the future trying to integrate an Articulate story into their own web site!

Brian Miller

Glad you got something working. I'll try to provide a little background. Note that some of the links you were using seem to be outdated.

The Tin Can API (xAPI) is currently at 1.0.x and you were linking to a forum post that links to our site's copy of the 0.95 specification. A fair amount has changed and it'd be best if you looked at t
he current specification for any new implementation. It is here:

https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md

As far as the package and launch stuff goes for Tin Can packages produced by Storyline, you'll want to see the launch guidelines that were somewhat made available in one of the posts, those are officially here:

https://github.com/RusticiSoftware/launch/blob/master/lms_lrs.md

This document covers what the "auth" and "registration" parameters are. Specifically "auth" is an authorization value that is provided to the course so that it can be authenticated to the LRS when communicating, as generally you want your LRS to minimally implement basic authentication. The registration is a unique value generally used to identify this instance (or session) of the actor interacting with a piece of content (the activity). The 'registration' value is included as part of the context of a Tin Can statement (see http://tincanapi.com/deep-dive-context/ for more).

For your endpoint, it is what an LRS implementation provides, and the statements resource is just a fraction of what is necessary to implement a) to be a spec conformant LRS and b) to get Storyline courses to work. Minimally you'll also need the State API for document storage, but should really consider using an existing LRS implementation as there are several good ones and creating an LRS from scratch is a significant undertaking. See

https://tincanapi.com/building-a-learning-record-store/

As a next step I'd recommend signing up for a free trial account at our Cloud hosted platform and testing your Storyline package there. Our Cloud account provides a free sandbox for testing e-learning content and integrates directly with an LRS already available from that account. You'll be able to import, launch, and record Tin Can packages produced by Storyline. Additionally our product provides an API that allows developers to integrate it directly into their website to provide that base level of functionality out of the box, which also includes SCORM and AICC compatibility so that you can concentrate on your users not e-learning standards.

Additionally our site at http://tincanapi.com has a lot more info on all of these topics.

If you have additional questions I'll try to watch for comments here, or you can get more direct assistance with most of these topics by e-mailing support@tincanapi.com.

Brian

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