.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-Name | Beschreibung |
|---|---|
runComplete | Ein Bot-Run wurde vollständig abgeschlossen. |
RAGAI.MSG.runComplete | Wie runComplete, aber mit zusätzlichem Namespace-Prefix. |
addUserMessage | Der Nutzer hat eine Nachricht gesendet. |
| Benutzerdefinierte Hooks | Du 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!');
}
};