我有一个正在使用LTI1p0的LTI工具使用者(LMS),它将向当前未使用LTI的服务发送请求。因此,我正在编写包装的NodeJS实现,该实现将


从LTI工具使用者那里收到
映射它以匹配服务的API,
发送到服务,
然后将来自服务的响应解析为LTI工具提供程序格式,
最后将其发送回工具使用者。


该服务具有一个称为groups的必填字段,该字段需要一个组对象数组,如下所示:

group: [ {
    id: <string>, // id of the group
    name: <string>, // name of the group
    role: <string> // role of the user
}]


该参数在LTI1p0实施指南中并不完全存在。所以我想知道如何最好地通过LTI发送数组类型(在我的情况下为groups)信息。

浏览文档时,我遇到了一些可以使用的潜在参数:

1.上下文参数

该指南提到“上下文类型将是“组””,并且有context_idcontext_typecontext_title的参数。问题在于,这仅是每个请求/用户一个组的选项。

2.自定义参数

我可以创建一个自定义参数并将其命名为custom_groups,这似乎很简单,但是我不确定该值应如何查找数组?就像字符串化的json对象一样?

custom_groups = "{"id":123,"name":"Group Name","role":"Instructor"}, {"id":124,"name":"Group Name 2","role":"Creator"}"


对于roles参数,可以发送以逗号分隔的字符串列表(即roles= Instructor, Creator,..),但是对于我来说,这是不够的。

我对LTI还是陌生的,所以如果这很明显,我深表歉意。

注意:LTI消费者(LMS)和服务都是外部的,即我不能更改它们,而只能提供包装器。我可以与工具使用者交流有关可能的自定义参数的信息,但同样不确定要请求哪种格式。
此外,该服务可能会在今年年底之前实施LTI,因此理想情况下可以删除包装器,并且“工具使用者”不必进行太多更改。

任何帮助,不胜感激!

最佳答案

LTI规范中显然没有组。因此,任何答案都将是部分意见。

我同意您的看法,即使用上下文参数字段,每个组启动一个LTI。就规范而言,这将是最正确的方法。

但是,我还没有看到允许从组上下文启动LTI的LMS。因此,即使没有包装,您也可能无法使用该服务,即使该服务本身支持LTI。

或者:

LTI 1.0支持自定义参数,在扩展已经发送的信息(上下文和角色)时,可以使用ext_前缀。
引荐来源:https://www.imsglobal.org/specs/ltiv1p0/implementation-guide


如果配置文件想要扩展这些字段,则它们应在此处未描述的所有字段前面加上“ ext_”。


因此,您可以发送带有该前缀的自定义参数。假设您的LMS允许您发送有用的自定义参数。 LTI设计为使用基本的POST请求,而不是多维Json对象。但是,带有适当密钥的字符串化JSON对象完全有效。

即:

ext_custom_groups = "{"id":123,"name":"Group Name","role":"Instructor"}, {"id":124,"name":"Group Name 2","role":"Creator"}"

关于arrays - 如何将数组类型组参数映射到LTI1p0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48642275/

10-11 16:53