Moodle plugins directory: xAPI Launch Link | Moodle.org
xAPI Launch Link
Activities ::: mod_tincanlaunch
Maintained by David Pesce
Part of set Tin Can.
Launch external xAPI (Tin Can) activities from Moodle and track on a Learning Record Store (LRS). Compatible with Storyline, Captivate, and others!
Latest release:
450 sites
340 downloads
57 fans
Current versions available: 2
This plugin allows the launching of xAPI activities from a Moodle course and tracks the resulting xAPI statements with an external Learning Record Store (LRS). This plugin is compatible with activities implementing the Rustici launch method. This includes content created with Articulate Storyline or Adobe Captivate (among others).
Suggestions, bug reports, code reviews, and contributions are welcome! Please don't add comments or questions here. Use Github instead: https://github.com/davidpesce/moodle-mod_tincanlaunch/issues
Note: In an effort to focus our resources on this project, only supported Moodle and PHP versions will be developed and tested against. That is currently Moodle 3.9, 3.11, 4.0, and 4.1. For PHP that is 7.4, 8.0, and 8.1. As support drops from the providers of these items, we will drop support as well.
Contributors
David Pesce (Lead maintainer)
Andrew Downes: ex-maintainer
Please login to view contributors details and/or to contact them
That's not how registration works; it's just a unique id representing a particular attempt/save.
Andrew
For purposes of interoperbility xAPI statements have a specific defined structure and if you (successfully) add in extra fields that are not supported, then the statements will be rejected by the LRS (if you use a good LRS).
There's probably a better way to do whatever it is you're trying to do. Can you give the full background of what you're trying to achieve?
Andrew
Really metadata data about the user doesn't belong in xAPI statements and is out of scope of xAPI. In a lot of cases, metadata about people is held in things like HR systems and it doesn't make sense for that data to go into the LRS via the application providing the learning experience.
At Watershed LRS we have our own People and Groups API specifically for this kind of data. We use this people and groups information to associate personas into people (e.g. mrdownes@hotmail.com is the same person as andrew.downes@watershedlrs.com), to filter and organize reports, and to manage permissions.
The Moodle-Watershed plugin (https://moodle.org/plugins/report_watershed) facilitates this by enabling you to select standard and custom learner profile fields to turn them into groups in Watershed and assign people to those groups as a regular cron task. The plugin also features SSO from Moodle to Watershed and automatic creation of detailed reports for the most popular Moodle courses. These automatically generated reports are tailored to the modules used within those courses. I'd be very happy to give you a demo on a call if you like, just email andrew.downes@watershedlrs.com. Watershed pricing is here: https://www.watershedlrs.com/product/pricing
For other LRSs, all I can suggest is to develop a similar plugin to integrate with whatever groups functionality that LRS has.
In theory, this is a bad solution because you are associating metadata that really relates to the user to the statement, which is not quite right.
In practice, your solution could work for statements sent directly from Moodle to an LRS because Moodle knows the metadata and can attach it to every statement. There's a bit of extra bloat in the statements, but it should work.
The problems come with statements generated by other applications, such as learning activities outside of Moodle or e-learning courses loaded into Moodle and launched using this launch plugin. Here you have two problems to solve: 1. How do you get Moodle to communicate the user profile data to those applications and 2. How do you modify the applications sending the statements to append this data to their statements. Both of these are complex problems that require custom solutions for each application involved.
The approach we take with the Watershed plugin of sending person metadata to the LRS via a separate mechanism avoids both of these problems. There's no need for other applications to know about the learner other than their identifier because that data does not need to be include in statements. This works not just for your current applications but for unknown future applications as well.
I hope that's helpful. Let me know if you have any further questions.
Andrew
first of all I'd like to thank you for your help!
Due to the lack of time remaining for my internship, we have decided to drop this. I just have one question left. You said my solution (adding a context field and filtering the statements on that) could work. But I read on several sites that it is not possible to filter on the context property. "Groups of statements can be fetched filtered by agent, verb, activity, registration and time period (using ‘since’ and ‘until’). No other filters are possible". This makes me confused. Is it impossible to filter on the context? Or is it possible (but does it require some coding)?
I'm sorry if I've asked you this else where, but there seem to be a multitude of Tin Can plugins on Moodle, and for me this complicates things.
I'm now running a Moodle 3.3 platform and was wondering, will the 3.2 version of your plugin work on 3.3?
If not, do you have any idea when a 3.3 version will be ready?
Many thanks, and take care.