Skip to main content

.EVENTS

Der EventManagerService stellt dir ein Event-System zur Verfügung, mit dem du auf Aktionen und Zustandsänderungen des Bots reagieren kannst. Du kannst eigene Hooks registrieren, auf Systemereignisse lauschen und Events manuell auslösen.

Typen

// Signatur eines Event-Hooks
type EventHookType = (eventName: string, ...args: unknown[]) => void;

addEventHook(id, fn, hook)

Registriert einen benannten Hook-Listener für ein bestimmtes Event. Über den dritten Parameter hook legst du fest, auf welches Event reagiert werden soll. Wenn du hook weglässt (oder "*" übergibst), wird der Hook bei jedem Event ausgelöst.

Signatur: addEventHook(id: string, fn: EventHookType, hook: string = "*"): void

// Auf ein bestimmtes Event lauschen
RAGAI.EVENTS.addEventHook('mein-hook', function(eventName, content) {
console.log('Event ausgelöst:', eventName, content);
}, 'runComplete');
// Auf alle Events lauschen (Wildcard)
RAGAI.EVENTS.addEventHook('mein-globaler-hook', function(eventName, ...args) {
console.log('Irgendein Event:', eventName, args);
});

addEventHookAddUserMessage(id, fn)

Registriert einen Hook speziell für das Event addUserMessage. Dieser wird immer dann ausgelöst, wenn der Nutzer eine Nachricht an den Bot sendet.

Signatur: addEventHookAddUserMessage(id: string, fn: EventHookType): void

RAGAI.EVENTS.addEventHookAddUserMessage('nachricht-listener', function(eventName, message) {
console.log('Nutzer hat geschrieben:', message);
});

removeEventHook(id) / off(id)

Entfernt einen zuvor registrierten Hook anhand seiner ID. off ist ein Alias für removeEventHook.

Signatur: removeEventHook(id: string): void / off(id: string): void

RAGAI.EVENTS.removeEventHook('mein-hook');

// Oder mit Alias
RAGAI.EVENTS.off('mein-hook');

triggerEventHook(hook, params) / trigger(name, params)

Löst ein Event manuell aus. Damit kannst du sowohl systemeigene als auch benutzerdefinierte Events anstoßen. trigger ist ein Alias für triggerEventHook.

Signatur: triggerEventHook(hook: string, params: unknown): void / trigger(name: string, params?: any): void

// Benutzerdefiniertes Event auslösen
RAGAI.EVENTS.triggerEventHook('mein-custom-event', { status: 'fertig' });

// Oder mit Alias
RAGAI.EVENTS.trigger('mein-custom-event', { status: 'fertig' });

listenTo(hook, fn, id?) / on(hook, fn, id?)

Kurzform für addEventHook. Registriert einen Hook auf ein bestimmtes Event und gibt die automatisch generierte oder übergebene ID zurück. on ist ein Alias für listenTo.

Signatur: listenTo(hook: string, fn: EventHookType, id?: string): string / on(hook: string, fn: EventHookType, id?: string): string

// Mit automatischer ID
const hookId = RAGAI.EVENTS.listenTo('runComplete', function(eventName, result) {
console.log('Bot-Run abgeschlossen:', result);
});

// Oder mit Alias und eigener ID
RAGAI.EVENTS.on('runComplete', function(eventName, result) {
console.log('Bot-Run abgeschlossen:', result);
}, 'mein-run-hook');

inActiveHook(seconds)

Erstellt einen zeitgesteuerten Hook, der nach einer festgelegten Inaktivitätsdauer (in Sekunden) automatisch ausgelöst wird. Der Rückgabewert enthält eine action-Eigenschaft, die du mit einer Callback-Funktion belegen kannst. Der Parameter count gibt an, wie oft der Hook bereits ausgelöst wurde.

Signatur: inActiveHook(seconds: number)

var inaktivHook = RAGAI.EVENTS.inActiveHook(45);
inaktivHook.action = function(count) {
console.log('Nutzer ist seit 45 Sekunden inaktiv. Auslösung Nr.:', count);
if (count === 1) {
RAGAI.MSG.addBotMessage('Bist du noch da?');
}
};

Wichtige System-Events

Hier eine Übersicht der wichtigsten Events, auf die du reagieren kannst:

Event-NameBeschreibung
runCompleteEin Bot-Run wurde vollständig abgeschlossen.
RAGAI.MSG.runCompleteWie runComplete, aber mit zusätzlichem Namespace-Prefix.
addUserMessageDer Nutzer hat eine Nachricht gesendet.
Benutzerdefinierte HooksDu kannst eigene Event-Namen frei vergeben und mit trigger auslösen.

Vollständiges Beispiel

await RAGAI.WAITFOR.initialIdle();

// Auf Nutzernachrichten reagieren
RAGAI.EVENTS.on('addUserMessage', function(eventName, message) {
console.log('Nachricht empfangen:', message);
});

// Auf Bot-Run-Abschluss reagieren
RAGAI.EVENTS.on('runComplete', function(eventName, result) {
console.log('Run abgeschlossen:', result);
});

// Eigenes Event auslösen und darauf reagieren
RAGAI.EVENTS.on('quiz-fertig', function(eventName, daten) {
console.log('Quiz beendet mit Punktzahl:', daten.punkte);
});

RAGAI.EVENTS.trigger('quiz-fertig', { punkte: 42 });

// Inaktivitäts-Hook: nach 60 Sekunden Inaktivität
var inaktiv = RAGAI.EVENTS.inActiveHook(60);
inaktiv.action = function(count) {
if (count <= 3) {
RAGAI.MSG.addBotMessage('Ich bin noch hier, falls du Fragen hast!');
}
};