我有一个使用LTI1p0的LTI工具消费者(LMS),它将向当前未使用LTI的服务发送请求。因此,我正在编写一个包装器的NodeJS实现,它将
该服务有一个名为groups
的必需字段,它需要一组像这样的组对象:
group: [ {
id: <string>, // id of the group
name: <string>, // name of the group
role: <string> // role of the user
}]
此参数并不完全存在于LTI1p0实施指南中。所以我想知道如何通过LTI最好地发送数组类型(在我的情况下为groups
)信息。
在查看文档时,我遇到了一些我可以使用的潜在参数:
指南提到“上下文类型”为“群组”,并且context_id
,context_type
,context_title
有参数。问题是这只是每个请求/用户一个组的选项。
我可以创建一个自定义参数并将其称为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 Consumer(LMS)和服务都是外部的,即我无法更改它们并仅提供包装器。我可以与工具消费者沟通可能的自定义参数,但又不确定要请求的格式。 此外,该服务可能会在年底实施LTI,因此理想情况下可以删除包装器,并且工具消费者不必进行太多更改。
非常感谢任何帮助!
答案 0 :(得分:1)
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"}"