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

时间:2018-02-06 11:42:45

标签: arrays wrapper lti

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

  1. 从LTI工具消费者处获得
  2. 将其映射为匹配服务的API,
  3. 将其发送给服务
  4. 然后将服务的响应解析为LTI工具提供程序格式,
  5. 最后将其发回给工具消费者。
  6. 该服务有一个名为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 Consumer(LMS)和服务都是外部的,即我无法更改它们并仅提供包装器。我可以与工具消费者沟通可能的自定义参数,但又不确定要请求的格式。 此外,该服务可能会在年底实施LTI,因此理想情况下可以删除包装器,并且工具消费者不必进行太多更改。

    非常感谢任何帮助!

1 个答案:

答案 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"}"