Hallo Marianne,
wir verzichten bewusst auf einen komplizierten Schlüsselaustausch und erlauben einem eingebetteten Inhalt über "postMessage" an die übergeordnete Seiten Nachrichten zu senden, die dann ausgewertet werden. Das ist nicht "sicher" aber das steht im Kontext von LearningView eigentlich nie im Zentrum, da wir Schülerinnen und Schülern verschiedene Lerngelegenheiten bieten möchten, die sie möglichst selbstständig und eigenverantwortlich bearbeiten können.
Unter https://learningview.org/embed-api.php findest du eine umfangreichere Beschreibung der technischen Schnittstelle, die wir für Bots dokumentiert haben. Wenn du eine deiner Übungen und den Link zu dieser Anleitung ChatGPT oder Claude gibst, sollte diese ohne Hilfe eine sinnvolle Implementation in JavaScript einbauen können. Dann kannst du prüfen, ob du eine allgemeine Funktion in deine Apps integrieren möchtest - wir empfehlen xAPI da das ein gebräuchlicher Standard ist. Für deine Inhalte ist das ggf. eine kleine Anpassung und sie hat keine Nachteile für die Nutzung auf anderen Seiten - gibt es keine Einbettung oder hört niemand zu, werden solche Nachrichten einfach verworfen.
Erledigt = 100% gelöst, somit kannst du zum Beispiel 0.8 für 80% schicken. Die 80% wird dann beim Schüler auf der Kachel angezeigt und bei der Lehrperson im Arbeitsstand (eine Übersicht über die ganze Klasse). Du kannst zum Beispiel auch immer 100% senden, wenn keine weitere Differenzierung Sinn macht.
Wenn man mehrfach übt und beim zweiten Durchlauf eine niedrigere Punktzahl bekommt, bleibt die höchste gespeichert. Also 80% beim ersten, danach 66% und 75% es bleibt 80% auf der Kachel stehen.
Deine App kann mit window.parent.postMessage({type: "setDialogSize", size: "max"}, "*"); LearningView bitten, den Inhalt auf die maximale Fenstergrösse zu vergrössern. Das ist ebenfalls oben in der Dokumentation beschrieben.
Man kann theoretisch noch mehr einbauen, dass etwa der Arbeitsstand des Schülers gespeichert und beim nächsten Besuch der App wiederhergestellt wird oder eine Lehrperson eine Auswertung über die ganze Klasse bekommen kann usw. aber das musst du für deinen Fall ja nicht extra umsetzen.
In deinen Apps kannst du ggf. folgendes nutzen:
window.addEventListener("message", (event) => {
if (event.data?.type !== "sendEmbedContext") return;
const mode = event.data.mode;
// Inhalt passend zum Modus initialisieren.
});
window.parent.postMessage({type: "getEmbedContext"},"https://learningview.org");
Wenn du auf die Frage nach getEmbedContext eine Antwort bekommst, dann bist du innerhalb einer LearningView Einbettung und kannst ggf. Elemente ausblenden. Bekommst du keine Antwort, dann bist du das nicht.
Es gibt sessionStorage und localStorage wobei für dauerhaftes Speichern eher der zweite genutzt wird. Jedoch sind bei Einbettungen in iframes häufig diese Speicher durch die Sandbox deaktiviert, sodass du diese in dem Kontext leider nicht verwenden kannst. Wir haben deshalb eine LearningView-spezifische Lösung dokumentiert unter dem Link oben (der Bot kann das für dich einbauen und du kannst schauen was er da baut). Die Idee ist, dass die Daten von solchen Aufgaben in LearningView am Schüler gespeichert werden und so auf allen Geräten synchronisiert werden und auch die Lehrperson diese Lösung ggf. anschauen kann.
Ob sich der Aufwand das alles zu integrieren lohnt, ist schwer zu sagen. Wenn du es spannend findest, kannst du es einmal ausprobieren - aber wir haben auch Verständnis, wenn das zu viel Aufwand ist. Sonst gern einfach einmal eine Mail an mail@learningview.org schreiben und wir können dir ggf. auch einmal mit einem konkreten Beispiel helfen.
Viele Grüsse,
Michael
wir verzichten bewusst auf einen komplizierten Schlüsselaustausch und erlauben einem eingebetteten Inhalt über "postMessage" an die übergeordnete Seiten Nachrichten zu senden, die dann ausgewertet werden. Das ist nicht "sicher" aber das steht im Kontext von LearningView eigentlich nie im Zentrum, da wir Schülerinnen und Schülern verschiedene Lerngelegenheiten bieten möchten, die sie möglichst selbstständig und eigenverantwortlich bearbeiten können.
Unter https://learningview.org/embed-api.php findest du eine umfangreichere Beschreibung der technischen Schnittstelle, die wir für Bots dokumentiert haben. Wenn du eine deiner Übungen und den Link zu dieser Anleitung ChatGPT oder Claude gibst, sollte diese ohne Hilfe eine sinnvolle Implementation in JavaScript einbauen können. Dann kannst du prüfen, ob du eine allgemeine Funktion in deine Apps integrieren möchtest - wir empfehlen xAPI da das ein gebräuchlicher Standard ist. Für deine Inhalte ist das ggf. eine kleine Anpassung und sie hat keine Nachteile für die Nutzung auf anderen Seiten - gibt es keine Einbettung oder hört niemand zu, werden solche Nachrichten einfach verworfen.
Erledigt = 100% gelöst, somit kannst du zum Beispiel 0.8 für 80% schicken. Die 80% wird dann beim Schüler auf der Kachel angezeigt und bei der Lehrperson im Arbeitsstand (eine Übersicht über die ganze Klasse). Du kannst zum Beispiel auch immer 100% senden, wenn keine weitere Differenzierung Sinn macht.
Wenn man mehrfach übt und beim zweiten Durchlauf eine niedrigere Punktzahl bekommt, bleibt die höchste gespeichert. Also 80% beim ersten, danach 66% und 75% es bleibt 80% auf der Kachel stehen.
Deine App kann mit window.parent.postMessage({type: "setDialogSize", size: "max"}, "*"); LearningView bitten, den Inhalt auf die maximale Fenstergrösse zu vergrössern. Das ist ebenfalls oben in der Dokumentation beschrieben.
Man kann theoretisch noch mehr einbauen, dass etwa der Arbeitsstand des Schülers gespeichert und beim nächsten Besuch der App wiederhergestellt wird oder eine Lehrperson eine Auswertung über die ganze Klasse bekommen kann usw. aber das musst du für deinen Fall ja nicht extra umsetzen.
In deinen Apps kannst du ggf. folgendes nutzen:
window.addEventListener("message", (event) => {
if (event.data?.type !== "sendEmbedContext") return;
const mode = event.data.mode;
// Inhalt passend zum Modus initialisieren.
});
window.parent.postMessage({type: "getEmbedContext"},"https://learningview.org");
Wenn du auf die Frage nach getEmbedContext eine Antwort bekommst, dann bist du innerhalb einer LearningView Einbettung und kannst ggf. Elemente ausblenden. Bekommst du keine Antwort, dann bist du das nicht.
Es gibt sessionStorage und localStorage wobei für dauerhaftes Speichern eher der zweite genutzt wird. Jedoch sind bei Einbettungen in iframes häufig diese Speicher durch die Sandbox deaktiviert, sodass du diese in dem Kontext leider nicht verwenden kannst. Wir haben deshalb eine LearningView-spezifische Lösung dokumentiert unter dem Link oben (der Bot kann das für dich einbauen und du kannst schauen was er da baut). Die Idee ist, dass die Daten von solchen Aufgaben in LearningView am Schüler gespeichert werden und so auf allen Geräten synchronisiert werden und auch die Lehrperson diese Lösung ggf. anschauen kann.
Ob sich der Aufwand das alles zu integrieren lohnt, ist schwer zu sagen. Wenn du es spannend findest, kannst du es einmal ausprobieren - aber wir haben auch Verständnis, wenn das zu viel Aufwand ist. Sonst gern einfach einmal eine Mail an mail@learningview.org schreiben und wir können dir ggf. auch einmal mit einem konkreten Beispiel helfen.
Viele Grüsse,
Michael
