3

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

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

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

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

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

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

1.上下文参数

该指南提到“上下文类型将是“组””,并且有用于context_idcontext_type、的参数context_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,因此理想情况下可以删除包装器,并且工具使用者不必进行太多更改。

非常感谢任何帮助!

4

1 回答 1

1

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

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

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

或者:

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

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

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

IE:

ext_custom_groups = "{"id":123,"name":"Group Name","role":"Instructor"}, {"id":124,"name":"Group Name 2","role":"Creator"}"
于 2018-02-12T03:07:08.083 回答