Learning Tool Ineroperability (LTI)
This platform supports exposing topics to LTI consumers.
Currently we support version 1.1 and 1.2 and implemented it with this provider recipe and the implementation guide
Authorization
First a LTI tool configuration needs to be created to generate a consumer key and shared secret.
These credentials are used for a client credential authorization flow
Basic Launch Request
A launch request can be send to our lti launch endpoint: https://ozone-backend.herokuapp.com/lti/launch/:topic_id
topic_id
is the ID of a standard approved topic to link to
Aside from the oauth parameters we require the following for a basic launch request:
resource_link_id
: Opaque unique identifier that the TC guarantees will be unique within the TC for every placement of the link.user_id
: Id of the user for this tool consumerlti_message_type
:basic-lti-launch
is the only type we supportlti_version
:LTI-1p0
required, but we don't actually do any checks
Optionally we also accept these parameters:
lis_person_name_full
: Full name of the userlis_person_name_family
: Last name of the userlis_person_name_given
: First name of the userlis_person_contact_email_primary
: Email of the user, when this is missing a dummy email address is setlaunch_presentation_return_url
: We return the user to this url when something goes wrong.lis_result_sourcedid
: External outcome idlis_outcome_service_url
: External outcome service url
What happens next?
When a launch request is successful a user is created or updated based on the user id and lis variables. These users are created within the company the LTI configuration is registered to.
Next this user is redirected directly to the selected topic in the client where the content can be consumed. The topic close button is hidden or redirects to the launch_presentation_return_url if present.
The user can theoretically navigate through the rest of the application and see all other standard approved topics.
Outcomes
We store outcomes in a Lti::Participation
Each ExternalUser
can have multiple Lti::Participation
records.
Each Participation
can have multiple Lti::Participation
records.
There can be only one link between an ExternalUser
and a Participation
through a Lti::Participation
.
On a LTI launch an authentication token is created with resource_link_id
, lis_result_sourcedid
and lis_outcome_service_url
in the data.
When this token is used then:
- We create a started participation for the user and resource_link_id (topic)
- If a pending participation already exists it is started.
- We create a
Lti::Participation
between the external user and the participation.
When the final of a topic is already completed we send the outcome to the lis_outcome_service_url
for the Lti::Participation
immediately (and asynchrously).
Whenever a learner completes a final we send the outcome to the lis_outcome_service_url
of each Lti::Participation
, if any, asynchronously
Testing LTI
With Saltire:
- Create a LTI Tool configuration
- Visit Saltire
- Go to Test Tool Consumer
- Click Services Offered
- Disable everyting
- Enable Basic Outcomes
- Click "Tool Provider" and fill in the LTI Tool configuration
- Save it
- Connect
- Finish the final chapter
- Click "view" d
- Click gradebook
Alternatively there are testing tools suchs as this one from Foliotek