Celebrate Excellence in Education: Nominate Outstanding Educators by April 15!
Found this content helpful? Log in or sign up to leave a like!
I'm sending custom launch parameters when deep linking inside Canvas assignments. Custom launch parameters are described here. A typical HTTP Post request to register a deep link looks like this:
{
"https://purl.imsglobal.org/spec/lti-dl/claim/content_items": [
{
"type": "ltiResourceLink",
"title": "Assessment Title",
"url": "https://lti-tool.com/",
"custom": {
"my_course_id": "custom-course-id",
"my_exercise_id": "custom-exercise-id"
}
}
]
}
Notice the custom params `my_course_id` and `my_exercise_id`. This usually works well and Canvas includes the following payload in the LTI Launch:
{
"https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiResourceLinkRequest",
"https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
"https://purl.imsglobal.org/spec/lti/claim/resource_link": {
"id": "eb21827c-365a-4f37-a9e3-5a74d182b225",
"description": "",
"title": "Assessment Title",
"validation_context": null,
"errors": {
"errors": {}
}
},
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"my_course_id": "custom-course-id",
"my_exercise_id": "custom-exercise-id"
}
}
I recently started encountering a problem where Canvas would send the wrong custom parameters during LTI Launch. This seems related to courses being copied in Canvas. Here is a simplified example:
1) Canvas Course A gets created and Assignment 123 gets deep linked with custom parameters
2) Canvas Course B gets created by copying Canvas Course A
3) The LTI configuration in Assignment 123 gets copied by default, so in order to have different custom parameters in Canvas Course B's assignment, the instructor re-registers the deep link in Canvas Course B's Assignment 123 with new custom parameters.
4) At first it appears that Canvas Course B's Assignment 123 launches with the new custom parameters, but then after a day or so it reverts back to Canvas Course A's Assignment 123's custom parameters.
5) The instructor corrects this by re-registering the deep link, but the problem continues to return.
Has anyone experienced this? Is there any way to correct this so that copied Canvas courses have no memory of the old custom parameters?
We've seen this problem go as far as 2 levels of copy. For example, imaging Canvas Course B gets copied to Canvas Course C. After changing Canvas Course C's Assignment 123's custom parameters, it still reverts back to Canvas Course A's custom parameters.
I've been able to consistently reproduce this error and documented it here:
https://docs.google.com/document/d/17SMDLTaNq_Jhmf2Xp9a7pzhVPzcyjHS6L8Ibg8Rxj9k/edit
TLDR: If you copy a course in Canvas, the deep links in the assignments are copied along with it. If you set up custom params, those custom params are also copied along with it. If you modify those custom params in the newly copied course, they will save properly. However, if you import any content into the newly copied course (even if the import has nothing to do with assignments), then those assignment custom params will revert back to their previous values. I tested this by importing announcements and shockingly it overwrote assignment custom params.
I filed an issue with Instructure and the case number is 10635777. As far as I'm aware, they're not prioritizing a fix for this.
What's interesting is that LTI Launch URL with custom query strings is not impacted by this bug, so using query strings instead of custom params is the workaround.
To participate in the Instructure Community, you need to sign up or log in:
Sign In