Sending Built-In Storyline 360 Variables to LRS

I've built a bug-reporting slide layer that will be repeated across each slide in the course. It communicates name, email and problem description from input boxes to an LRS via xAPI, but I'd like to be able to send a javascript concatenation of the system variables as

SceneNumber . SlideNumber + SlideTitle (i.e. "2.6 Chapter Summary")

to be able to map their comments back to exactly where they were within the course when they encountered the issue. I can get these variables to appear on the slide as I want them, but does anyone know how to get them to be concatenated into a separate project variable?

5 Replies
Jeff Forrer

Hello, pretty cool, I am unable make a JS suggestion for you here, but curious as to what Review 360 does not provide that you are needing? 

I assume you want a more robust system that will enable you to take control of all of the data with your LRS to manage your comments?

We sometimes export the Review comments to an online Excel doc.

Tamika Base

Hi Jeff, 

This "bug report" layer would be in the finished course, not just in the initial drafts. So Review 360 seems like a great tool for reviewing (which has been a sore spot for IDs for a long time), but we're looking for something to exist in production.

The courses we're managing are for a very robust piece of internal software that is constantly changing. We need a way to allow students to self-report when there are any important discrepancies in the training we've missed because keeping up with all the changes as they roll out is not realistic. 

So while I have the name, email and bug write-up communicating with the LRS, there isn't an easy way to map back to where the comment came from. I could do this by hand, (on entry to each slide, have a custom variable change to "x.x Description") but doing this as static text would make for a lot of work if slides are added/moved/subtracted. Near as I can tell, referencing the javascript would be the best, future-proof way to get this information.

Tamika Base


  1. First, set up custom variables for SceneNumber and SlideNumber (as a number variables, this is key and the part that I got stuck on), and SlideTitle and SlideInfo (as text variables).
  2. Then, in your Trigger panel on the top level master slide so that it is executed on all slides, set each custom variable value to be the same as the built in variable value when the timeline starts. 
  3. Add a Execute JavaScript when timeline starts trigger AFTER the above items, and put in the following: 
    var player = GetPlayer();
    var slideinfo = player.GetVar("SlideInfo");
    var scenenumber = player.GetVar("SceneNumber");
    var slidenumber = player.GetVar("SlideNumber");
    var slidename = player.GetVar("SlideTitle");
    player.SetVar("SlideInfo", scenenumber + "." + slidenumber + " " + slidename);
    What this does is sets each course variable as a javascript variable so it can be worked with, then concatenates them as, for example, "1.1 My Slide" and spits them into a separate variable (SlideTitle) that can be called back into the course or passed to the LRS!
  4. Bonus: the CourseTitle variable call in the middle sets a custom variable in course with the course name by pulling it in from the exported html file. - I wanted to be able to call that on the master slide as well. But if you don't want/need that, feel free to delete it.