0

我觉得我已经尝试了一切,但我一直在做空。我正在学习 Storyline 360​​ 中的一门课程,我能够在使用动词和对象 ID 时很好地返回语句,但是无论我做什么来尝试返回特定代理的语句,我都无法通过查询.

这是我现在的代码 - 我确实返回了大量语句......我需要知道的是如何让它查询当前学习者的语句以查找匹配项。我可以输入他们的名字或 mbox,但是每次尝试在我的参数中传递它们都失败了。

很感谢任何形式的帮助!

var lrs;
var statementFound = false;
var player = GetPlayer();
try {
    lrs = new TinCan.LRS(
        {
            endpoint: "https://cloud.scorm.com/lrs/MYINFO/",
            username: "MYINFO",
            password: "MYINFO",
            allowFail: false
        }
    );
}
catch (ex) {
    console.log("Failed to setup LRS object: ", ex);
    // TODO: do something with error, can't communicate with LRS
};

var myObj = JSON.parse(getParameterByName('actor'));
lrs.queryStatements(
    {
        params: {
            verb: new TinCan.Verb(
                { 
                   id:  "http://adlnet.gov/expapi/verbs/answered"
                }
            )
    },
        callback: function (err, sr) {
            if (err !== null) {
                console.log("Failed to query statements: " + err);
                // TODO: do something with error, didn't get statements
                return;
             }

            if (sr.more !== null) {
                // TODO: additional page(s) of statements should be fetched
             }

           if (sr.statements.length > 0) {
            statementFound = true;
             console.log(sr.statements);
             player.SetVar("sf",statementFound);
            }
        }
    }
);

var myObj 能够在需要时提取必要的信息来识别学习者 - 但同样,我只是不知道如何在查询中传递它。

4

1 回答 1

1

您需要在第一个参数中传递agent的对象中设置一个属性。params假设代理是actorin 语句。

lrs.queryStatements(
    {
        params: {
            agent: TinCan.Agent.fromJSON(getParameterByName('actor'))
        }
    },
    ...
);
于 2020-06-25T15:42:20.590 回答