Forum Discussion
Retrieve LMS User Name as Variable
I know you can have a user fill in a text box with their name and then later use that variable for personalization. What we would like to do is programmatically retrieve the user name from the LMS. Is there a way to set a variable with data from the LMS when the course is loaded instead of having the user enter their name?
Thx
- RobertDenteCommunity Member
Steve Flowers said:
Haha, that's what I get for multi-tasking. Phil's example demonstrates it the rearrangement. lmsAPI.GetStudentName() and SCORM_GetStudentName() should return identical values.
var player = GetPlayer();
var myName = lmsAPI.GetStudentName();
var array = myName.split(',');
var newName = array[1] + ' ' + array[0];
player.SetVar("newName", newName);
I have this working from the SCORM cloud and the same code does not work in the ArticulateOnline environment. Thoughts? - SteveFlowersCommunity Member
Articulate Online uses xAPI not SCORM. Getting the username through the AO implementation is a little more challenging. You can grab a username from AO using DOM in JavaScript to grab the username displayed on the screen. However, this is rarely usable in a Firstname Lastname format. Depending on what you're trying to do, you may be out of luck.
Consider engaging support with a request. Maybe there's something in AO that you can employ that I'm not aware of.
- robcondonCommunity Member
Are the only options lmsAPI.GetStudentName(); and lmsAPI.GetStudentID(); . Is it possible to pull any other fields from Moodle like if you had a custom company field set-up. Has anyone managed to pull any other data from an LMS?
- AnnetteDowningCommunity Member
You’ll need a variable to hold the username; I choose “username”. I set the default value to “Guest” just in case anything went wrong.
Then set up a trigger to run the JavaScript that will fetch the name and stuff it in our variable. I am using a Slide Trigger set to run when the timeline starts.
And now put the following code in the Javascript section of your trigger.
//grab the LMS object
var lmsAPI = parent
//ask the LMS object to get the name
var rawName = lmsAPI.GetStudentName();
//the name comes very formal "Last, First"
//we will fix that by sticking the name into an array
var nameArray = rawName.split(",")
//then we save it the other way round "First Last"
var niceName = nameArray[1] +" "+nameArray[0];
//now we grab the Articulate player
var p = GetPlayer();
//finally we set our Articulate var to our username
p.SetVar("username",niceName); - JulioOrdonezCommunity Member
Hi all,
Has anyone tried using this code to get the student's name from SumTotal LMS? I used it for one of my clients that works with SumTotal, but they are telling me they are not getting the name in the certificates.
I've tried searching info on google, but no success.
Thanks!
- BrianAllenCommunity Member
Julio, we use SumTotal LMS and the code is working great for us. PM me with your email address and I'll forward you a sample .story file we've tested.
- StephanieLongCommunity Member
Brian, I would love a copy of this as well... Any way that you can send it to me? I am at my wits end. Thanks!
- OrlaClarkeCommunity Member
Seriously guys you really are the heros - I got the elearn to read the students name into the feedback for their results using the lmsAPI functions, brilliant !
Thanks
- BrianAllenCommunity Member
Orla, I agree, I absolutely love all of the creative and helpful ideas in this community. Learn something new just about every day here!
- rexmorCommunity MemberYou're the man Phil. Great Job. Thanks.
Phil Mayor said:
There is a slide in this that does just that
- SaralSharmaCommunity Member
Hi guys,
I used the javascript code given in this forum and it works fine for me.
The problem is I also got bookmark feature "Prompt to resume on presentation restart'' which gets stop as soon as I use this javascript code to get the Learner's name.
Is there any way that I can have both features in my course?
I used following code for user name:
var player = GetPlayer();
var myName = lmsAPI.GetStudentName();
var array = myName.split(',');
var newName = array[1] + ' ' + array[0];
player.SetVar("newName", newName);