I would like to assign a quiz that is hosted by an external tool and connected to Canvas through Learning Tools Interoperability (LTI). However, the placement for the assignment tool is failing to direct me to the external tool's deep linking page. Instead, it is taking me to the default landing page inside my external tool. I believe the source of the problem is that the placement for the assignment tool is sending the wrong lti_message_type. It should issue the value ContentItemSelectionRequest but is instead issuing basic-lti-launch-request as its value.
I am following these instructions:
Could the problem be that my external tool uses the same URI for both message types? My external tool reads the lti_message_type and if its value is ContentItemSelectionRequest it directs the user to the deep link page. If the value is basic-lti-launch-request the tool directs the user to the requested resource, which in this case is the default landing page. Regardless, Canvas should issue ContentItemSelectionRequest as the lti_message_type for this placement.
Is there a configuration setting I can control that would force the placement to issue the correct lti_message_type?
Thanks in advance for your help.
Huzzah! I have discovered that you must remove from your XML configuration any references to the "resource_selection" setting that has been deprecated. Apparently Canvas still tries to read the "resource_selection" section in your XML configuration and this causes problems if you want to use the newer "assignment_selection" section. These two sections cannot be listed at the same time in your set of lticm options for Canvas. After I removed the "resource_selection" section from my XML configuration Canvas started using the option values specified in the "assignment_selection" section. Now when I click on my third party link in the assignment placement Canvas issues the appropriate value of "ContentItemSelectionRequest" in the "lti_message_type" attribute.
I am one step closer to getting the assignment placement tool to work. I can launch an LTI content item selection request and pick a remote resource. Unfortunately, upon returning from my site Canvas immediately chokes on my JSON response and issues the following error:
undefined method `content_items' for #<IMS::LTI::Models::Messages::Message:0x00:
It looks like Canvas doesn't like my JSON response from the content item selection request. I will have to troubleshoot this further in another thread. At least the mystery of why Canvas wasn't issuing the correct value in the "lti_message_type" attribute has been solved.