I'm using LTI specification to integration one of our tools with the Blackboard 9.1. Everything is successful. I'm able to register my tool as LTI Tool Provider, launch the tool within Blackboard and access the features of my tool.
When the tool is launched, Blackboard passes course details (ID, title, resource Id, description, etc) and user details (ID, roles, etc) to the external tool through POST request. But it doesn't pass the Course Menu ID (the ID of the sections on the left navigation panel on each course) is not passed. I need to know this Course Menu ID.
Since this is not passed through LTI launch request, I was looking at the Context Passing technique. But this variable is not found the developer's guide. Is there anyway we could pass this ID as a variable to the external tool either through Context Passing or any other technique?
Ok, so in fact, i suspect what you actually need is the ID of the parent content item containing the link used to launch, rather than an ID from the course menu.
But, in any case, I'm not this is easily obtained either, though you might like to try something like "@X@course.parent_pk_string@X". Alternatively, you may find the resource_link_id gives you the content ID for the link which has been launched (or you can set up a custom parameter to do so using "@X@content.id@X@"); this could be then used by your code which inserts the link into Blackboard to look up the parent ID.
If you (or your organisation) are a member of IMS then you may like to participate in the current discussion about an LTI extension to support this use case. Even if you are not, you could make a case by adding a post to the forum on the developers.imsglobal.org site which could be included in the debate.
If none of these work, then we're back to using a manually added custom parameter, but this is risky if the item is moved to another page as it will need updating to point to the new parent.
I guess my first question would be: what do you expect your tool to do with the Course Menu ID? Could an alternative course ID be used instead? Is the tool using non-LTI functionality to connect back to Learn 9?
I don't think there is any way to automatically pass the Course Menu ID via an LTI launch. I think one reason for this is that the concept of a Course Menu ID is not generic to all LMSs. The closest IDs which may be passed are contained in the context_id and resource_link_id parameters; the latter identifies the link which the user clicked to perform the launch (typically a content item, or tool); the latter identifies the course (such as the database key for the course or its Batch UID).
The only way I can think of passing the Course Menu ID is as an LTI custom parameter, but this would need to be entered manually when the link is set up within the course.
Once I have a better understanding of your use case I will look at whether this might be something which would should be added to the functionality available in my Basic LTI Building Block for Learn 9.
Thanks, Mr. Kroner.
When I tried to use this I noticed that I couldn't use the Context Passing syntax in the LTI launch URL. There should be something else that we need to pass this Course Menu ID through Basic LTI launch data itself.
When I created a link in my Bb dev server, I specified the following custom parameter
and see in the resulting BLTI launch a custom parameter
<input type="hidden" name="custom_course" value="i-test-1"> - which corresponds to the course id of my test course.
You'll need to be on 9.1 SP6 and above for this to work, though.
George, I don't think that the value returned by @X@course.id@X@ is the same as the Course Menu Id which is what Raj appears to be wanting to pass.
Do you know if this facility (for parsing template variables in the values of LTI custom parameters) is documented anywhere? I can't find it. Nor can I find anything about the "Manage Placements" functionality for Basic LTI Tool Providers, so perhaps I am looking in the wrong places.
Does Learn 9 also support any of the Custom Parameter Substitution variables from the LTI spec (for example, $CourseSection.sourcedId)?
Ah yes, Stephen, I believe you are correct. I unfortunately can't think of a good way to get at that either.
You're right on the target. You exactly got the points that I'm experiencing. I'm sure you're the expert in this.
Regarding your first question, Yes, I need the Course Menu ID after the LTI launch is complete to post a content URL back to the Blackboard using Blackboard web services (non-LTI functionality).
Yes, I got the context_id, which is the id of the course itself, and resource_link_id, which is the id of the link clicked, as you pointed out.
I need to post the URL into the Course Menu within which the link was clicked to launch my tool. For example, you're on "Information" Course Menu of the English course and you're clicking "Show Me" link, which is an LTI tool provider link, (At the top you would see like this "English > Information > Show Me"). The system launches the tool within the same section and users finishes the tool. At the end when the users done with the tool, I need to post an URL back to the same Course Menu, in this case "Information", of the same Course, English.
I have the Course (English) ID , missing this Course Menu (Information) ID.
Please pass the information how I could use LTI custom parameter to get this.
Thanks for the clarification. It sounds like what you need to use is the launch_presentation_return_url parameter which gives you a URL to which you can redirect a user to return them to the tool consumer (LMS). This URL should take the user back to the page they came from - if you use my Basic LTI Building Block it does (unless the tool was opened in a new window). There is no need to use custom parameters for this; it is all part of the LTI spec.
I don’t need to redirect them back to the same page. I’m not referring to the return URL. I have to post a URL pointing to the material (link to our site) that they selected through the LTI launch. The functionality is like this.
- The user visits our tool through LTI launch
- She selects one or more materials from our site.
- She saves.
- We need to send the links (URLs) to those selected materials back to Blackboard and post those in the same Course Menu from where the LTI tool was launched.
We use LTI specification to launch the tool. This works fine. We use Blackboard web services to post the URL. To post this URL, we have to create a Blackboard content and save it into the Blackboard database using the web services. We have to specify a parent ID, which is the Course Menu ID, to the content so that it appears in that specific place where the user invoked the initial LTI launch. This is why I’m looking for Course Menu ID.
Please let me know if this can be done through LTI custom parameter.
Sorry, my misunderstanding. So are you trying to insert an LTI launch link onto a content page?
Yes. Those will be LTI launch links pointing to different materials on the same site/portal so the users get authenticated using the same OAuth mechanisam just like when they initially launch the tool.
Regarding your first comment,
"what you actually need is the ID of the parent content item containing the link used to launch, rather than an ID from the course menu."
ID of the parent content containing the link and ID of the Course Menu - Aren't both the same?
In other words, the parent ID of the resource_link is the Course Menu. Correct?
By Course Menu, I mean the left navigation items like "Content", "Information", "Discussions", "Groups", "Tools", "Help", etc. that appears on each course. So these are the parents and these IDs are the parent_ids for those resource_links.
I also regard the "course menu" as being the table of contents displayed top left of the course area. Hence, I see the contents of this menu as being different from the content pages from which an LTI link might be launched, though some of the pages might be linked from the course menu. But a link could equally be within a folder which is not linked from the course menu. Since the course menu can contain several items, the "ID of the Course Menu" only seems useful if you are looking to add an item to the menu (which does not appear to be your need). If anything wouldn't you need the ID for an item on the Course Menu?
If you are looking to create a content item, you need to know the ID of the page on which this item is to be added, which I assume is to be the same page from which the launch occurred.
So, in my view, I think you should disregard the Course Menu and focus on the content page which contains the content items. If you take a look at some code which creates content items you should see what data are required.