cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Community Member

Unable to pass custom data in LTI Launch request. What is the correct way?

Jump to solution

Hi everyone,

I am trying to pass custom data for a deep linking assignment placement. The custom data is set in the lti deep linking response, as part of the lti resource link item. Then, it needs to be available on the https://purl.imsglobal.org/spec/lti/claim/custom claim in the lti launch request to the tool.

Here is an example of what I have in the deep linking response when the assignment gets created:

...

"https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
  "https://purl.imsglobal.org/spec/lti-dl/claim/content_items": [
    {
      "type": "ltiResourceLink",
      "title": "Test assignment",
      "text": "A test assignment",
      "url": "somelink...",
      "lineItem": {
        "scoreMaximum": "10",
        "label": "Assignment",
        "resourceId": "1234"
      },
      "window": {
        "targetName": "MyTool_1592687225123_1234",
        "windowFeatures": "menubar=yes,location=yes,status=yes,resizable=yes,scrollbars=no"
      },
      "iframe": {
        "width": 800,
        "height": 600
      },
      "custom": {
        "assignment_type": "specific_assignment_type",
        "assignment_id": "1234_5678"
      }
    }
  ]

Here is the problem: when I try to access the https://purl.imsglobal.org/spec/lti/claim/custom property in the lti launch request message, it is empty. It seems like my custom data isn't being passed in the launch request.

Does anyone know what I am doing wrong? Is this the correct way to pass custom data to the launch or is it supposed to be done differently?

I'd really appreciate any help on this.

Labels (1)
1 Solution

Accepted Solutions
Highlighted
Community Member

The workaround for this was to simply pass the data in the query string. E.g.

{
      "type": "ltiResourceLink",
      "title": "Test assignment",
      "text": "A test assignment",
      "url": "myResourceLink?assignment_id=1234567",
      "lineItem": {
        "scoreMaximum": "10",
        "label": "Assignment",
        "resourceId": "1234"
},

....

It seems that Canvas will only allow passing variable substitution values as custom data in the launch. This must be configured in the tool settings and cannot be modified by the tool itself in the deep link response.

View solution in original post

0 Kudos
2 Replies
Highlighted
Community Member

The workaround for this was to simply pass the data in the query string. E.g.

{
      "type": "ltiResourceLink",
      "title": "Test assignment",
      "text": "A test assignment",
      "url": "myResourceLink?assignment_id=1234567",
      "lineItem": {
        "scoreMaximum": "10",
        "label": "Assignment",
        "resourceId": "1234"
},

....

It seems that Canvas will only allow passing variable substitution values as custom data in the launch. This must be configured in the tool settings and cannot be modified by the tool itself in the deep link response.

View solution in original post

0 Kudos
Highlighted
Instructure
Instructure

Oloff, thanks for posting the work around. For Oloff, and others who find this post, supporting custom parameters passed in deep linking messages is planned work and has been for some time. We hope to start work for this in the coming months.