Передаём статус прохождения курса из Storyline в LMS с помощью JavaScript (2020)

В процессе разработки курса в редакторе Articulate Storyline мы можем столкнуться с необходимостью передавать данные в LMS без использования стандартных инструментов. К примеру, в курсе есть 2 теста и пользователю достаточно пройти только один для завершения курса. К счастью в Storyline 360 такая возможность появилась, но если мы используем Storyline 3, с помощью стандартных инструментов мы этого добиться не сможем. Нам на помощь приходит JavaScript.

Итак, давайте рассмотрим алгоритм передачи данных из Storyline в LMS.

  1. Добавьте в ваш проект новую сцену.
  2. Создайте в этой сцене новый слайд.
  3. Убедитесь, что пользователь ни при каких обстоятельствах не сможет на этот слайд попасть (т.е. что он не отражается в меню, нет триггеров, ведущих на этот слайд и т.д.).
  4. В настройках публикации курса (reporting) установите опцию, чтобы курс оценивался по количеству пройденных слайдов. Количество слайдов для прохождения курса должно включать и тот самый недоступный для пользователя слайд. Таким образом, поскольку пользователь не сможет просмотреть ВСЕ слайды, то и завершить курс со стандартными настройками он не сможет. Это важно!

Теперь перейдём к JavaScript, который будет отправлять кастомные результаты в LMS:

var player = GetPlayer();
var passingScore = "100";
function findLMSAPI(win) {
if (win.hasOwnProperty("GetStudentID")) return win;
else if (win.parent == win) return null;
else return findLMSAPI(win.parent);
}

var lmsAPI = findLMSAPI(this);
lmsAPI.SetScore(player.GetVar("Your_Score_Variable"), 100, 0);
if (player.GetVar("Your_Score_Variable")>= passingScore)
{
SetStatus("passed");
} else {
SetStatus("failed");
}

Давайте разберём код по строчкам.

Во-первых, нам необходимо организовать взаимодействие со Storyline, для этого используем такой код:

var player = GetPlayer();

Затем надо установить проходной балл:

var passingScore = "100";

Эта переменная используется позже, когда мы будем отправлять в LMS статусы «пройден» или «не пройден» курс — passed или failed. В этом примере пользователю необходимо набрать 100 или больше баллов.

Далее мы проверим, «общается» ли наш курс с LMS, используя lmsAPI.

function findLMSAPI(win) {
if (win.hasOwnProperty("GetStudentID")) return win;
else if (win.parent == win) return null;
else return findLMSAPI(win.parent);
}

var lmsAPI = findLMSAPI(this);

Далее мы передаём баллы, набранные пользователем. В примере они хранятся в переменной Your_Score_Variable* и отправляем их в LMS: lmsAPI.SetScore(player.GetVar("Your_Score_Variable"), 100, 0);

После этого мы должны определить, больше, равен или меньше набранный балл по сравнению с проходным баллом:

if (player.GetVar("Your_Score_Variable")>= passingScore)

Если набранные пользователем баллы больше или равны проходного балла, мы отправим статус «passed» в LMS. Если меньше, то статус «failed»:

{
 SetStatus("passed");
} else {
 SetStatus("failed");
}

* Важно! Вам потребуется переменная под названием Your_Score_Variable в списке переменных в Storyline, чтобы всё заработало. Ну или поменяйте имя переменной в коде на ту, которая отвечает за набранные баллы в вашем проекте в Storyline.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.