如何将数组类型组参数映射到 LTI1p0
How to map array type groups parameter to LTI1p0
我有一个使用 LTI1p0 的 LTI 工具使用者 (LMS),它将向当前未使用 LTI 的服务发送请求。因此,我正在编写一个包装器的 NodeJS 实现,它将
- 从 LTI 工具消费者接收,
- 将其映射以匹配服务的 API、
- 将其发送到服务,
- 然后将来自服务的响应解析为 LTI 工具提供程序格式,
- 最后将其发送回工具消费者。
该服务有一个名为 groups
的 required 字段,它需要一个组对象数组,如下所示:
group: [ {
id: <string>, // id of the group
name: <string>, // name of the group
role: <string> // role of the user
}]
LTI1p0 实施指南中不存在此参数。所以我想知道如何最好地通过 LTI 发送数组类型(groups
在我的例子中)信息。
在查看文档时,我发现了一些可以使用的潜在参数:
1。上下文参数
指南中提到'type of context would be "group"',还有context_id
、context_type
、context_title
的参数。问题是这只是每个 request/user.
一组的一个选项
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 Consumer (LMS) 和服务都是外部的,即我无法更改它们,只能提供包装器。我可以与工具消费者就可能的自定义参数进行沟通,但同样不确定要请求哪种格式。
此外,该服务可能会在年底实施 LTI,因此理想情况下可以删除包装器,并且工具使用者不必进行太多更改。
非常感谢任何帮助!
LTI 规范中明显缺少组。所以任何答案都将是部分意见。
我同意您使用上下文参数字段,每组启动一个 LTI。就规范而言,这将是最正确的方法。
但是我还没有看到允许从组上下文启动 LTI 的 LMS。因此,即使它本身支持 LTI,您也可能无法在没有包装器的情况下使用该服务。
或者:
LTI 1.0 支持自定义参数,因为您正在扩展已发送的信息(上下文和角色)您可以使用 ext_ 前缀。
推荐人:https://www.imsglobal.org/specs/ltiv1p0/implementation-guide
If a profile wants to extend these fields, they should prefix all fields not described herein with "ext_".
因此您可以发送带有该前缀的自定义参数。假设您的 LMS 允许您发送有用的自定义参数。 LTI 旨在使用基本 POST 请求,而不是多维 Json 对象。但是字符串化的 JSON 对象使用适当的键是完全有效的。
即:
ext_custom_groups = "{"id":123,"name":"Group Name","role":"Instructor"}, {"id":124,"name":"Group Name 2","role":"Creator"}"
我有一个使用 LTI1p0 的 LTI 工具使用者 (LMS),它将向当前未使用 LTI 的服务发送请求。因此,我正在编写一个包装器的 NodeJS 实现,它将
- 从 LTI 工具消费者接收,
- 将其映射以匹配服务的 API、
- 将其发送到服务,
- 然后将来自服务的响应解析为 LTI 工具提供程序格式,
- 最后将其发送回工具消费者。
该服务有一个名为 groups
的 required 字段,它需要一个组对象数组,如下所示:
group: [ {
id: <string>, // id of the group
name: <string>, // name of the group
role: <string> // role of the user
}]
LTI1p0 实施指南中不存在此参数。所以我想知道如何最好地通过 LTI 发送数组类型(groups
在我的例子中)信息。
在查看文档时,我发现了一些可以使用的潜在参数:
1。上下文参数
指南中提到'type of context would be "group"',还有context_id
、context_type
、context_title
的参数。问题是这只是每个 request/user.
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 Consumer (LMS) 和服务都是外部的,即我无法更改它们,只能提供包装器。我可以与工具消费者就可能的自定义参数进行沟通,但同样不确定要请求哪种格式。 此外,该服务可能会在年底实施 LTI,因此理想情况下可以删除包装器,并且工具使用者不必进行太多更改。
非常感谢任何帮助!
LTI 规范中明显缺少组。所以任何答案都将是部分意见。
我同意您使用上下文参数字段,每组启动一个 LTI。就规范而言,这将是最正确的方法。
但是我还没有看到允许从组上下文启动 LTI 的 LMS。因此,即使它本身支持 LTI,您也可能无法在没有包装器的情况下使用该服务。
或者:
LTI 1.0 支持自定义参数,因为您正在扩展已发送的信息(上下文和角色)您可以使用 ext_ 前缀。 推荐人:https://www.imsglobal.org/specs/ltiv1p0/implementation-guide
If a profile wants to extend these fields, they should prefix all fields not described herein with "ext_".
因此您可以发送带有该前缀的自定义参数。假设您的 LMS 允许您发送有用的自定义参数。 LTI 旨在使用基本 POST 请求,而不是多维 Json 对象。但是字符串化的 JSON 对象使用适当的键是完全有效的。
即:
ext_custom_groups = "{"id":123,"name":"Group Name","role":"Instructor"}, {"id":124,"name":"Group Name 2","role":"Creator"}"