Wie funktioniert die Wiederaufnahme einer Übung in H5P?

Es gibt zahlreiche kleine Übungen, die mit H5P erstellt werden können. Es ist nicht wirklich nötig, sie zu unterbrechen und später fortzusetzen. Man kann sie in einem Rutsch erledigen. Es gibt jedoch bestimmte Inhaltstypen, die es ermöglichen, Übungen zu erstellen, deren Bearbeitung einige Zeit in Anspruch nimmt. Ich denke da zum Beispiel an Interactive Books mit vielen Informationen und vielen Übungen. Wenn ich alle Übungen bearbeite, wäre es schön, wenn meine Antworten gespeichert und bei späteren Besuchen der Übungen wieder aufgerufen werden könnten.

Darüber hinaus gibt es einige Inhaltstypen, die nur wirklich sinnvoll sind, wenn alles, was man eingegeben und gemacht hat, auch zwischengespeichert wird. Da wären etwa die Cornell Notes, der Wiederholungsmodus von Dialogcards oder – je nach Anwendungsfall – das Documentation Tool.

Der Kern von H5P erlaubt es, die Arbeit anzuhalten und später an derselben Stelle wiederaufzunehmen. Das wird auch oft „Save Content State“ genannt, weil genau das getan wird. Um zu funktionieren, muss die jeweilige H5P-Integration (auch Plugin genannt) einige Funktionen implementieren, um den Zustand in der Datenbank, im Dateisystem oder was auch immer die H5P-Integration zum Speichern von Daten verwendet, zu speichern. Umgekehrt muss die Integration den vorherigen Zustand laden, um ihn wiederherzustellen.

Fuktioniert, aber das ist erst einmal Theorie. In der Praxis gibt es eine ganze Reihe von Dingen, die man wissen muss, und es gibt keine Dokumentation auf h5p.org. Mal sehen, ob dieser Beitrag die Lücke füllen kann. Aber Vorsicht, alles zu lesen könnte einige Zeit in Anspruch nehmen …

Welche Inhaltstypen unterstützen diese Funktion?

Diese Frage impliziert, dass nicht alle H5P-Inhaltstypen diese Funktion unterstützen. Und nicht alle tun das. Bei einigen ist es auch nicht wirklich sinnvoll, einen Zustand zu speichern. Was sollte Chart festhalten? Wäre es für Image Juxtaposition wirklich relevant, den Griff an genau die gleiche Position zu setzen, die er beim letzten Besuch der Benutzer*innen hatte?

Davon abgesehen: Die meisten Inhaltstypen, die von dieser Funktion profitieren könnten, unterstützen sie auch schon. Ich möchte keine Liste pflegen, die ständig manuell aktualisiert werden muss, wenn sich die Dinge ändern. Darum wirst du hier keine finden. Die H5P Group führt eine Liste, aber sie enthält nur Inhaltstypen, die auf dem H5P Hub verfügbar sind, und ich weiß nicht, wie oft sie aktualisiert wird. Es gibt auch einen Entwurf für ein „H5P Registry“-Repository, das ein resume-Feld enthält,. Dieses Feld gibt an, ob diese Funktion unterstützt wird oder nicht. Damit lässt sich feststellen, ob ein Inhaltstyp diese Funktion unterstützt oder nicht – sogar programmatisch. Aber als ich diese Zeilen schrieb, waren alle Felder noch auf false gesetzt. Vielleicht hat sich das jetzt geändert?

Was speichert H5P? Und wo?

Inhaltstypen speichern alle Informationen, die sie für notwendig erachten, um den Zustand bei der Wiederaufnahme wiederherzustellen. Dies könnten beispielsweise die Optionen sein, die bei Multiple Choice angeklickt wurden, oder die Anzahl der verbleibenden Versuche beim Anhören eines Audiobeispielsatzes bei Dictation. Es könnte sich aber auch um persönliche Informationen handeln, wenn du an eine „Freetext Question“ (Teil eines Interactive Videos) oder Essay denkst.

Manchmal speichert der Inhaltstyp nicht alle Informationen, die Benutzer*innen erwarten würden. Wenn du etwa auf eine Multiple-Choice-Frage geantwortet und auf die Schaltfläche „Überprüfen“ geklickt habst, merkt sich der Inhaltstyp zwar die gegebenen Antworten, aber nicht, dass auf die Schaltfläche „Überprüfen“ geklickt wurde. Wenn du den Inhalt später aufrufst, werden deine Antworten immer noch ausgewählt, aber du siehst die Ergebnisse nicht. Es ist so, als hättest du die Seite verlassen, bevor du auf „Überprüfen“ geklickt hast.

Wie bereits erwähnt, speichert H5P die Zustandsdaten auf der Plattform, auf der du H5P ausführst. Das kann in der Datenbank sein (was Plugins normalerweise tun) oder im Dateisystem. Einige H5P-Integrationen können jedoch die Informationen an Cloud-Dienste wie AWS von Amazon weiterleiten. Das ist nichts, was H5P tut, sondern dein Hoster und du sollten die entsprechenden Verantwortlichen befragen, wenn du Fragen hast oder wissen willst, wohin deine Daten gehen.

Wann und in welchen Fällen speichert H5P den Zustand?

Damit H5P den Status speichern kann, müssen einige Voraussetzungen erfüllt sein:

  • Die Funktion „Save content state“ muss für die H5P-Integration aktiviert sein.
  • Der verwendete Inhaltstyp muss die Wiederaufnahmefunktion unterstützen.
  • Die Benutzer*innen, die den Inhalt ausführen, müssen auf der Plattform wie WordPress oder Moodle angemeldet sein.

Wenn du diese Punkte abhaken kannst, können bestimmte Ereignisse dazu führen, dass der H5P-Kern den Zustand speichert.

Regelmäßige Intervalle

Der Kern von H5P versucht, den Zustand in regelmäßigen Abständen zu speichern. Diese Intervalle können normalerweise von einem Administrator in den Optionen der H5P-Integrationen eingestellt werden. Die Standardeinstellung ist oft 30 Sekunden. Das bedeutet, dass der Status alle 30 Sekunden gespeichert werden sollte.

Wenn du dieses Intervall zu groß findest, kannst du es auch kleiner einstellen. Allerdings wird bei jedem Speicherversuch eine Anfrage vom Browser an den Server gesendet. Wenn der Server nicht ausreichend mit Leistung ausgestattet ist, kann es sein, dass er nicht in der Lage ist, die Anfragen zu bearbeiten. Das gilt insbesondere dann, wenn mehrere Personen H5P gleichzeitig benutzen. Setze den Wert besser nicht zu klein an. Man kann nicht sagen, was „zu klein“ ist, ohne die Serverspezifikationen und das Anwendungsszenario zu kennen.

Bestimmte xAPI-Ereignisse

H5P unterstützt etwas, das xAPI genannt wird. Es handelt sich dabei um eine standardisierte Art der Kommunikation der Erfahrungen von Benutzer*innen. Sie wird insbesondere für die Übermittlung der Ergebnisse von H5P-Inhalten verwendet. Diese xAPI-Daten sind mit einem Verb verknüpft, das ausdrückt, was Benutzer*innen getan haben, wie etwa „completed“, wenn sie etwas abgeschlossen haben, oder „progressed“, wenn sie in der Übung in irgendeiner Weise vorangekommen sind.

Diese beiden Verben sind genau das, worauf der H5P-Kern wartet. Wenn er xAPI-Daten erkennt, die „completed“ oder „progressed“ verwenden, wartet er drei Sekunden lang und speichert dann den Zustand. H5P würde zum Beispiel den Zustand drei Sekunden speichern, nachdem Benutzer*innen alle in einer Column gestellten Fragen beantwortet haben („completed“) oder Benutzer*innen von einem Schaubild einer Course Presentation zu einer anderen wechseln („progressed“).

Ein häufig verwendetes Verb, das auch die Speicherung auslösen sollte, ist „answered“. Es wird normalerweise verwendet, wenn ein Benutzer auf die Schaltfläche „Überprüfen“ klickt. Leider reagiert H5P bisher nicht auf „answered“.

Bestimmte Browser-Ereignisse

Browser können sogenannte „Ereignisse“ auslösen, wenn bestimmte Dinge passieren, zum Beispiel:

  • beforeunload: Wird ausgelöst, wenn ein Dokument kurz vor dem Entferntwerden aus dem Speicher steht.
  • unload: Wird ausgelöst, wenn ein Dokument aus dem Speicher entfernt wird, zum Beispiel, wenn Sie eine Registerkarte schließen.
  • pagehide: Wird ausgelöst, wenn die aktuelle Seite ausgeblendet wird, beispielsweise wenn du auf den Zurück-Button des Browsers klickst.

H5P versucht, den Zustand zu speichern, wenn es auf eines dieser Ereignisse trifft. Allerdings sind alle diese Ereignisse etwas unzuverlässig oder funktionieren nicht in jedem Browser gleichermaßen.

Wie kann ich die Wiederaufnahmefunktion aktivieren?

Die Überschrift dieses Abschnitts deutet bereits darauf hin, dass die „Save content state“-Funktion standardmäßig nicht aktiviert ist. Du – oder ein/e Admin, falls du nicht über die erforderlichen Berechtigungen verfügst – muss sicherstellen, dass die Option „Inhalt statisch speichern“ in der jeweiligen H5P-Integration aktiviert ist.

H5P-Plugin für WordPress

Die Einstellungen können im Menü Einstellungen→H5P des H5P-Plugins für WordPress geändert werden.

Auszug aus den WordPress-Optionen für H5P. Gezeigt wird der "Inhalt statisch speichern"-Abschnitt mit einer Checkbox zum Ein- und Ausschalten von "Angemeldeten Benutzern erlauben, Aufgaben wieder aufzunehmen" und einem numerischen Eingabefeld für die "Frequenz der automatischen Speicherung in Sekunden", die auf 30 Sekunden gesetzt ist).

Du kannst die Wiederaufnahmefunktion ein- und ausschalten und das Intervall für die automatische Speicherung in Sekunden festlegen.

H5P-Plugin für Drupal 7/8/9

Die Einstellungen können im Menü Konfiguration→H5P des H5P-Moduls für Drupal geändert werden.

Excerpt from the Drupal options for H5P. Showing the "Save Content State" section with a checkbox to toggle "Save content state" on and off and a numerical input field for the "Save content state frequency"

Du kannst die Wiederaufnahme funktion ein- und ausschalten und das Intervall für die automatische Speicherung in Sekunden festlegen.

H5P-Plugin für Moodle

Die Einstellungen können im Menü des H5P-Plugins für moodle unter Website-Administration → Plugins / Aktivitäten / H5P / H5P-Einstellungen geändert werden.

Excerpt from the moodle's options for H5P. Showing the "Save Content State" section with a checkbox to toggle "Save content state" on and off (Default: No) and a numerical input field for the "Save content state frequency"

Du kannst die Wiederaufnahmefunktion ein- und ausschalten und das Intervall für die automatische Speicherung in Sekunden festlegen.

moodle’s benutzerdefinierte H5P-Integration in moodle core

Zum Zeitpunkt des Schreibens dieser Zeilen unterstützt die moodle-eigene H5P-Integration (eben nicht zu verwechseln mit dem H5P-Plugin für moodle) leider nicht die Wiederaufnahme des Status von H5P-Inhalten – sie wird aber laut dieses Tracker-Tickets gerade eingebaut. Die Chancen stehen gut, dass sie ab moodle 4.2 verfügbar sein wird.

Lumi

Die Desktop-Version von Lumi unterstützt die Wiederaufnahme nicht. Die Cloud-basierte Version erlaubt das Fortsetzen. Standardmäßig wird ein Intervall von 5 Sekunden verwendet. Du kannst diese Funktion nicht ausschalten und das Intervall für die automatische Speicherung nicht ändern.

H5P.com

H5P.com bietet ein wenig mehr Granularität als die anderen H5P-Integrationen. Sie steht nur denjenigen zur Verfügung, die die Drill-Down-Berichte in ihrer Lizenz haben und den Inhalt über LTI in ein Lernmanagementsystem einbinden.

Wenn du auf Manage organization →Settings gehst, findest du im Abschnitt LTI die Einstellung zur Aktivierung der Wiederaufnahmefunktion. Die Optionen sind detaillierter als bei den anderen H5P-Integrationen.

Die Option „Always“ entspricht dem Einschalten der Funktion in anderen H5P-Integrationen, und die Option „Never“ entspricht dem Ausschalten der Funktion. Man kann die Entscheidung aber auch den Autor*innen der Inhalte überlassen. Sie können für jeden Inhalt individuell entscheiden, ob das Fortsetzen möglich sein soll oder nicht. Dafür sind die beiden Optionen „Controlled by author“ gedacht. Die Variante „on by default“ lässt die Funktion standardmäßig eingeschaltet, die Variante „off by default“ lässt die Funktion standardmäßig ausgeschaltet. Ist ja klar.

Es gibt allerdings keine Option zur Einstellung des Intervalls. H5P.com scheint dies selbst zu bestimmen, möglicherweise in Abhängigkeit von der aktuellen Serverauslastung. Ich habe den angegebenen Wert ein paar Mal überprüft und Werte zwischen 24 und 48 Sekunden erhalten.

Wenn der Admin den AutorÜinnen erlaubt hat, die Einstellung zu ändern, finden sie ein Kontrollkästchen unterhalb des Inhaltseditors im Abschnitt LTI-Einstellungen.

ILIAS, Stud.IP, TYPO3, …

Ich weiß nicht, was diese jeweiligen Plugins unterstützen.

Welche Fragen und Probleme gibt es öfter mal?

Es gibt einige gängige Probleme, auf die man beim Speichern des Zustands stoßen kann.

Die Funktion ist immer für alle Inhalte ein- oder ausgeschaltet

Leider ist es derzeit bei keiner H5P-Integration außer bei H5P.com möglich, die Wiederaufnahmefunktion individuell zu aktivieren oder zu deaktivieren. Sie ist immer für alle Inhalte ein- oder ausgeschaltet. Das kann problematisch sein, wenn ein Autor einer Plattform die Wiederaufnahmefunktion zulassen möchte, während andere dies nicht tun.

Die H5P-Integrationen für WordPress, Moodle, Drupal usw. müssten ein wenig geändert werden, um die gleiche Granularität zu ermöglichen, die H5P.com bietet.

Der Zustand wird nicht rechtzeitig gespeichert

Die oben erwähnten Mechanismen, die H5P verwendet, um festzustellen, ob gespeichert werden soll oder nicht, lassen noch Raum für Verbesserungen. Sie werden nicht immer rechtzeitig ausgeführt, und dann wird der Zustand nicht gespeichert.

Eine Verbesserung wäre es, den Zustand auch drei Sekunden nach der Ausgabe einer xAPI-Anweisung mit dem Verb „answered“ zu speichern. Dies würde normalerweise immer dann geschehen, wenn ein Benutzer eine Frage beantwortet hat. Ein weiteres Ereignis, auf das man achten sollte, könnte das visibilitychange-Ereignis sein, das ausgelöst wird, wenn der Inhalt des Dokuments unsichtbar wird, wenn der Benutzer zu einem anderen Tab wechselt.

Es gibt bereits einen Pull Request, der vorschlägt, genau das hinzuzufügen.

Der Zustand wird zurückgesetzt, wenn Autor*innen etwas ändern, auch wenn sie nur einen Tippfehler korrigieren

Wenn Autor*innen einen H5P-Inhalt ändern, an dem Benutzer*innen bereits gearbeitet haben, werden alle Zustände, die für diesen Inhalt gespeichert wurden, zurückgesetzt. Leider geschieht dies bei jeder Änderung, auch wenn nur ein Tippfehler korrigiert wird.

Der Gedanke dahinter ist wahrscheinlich, dass die Übung verändert wurde und dass die gegebenen Antworten möglicherweise nicht mehr gültig sind. H5P setzt also den Zustand zurück, und die Benutzer*innen müssen alles noch einmal beantworten. Das ist natürlich nicht immer das gewünschte Verhalten. Eine Lösung könnte darin bestehen, dem Editor von H5P-Inhalten eine Option hinzuzufügen, die es Autor*innen erlaubt, zu wählen, ob der Status zurückgesetzt werden soll oder nicht.

Ein anderer Gedanke dahinter könnte sein, dass sich die Struktur der eingegebenen Werte im Editor des Inhalts geändert hat und nicht mehr mit der Struktur des Zustands übereinstimmt. Das ist nicht unbedingt schlimm, es kann funktionieren und tut es in vielen Fällen auch. Aber um sicher zu sein, müsste der Kern von H5P oder der jeweilige Inhaltstyp diese Abweichung erkennen und entsprechend handeln – es wäre zusätzlicher Code erforderlich.

Die Zustände können nicht manuell zurückgesetzt werden (pro Benutzer*in)

In vielen H5P-Inhaltstypen gibt es ein merkwürdiges Verhalten. Wenn Benutzer*innen die volle Punktzahl erreicht hat, wird der Button „Wiederholen“ nicht angezeigt. Wenn nun der Status gespeichert wird und die Benutzer*innen später zurückkehren, haben sie immer noch die volle Punktzahl erreicht, sehen die Ergebnisse und haben keine Möglichkeit, die Übung zu wiederholen.

Hier gibt es keine gute Abhilfe (abgesehen von der Änderung des Zustands in der Datenbank). Autor*innen könnten den Inhalt bearbeiten und speichern. Dadurch würde der Zustand zurückgesetzt, aber für alle Benutzer*innen. Eine/n bestimmten Benutzer*in kann man nicht auswählten.

Um dies zu ändern, sollten die H5P-Integrationen eine Option erhalten, um den Zustand einiger H5P-Inhalte nur für bestimmte Benutzer*innen zurückzusetzen. Tatsächlich wird H5P.com in Kürze einen Button erhalten, mit dem Nutzer*innen einen Inhalt komplett zurücksetzen können.

Timer sind ungenau

Einige H5P-Inhaltstypen, wie etwa Memory Game, zeichnen die Zeit auf, die die Benutzer*innen benötigen. Sie zeigen die verstrichene Zeit auch an. Wenn diese Inhaltstypen die Wiederaufnahmefunktion unterstützen, stimmt die wiederhergestellte Zeit typischerweise nicht. Das liegt an der Art der Intervallspeicherung und der Unzuverlässigkeit der Browser-Ereignisse, die verwendet werden müssen.

Es gibt wahrscheinlich keine zufriedenstellende Lösung für dieses Problem.

Die Funktion funktioniert nicht, wenn du Inhalte mit dem Einbettungscode einbettest

Kein weiterer Text 🙂