如何将数组类型组参数映射到 LTI1p0

How to map array type groups parameter to LTI1p0

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

  1. 从 LTI 工具消费者接收,
  2. 将其映射以匹配服务的 API、
  3. 将其发送到服务,
  4. 然后将来自服务的响应解析为 LTI 工具提供程序格式,
  5. 最后将其发送回工具消费者。

该服务有一个名为 groupsrequired 字段,它需要一个组对象数组,如下所示:

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_idcontext_typecontext_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"}"