Skip to main content

.WAITFOR

Der WaitForManagerService stellt dir asynchrone Wartefunktionen zur Verfügung. Damit kannst du sicherstellen, dass bestimmte Zustände erreicht sind, bevor du weitere Aktionen ausführst.

Wichtig

Rufe keine RAGAI-Kommandos auf, bevor initialIdle() abgeschlossen ist! Der Bot könnte sich noch im Setup befinden und Befehle ignorieren oder falsch ausführen.


initialIdle()

Wartet darauf, dass der Bot seine Initialisierung vollständig abgeschlossen hat und sich im Ruhezustand befindet. Diese Funktion muss als allererster RAGAI-Aufruf erfolgen, bevor du andere Befehle verwendest.

Signatur: initialIdle(): Promise<null>

await RAGAI.WAITFOR.initialIdle();
// Ab hier ist der Bot bereit
console.log('Bot ist initialisiert und bereit');

nextIdle()

Wartet darauf, dass der Bot den nächsten Idle-Zustand erreicht. Nützlich, um nach einem Bot-Run zu warten, bis der Bot seine Antwort vollständig ausgegeben hat.

Signatur: nextIdle(): Promise<null>

RAGAI.MSG.addUserMessage('Hallo');
await RAGAI.WAITFOR.nextIdle();
// Der Bot hat seine Antwort fertig geschrieben
console.log('Bot-Antwort abgeschlossen');

varsInit()

Wartet darauf, dass der Score- und KeyValue-Storage vollständig geladen sind. Rufe diese Funktion auf, bevor du auf gespeicherte Variablen zugreifst.

Signatur: varsInit(): Promise<void>

await RAGAI.WAITFOR.varsInit();
const punktzahl = RAGAI.SCORE.get('punkte');
console.log('Gespeicherte Punktzahl:', punktzahl);

event(hook)

Wartet darauf, dass ein bestimmtes Event (Hook) ausgelöst wird. Das Promise wird aufgelöst, sobald das angegebene Event eintritt.

Signatur: event(hook: string): Promise<unknown>

// Auf ein benutzerdefiniertes Event warten
const ergebnis = await RAGAI.WAITFOR.event('quiz-abgeschlossen');
console.log('Event eingetreten:', ergebnis);
// Auf ein System-Event warten
await RAGAI.WAITFOR.event('runComplete');
console.log('Bot-Run abgeschlossen');

seconds(n)

Wartet die angegebene Anzahl an Sekunden.

Signatur: seconds(n: number): Promise

console.log('Warte 3 Sekunden...');
await RAGAI.WAITFOR.seconds(3);
console.log('Weiter geht es!');

minutes(n)

Wartet die angegebene Anzahl an Minuten.

Signatur: minutes(n: number): Promise

// 2 Minuten Bearbeitungszeit geben
await RAGAI.WAITFOR.minutes(2);
RAGAI.MSG.addBotMessage('Die Zeit ist abgelaufen!');

secondsAndExec(seconds, fn)

Wartet die angegebene Anzahl an Sekunden und führt dann die übergebene Funktion aus. Im Gegensatz zu seconds() blockiert diese Methode nicht den weiteren Code-Ablauf.

Signatur: secondsAndExec(seconds: number, fn: () => unknown): void

// Nach 5 Sekunden eine Nachricht anzeigen (nicht-blockierend)
RAGAI.WAITFOR.secondsAndExec(5, function() {
RAGAI.MSG.addBotMessage('Brauchst du vielleicht einen Hinweis?');
});

// Dieser Code wird sofort ausgeführt, ohne zu warten
console.log('Timer läuft im Hintergrund');

minutesAndExec(minutes, fn)

Wartet die angegebene Anzahl an Minuten und führt dann die übergebene Funktion aus. Wie secondsAndExec blockiert diese Methode nicht den weiteren Code-Ablauf.

Signatur: minutesAndExec(minutes: number, fn: () => unknown): void

// Nach 10 Minuten eine Erinnerung anzeigen
RAGAI.WAITFOR.minutesAndExec(10, function() {
RAGAI.MSG.addBotMessage('Du arbeitest schon eine Weile. Denke daran, eine Pause zu machen!');
});

scormInited()

Wartet darauf, dass die SCORM-Schnittstelle vollständig initialisiert ist. Nutze diese Funktion, wenn dein Bot in einem SCORM-kompatiblen LMS eingebettet ist.

Signatur: scormInited(): Promise<null>

await RAGAI.WAITFOR.scormInited();
console.log('SCORM ist bereit');

Vollständiges Beispiel

// Immer zuerst auf Initialisierung warten!
await RAGAI.WAITFOR.initialIdle();

// Variablen-Storage laden
await RAGAI.WAITFOR.varsInit();

// Bot-Nachricht senden und auf Antwort warten
RAGAI.MSG.addUserMessage('Starte das Quiz');
await RAGAI.WAITFOR.nextIdle();

// Nicht-blockierender Timer für Hinweise
RAGAI.WAITFOR.secondsAndExec(30, function() {
RAGAI.MSG.addBotMessage('Tipp: Lies die Frage nochmal genau durch.');
});

// Auf benutzerdefiniertes Event warten
const antwort = await RAGAI.WAITFOR.event('quiz-antwort');
console.log('Nutzer hat geantwortet:', antwort);

// Kurze Pause vor der Auswertung
await RAGAI.WAITFOR.seconds(2);
RAGAI.MSG.addBotMessage('Auswertung wird vorbereitet...');