home

Запись событий xAPI при работе с H5P

h5p-xapi-elis-play-log.png

Развитие образовательных технологий направлено на сбор и анализ цифровых следов.

Цифровые следы порождаются в том числе при прохождении ЭОР.

В ELiS для образования используется H5P, который порождает события xAPI https://h5p.org/documentation/x-api, но самостоятельно сохраняет только результат прохождения ресурсов и только для авторизованных пользователей.

В ELiS есть модуль интеграции с H5P - "ELiS H5P". Модуль интеграции меняет в некоторых случаях работу модуля H5P и обеспечивает сбор цифровых следов, порождаемых H5P в формате xAPI.

Как в H5P происходит генерация цифровых следов[править]

H5P поддерживает генерацию событий на действия пользователей. Так открытие задания, ответ на вопрос теста, перетаскивание изображения в некоторую точку для задания с изображениями порождает события в формате xAPI. Причем эти события порождаются не только на финальный ответ, но и на промежуточные действия.

Разные типы заданий H5P генерируют разные события, а некоторые задания могут не генерировать события xAPI вовсе (см. документацию https://h5p.org/documentation/x-api).

Порожденные события надо куда-то сохранить для дальнейшей обработки.

Как ELiS сохраняет события xAPI в PlayLogs[править]

Для хранения треков воспроизведения ресурсов в ELiS есть собственная система сбора статистики, т.н. PlayLogs. В таблицу elis_play_log пишутся сессии пользователей по работе с открытым ресурсом. Это абстрактная система сбора треков (логов), работающая для сбора самых различных типов ресурсов, не только для H5P. Но также эта система используется и для хранения событий xAPI, порождаемых H5P.

В таблице elis_play_log есть поле data, в котором лежат сериализованные данные по разным типам ресурсов в специальном формате. В поле data есть в качестве свойства массив events, в котором собираются данные по различным событиям.

События xAPI, генерируемые плеером H5P попадают таким образом в массив data.events. Для извлечения событий xAPI из записи в таблице elis_play_log можно использовать такой псевдокод:

for (i=0; i<data.events.length; i++) {
  if (data.events[i].type == 'xAPI') {
    print data.events[i].eventData; // eventData - соответствует содержимому события xAPI.
    if (data.events[i].eventData.result) {
      print data.events[i].eventData.result.score.scaled // нормализованные результаты от 0 до 1. Обратите внимание, что не каждое событие xAPI содержит в себе результаты.
    }
  }
}

При записи событий, ELiS может вырезать из события xAPI поле agent т.к. это поле является избыточным и в треки пишется идентификатор пользователя (uid).

Обратите внимание, что одна запись в таблице elis_play_log содержит трек всей сессии с плеером и в нее попадают все события работы с открытым во вкладке браузера ресурсе H5P, а значит одна запись содержит множество событий xAPI, относящихся к работе с ресурсом.

Если пользователь откроет занятие в двух вкладках, то в таблице elis_play_log у него будет два трека и если вы хотите извлечь наилучший результат, вам надо обработать обе записи и выбрать в какой из них результат лучше.

Также обращаю внимание, что сам модуль H5P во вкладке результатов приводит результаты только аутентифицированных на сайте пользователей, а треки в таблицу elis_play_log пишутся и для гостей.

Наглядно представить события можно на снимке экрана ниже, где события записаны для гостя. Событие 11 в data.events[11].eventData.result.score.raw содержит результат прохождения (8 баллов из 10), а в нормированном виде это data.events[11].eventData.result.score.scaled равное 0.8.

h5p-xapi-elis-play-log.png