Register for InstructureCon25 • Passes include access to all sessions, the expo hall, entertainment and networking events, meals, and extraterrestrial encounters.
Found this content helpful? Log in or sign up to leave a like!
Hello,
I am trying to integrate an external app with Canvas via LTI. I was able to quickly use LTI to handle teacher assignment creation and student assignment launches. However, I'm stumped on how a teacher could launch my external app in order to view a particular assignment/student submission. The closest I've come is passing my LTI URL back to the outcomes URL (via 'ltiLaunchUrl') when a student completes an assignment. This prompts the Speed Grader to launch an LTI request to my app when a student session is selected. However, this LTI request does not contain the student id, assignment ID or the 'lis_result_sourcedid', so my app is unable to determine which student is being graded.
Am I just looking in the wrong place? Is there some way to get Canvas to launch my external app so that an educator can review a particular student assignment submission? Any feedback much appreciated!
Thank you,
Adam
@adamrabung I don't have an exact solution for you.
I have developed a custom grading LTI app to assist with grading on a tablet.
It runs independently from the Canvas gradebook, and feeds the grades back to the Canvas gradebook.
The app scrolls through assignments / students allowing the instructor to quickly find what they are looking for.
With your app launched, would it be acceptable to have the instructor select the assignment / student of interest from within your LTI app? One advantage of this is the instructor could review/grade all students for the assignment without having to relaunch your LTI for every submission.
I'd be interested to learn more about what you're doing, please post the solution you end up with.
Thank you, good idea, I might just do that!
Hi Adam --
I think the idea is that your tool would pass a user/assignment-specific launch URL back to the LMS when the student completes the assignment; Canvas will associate that with the submission and when the instructor is grading that submission in SpeedGrader it will launch that specific URL.
Hopefully that makes sense!
--Colin
Hi,
I could do that, but the URL I provided would need to be authenticated. It seems like I would have to re-invent LTI in order to form this custom GET url, right? I don't think I can correctly generate some of those OAuth fields w/o Canvas private key.
If the 'ltiLaunchUrl' could include 'lis_result_sourcedid' for the session being graded, I could uniquely identify which session is being graded in the "SpeedGrader", all while re-using LTI/OAuth security provisions.
Thank you,
Adam
If you have passed the URL back as a Canvas "LTI Launch URL"
<resultData>
<ltiLaunchUrl>https://some.launch.ur/launch?lti_submission_id=42</ltiLaunchUrl>
</resultData>
Then in the SpeedGrader the URL will be launched as an LTI tool - so its done as a POST with all the OAuth stuff.
If you add the identifier (userid, lis_result_sourcedid, etc.) you need to the end of your tool's URL as a query string it is still launched with a POST, not a GET. Eg.,
is still POSTed to.
Aha! I had no idea. I will give that a try - thank you!
If you want to see an example of this working, the test tool provider at https://lti.netkno.nz/tp
supports the Canvas outcomes extensions. It will show you the launch parameters it receives by type (required, recommended, etc.) and the outcomes XML sent/received.
You can use the consumer key / secret combination: myschool.edu / letmein
Good stuff pklove thanks for posting this. Adding it to my notes.
To interact with Panda Bot in the Instructure Community, you need to sign up or log in:
Sign In