It appears that whenever a user logs in through the LTI, their "Section" and "Recitation" attributes in webwork are reset to empty. Maybe some LTIs pass this information to webwork, but ours apparently doesn't. I had hoped to be able to set these fields manually, but having them reset every time students log in through the LTI makes this impossible. Is there any way to make them "sticky" so they won't get overwritten by LTI logins?
Ah, solved I think: I have to set LMSManageUserData to 0. (It would be nice to have more finely-grained control over this, though, so that for instance email addresses could be updated but not Section/Recitation numbers.)
Michael,
http://webwork.maa.org/wiki/LTI-Advanced_Authentication#Blackboard
This page mentions the possibility to pass section number from LMS to WeBWorK. Have you tried that? I am trying, but cannot get it working.
Does anybody have section number automatically created from Blackboard?
I even uncommented this code in authen_LTI.conf, but I am not sure if it is the right one. Supposedly our Blackboard is set to send the section number to WeBWorK.
# When users are added to the system WeBWorK will do its best to fill out
# user information. However, institutions can add code to the following
# routine to set fields not normally set by WeBWorK. E.G. The student ID
# field.
$LTI_modify_user = sub {
# # The self object from LTIAdvanced.pm
my $self = shift;
# # The user object to be modified
my $user = shift;
#
# # Parse context_id for additional information. E.G.
my @course_id=split /-/, $self -> {"context_id"};
$user->{"section"} = $course_id[4];
};
Andras
Just to be sure that people are aware of the LTI debug feature in WeBWorK.
The following turns the debug feature on. It adds a lot of information messages to each communication between Blackboard/Canvas and WeBWork. They appear as warning messages.
2. Edit the file `authen_LTI.conf` as follows:
3. Set `$debug_lti_parameters = 1;` near the top of the file
There appears to be some differences in the information that Blackboard sends to WeBWorK from one site to the next and depending on local configuration parameters. The debug mechanism is one way one can adjust to the response to Blackboard. It makes it clear exactly what information is being sent from Blackboard. If there are different configurations within Blackboard this mechanism will give you a clear picture of how that affects the information being sent to WeBWorK. You won't have to guess.
While Goeff Goehle wrote the current versions of LTI about a year ago, there were some previous versions as well, it's only in the past 6 months that we've started to see wide spread adoption at many different sites.
There are a number of examples of sample code in the authentication modules that are currently commented out. They are meant to allow and encourage customization in the future and once we have nailed down what kinds of customization are most popular and useful we will be able to refine these subroutines - such as the one discussed by Andras - and make them more easily available through the configuration files. Meantime experiment away, share your experiences, and ask for help when you need it. Hopefully someone (or someones) in the community will be able to respond and we'll build a more stable experience for next time.
Blackboard's LTI implementation is also becoming a bit more stable and that will help as well.
It seems to me that the Tool Provider Custom Parameter
section=#
described in the wiki at http://webwork.maa.org/wiki/LTI-Advanced_Authentication#.WRpn4xP1CAx
is sent through as
custom_section=#
(see https://community.blackboard.com/thread/3513-lti-tool-provider-custom-parameter)
Does anybody have section number set successfully through Blackboard link?
and then LTIAdvanced.pm line 168 converts it back to "section"
['section', 'custom_section'],
After further analyzing the debug info and seeing that it has parameter
context_title => courseprefix-coursenumber-sectionnumber-semester
this actually worked for me for setting section number automatically from Blackboard (in authen_LTI.conf)
$LTI_modify_user = sub {
# The self object from LTIAdvanced.pm
my $self = shift;
# The user object to be modified
my $user = shift;
my $r = $self->{r};
my @course_id = split /-/, $r->param("context_title");
$user->{"section"} = $course_id[2];
};