Передаём статус прохождения курса из Storyline в LMS с помощью JavaScript (2020)
В процессе разработки курса в редакторе Articulate Storyline мы можем столкнуться с необходимостью передавать данные в LMS без использования стандартных инструментов. К примеру, в курсе есть 2 теста и пользователю достаточно пройти только один для завершения курса. К счастью в Storyline 360 такая возможность появилась, но если мы используем Storyline 3, с помощью стандартных инструментов мы этого добиться не сможем. Нам на помощь приходит JavaScript.
Итак, давайте рассмотрим алгоритм передачи данных из Storyline в LMS.
- Добавьте в ваш проект новую сцену.
- Создайте в этой сцене новый слайд.
- Убедитесь, что пользователь ни при каких обстоятельствах не сможет на этот слайд попасть (т.е. что он не отражается в меню, нет триггеров, ведущих на этот слайд и т.д.).
- В настройках публикации курса (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.