.PARENT
Mit dem ParentManagerService (RAGAI.PARENT) kannst du aus dem Bot-iFrame heraus mit der übergeordneten Seite kommunizieren. Das ist besonders nützlich, wenn dein Bot per Embed-Code in eine externe Website eingebettet ist und du JavaScript im Kontext der Elternseite ausführen oder Daten aus ihr auslesen möchtest.
RAGAI.PARENT funktioniert nur, wenn der Bot in einem iFrame eingebettet ist. Wird der Bot eigenständig (ohne übergeordnetes Fenster) ausgeführt, haben die Aufrufe keinen Effekt.
.exec(code)
Führt JavaScript-Code im übergeordneten Fenster aus (Fire-and-Forget). Es wird kein Rückgabewert erwartet. Verwende diese Methode, um Aktionen auf der Elternseite auszulösen – z. B. DOM-Manipulationen, Navigationen oder visuelle Änderungen.
| Parameter | Typ | Beschreibung |
|---|---|---|
code | string | Der JavaScript-Code, der im Elternfenster ausgeführt wird |
// Einen Alert im Elternfenster anzeigen
RAGAI.PARENT.exec("alert('Nachricht vom Bot!')");
// Ein Element im Elternfenster ausblenden
RAGAI.PARENT.exec("document.getElementById('header').style.display = 'none'");
// Zu einer anderen Seite navigieren
RAGAI.PARENT.exec("window.location.href = '/danke'");
// Eine CSS-Klasse auf der Elternseite hinzufügen
RAGAI.PARENT.exec("document.body.classList.add('bot-aktiv')");
.get(code)
Führt JavaScript-Code im übergeordneten Fenster aus und gibt das Ergebnis als Promise zurück. Damit kannst du Werte aus der Elternseite auslesen – z. B. DOM-Inhalte, Variablen oder Konfigurationen.
| Parameter | Typ | Beschreibung |
|---|---|---|
code | string | Der JavaScript-Code, dessen Rückgabewert abgerufen wird |
Rückgabewert: Promise<any>
// Den Seitentitel der Elternseite abrufen
const titel = await RAGAI.PARENT.get("document.title");
console.log("Seitentitel:", titel);
// Eine Variable aus dem Elternfenster lesen
const wert = await RAGAI.PARENT.get("window.meineVariable");
// Die aktuelle URL der Elternseite abrufen
const url = await RAGAI.PARENT.get("window.location.href");
console.log("Aktuelle Seite:", url);
// Den Textinhalt eines Elements auf der Elternseite lesen
const text = await RAGAI.PARENT.get("document.getElementById('status').innerText");
Vollständiges Beispiel
Ein typisches Szenario: Der Bot liest den Nutzernamen von der Elternseite und passt daraufhin seine Begrüßung an.
await RAGAI.WAITFOR.initialIdle();
// Nutzernamen von der Elternseite lesen
const benutzername = await RAGAI.PARENT.get("document.getElementById('username')?.innerText");
if (benutzername) {
await RAGAI.MSG.botMessage(`Hallo ${benutzername}, wie kann ich dir helfen?`);
} else {
await RAGAI.MSG.botMessage("Hallo! Wie kann ich dir helfen?");
}
Hinweise
- Der übergebene Code wird im Kontext des Elternfensters ausgeführt, nicht im Bot-iFrame.
- Bei
.get()wird die Kommunikation überpostMessageabgewickelt. Das bedeutet, dass nur serialisierbare Werte (Strings, Zahlen, einfache Objekte) zurückgegeben werden können – keine DOM-Elemente oder Funktionen. - Achte darauf, dass die Elternseite das
embed.js-Skript eingebunden hat, da dieses diepostMessage-Anfragen verarbeitet.