ctx.ai
Mit ctx.ai können Sie in RunJS KI-Mitarbeiteraufgaben auslösen. Das ist nützlich in JSBlock, JSAction und anderen Interaktionen, bei denen ein Button, Formular oder Geschäftsablauf Arbeit an einen bestimmten KI-Mitarbeiter übergibt.
ctx.ai lädt Anhänge für KI-Aufgaben hoch und löst Aufgaben aus. Datei-Uploads können abgewartet werden, das Auslösen einer Aufgabe gibt jedoch kein Ausführungsergebnis zurück. Nach dem Aufruf läuft die Aufgabe im Konversationsfluss des KI-Mitarbeiters weiter.
ctx.ai wird vom AI-Plugin bereitgestellt. Wenn das AI-Plugin nicht aktiviert ist oder die aktuelle RunJS-Umgebung die passende Client-Funktion nicht geladen hat, kann ctx.ai fehlen. Prüfen Sie vor dem Aufruf ctx.ai?.uploadFile, ctx.ai?.triggerTask oder ctx.ai?.triggerModelTask.
Methoden
ctx.ai.uploadFile()
Lädt eine Datei hoch und gibt ein Anhangsobjekt zurück, das direkt an eine KI-Mitarbeiteraufgabe übergeben werden kann.
Der Upload verwendet den im AI-Plugin konfigurierten Dateispeicher und erstellt einen Datensatz in aiFiles. Das zurückgegebene Objekt enthält unter anderem id, filename, url und source:
Bei einem Fehler wird das Promise abgelehnt. Wenn ein Anhang nur aus der lokalen Dateiliste entfernt wird, bleibt der bereits in aiFiles erstellte Datensatz bestehen. Dieses Verhalten entspricht dem standardmäßigen KI-Chatfenster.
ctx.ai.triggerTask()
Löst eine KI-Mitarbeiteraufgabe direkt aus.
Häufige Felder von Task:
Ladezustand der Antwort verfolgen
Übergeben Sie onResponseLoadingChange in den Optionen auf oberster Ebene, um den Ladezustand der Modellantwort zu verfolgen. Der Callback erhält true, sobald NocoBase auf die Modellantwort wartet, und false, wenn sie abgeschlossen, abgebrochen oder fehlgeschlagen ist. Wenn die React-Komponente setResponseLoading bereits mit useState deklariert hat, können Sie Folgendes schreiben:
onResponseLoadingChange verfolgt nur die Modellantwort, die direkt durch diesen triggerTask()-Aufruf gestartet wurde. Bei autoSend: false bleibt die Aufgabe im Chatentwurf und der Callback wird nicht ausgeführt. Wenn der Benutzer den Entwurf später manuell sendet, wird dieser Callback nicht wiederverwendet.
In einer React-Komponente eines JS-Blocks löst diese Zustandsänderung ein erneutes Rendern aus, solange die Komponente eingebunden bleibt.
Eine AI Chat Box als Ziel festlegen
Setzen Sie chatBoxUid in den Optionen von triggerTask() auf oberster Ebene, um die Aufgabe in einem eingebundenen AI-Chat-Box-Block statt im globalen KI-Mitarbeiterdialog auszulösen.
Die uid muss zum äußeren AI-Chat-Box-Block gehören, der aktuell auf der Seite eingebunden ist. Legen Sie diesen Routing-Wert nicht in tasks ab. Wenn der Zielblock nicht gefunden wird, meldet NocoBase einen Fehler und fällt nicht auf den globalen Dialog zurück. Ohne chatBoxUid wird die Aufgabe im globalen KI-Mitarbeiterdialog ausgelöst.
Anhänge in JSBlock hochladen und senden
Das folgende Beispiel rendert in JSBlock einen Datei-Upload, ein Feld für die Aufgabenanweisung und einen Senden-Button. Hochgeladene Dateien werden über message.attachments an den KI-Mitarbeiter übergeben:
Mit autoSend: false werden Anhänge und Aufgabenanweisung als Entwurf in den KI-Chat übernommen, aber nicht sofort gesendet.
Seitenblockkontext hinzufügen
message.workContext wird aktuell verwendet, um Seitenblöcke zu übergeben. Tragen Sie dort die FlowModel uid des Zielblocks ein:
Wenn der aktuelle JSBlock selbst als Kontext verwendet werden soll, nutzen Sie die uid des aktuellen Modells:
Modell angeben
model legt das Modell für eine einzelne Aufgabe fest. Ohne Angabe wird die Standardmodellkonfiguration des KI-Mitarbeiters verwendet. null bedeutet, dass kein Modell auf Aufgabenebene gesetzt wird.
Skills / tools konfigurieren
skillSettings legt fest, welche skills und tools einer einzelnen Aufgabe zur Verfügung stehen. Ohne Angabe wird die Fähigkeitskonfiguration des KI-Mitarbeiters verwendet.
Um alle skills oder tools für diese Aufgabe ausdrücklich zu deaktivieren, übergeben Sie leere Arrays und behalten die Versionsfelder bei:
Beispiel:
Wenn aiEmployee eine Zeichenkette ist, sucht NocoBase exakt nach username unter den KI-Mitarbeitern, auf die der aktuelle Benutzer zugreifen kann.
ctx.ai.triggerModelTask()
Liest eine Aufgabe aus einem KI-Mitarbeiteraktionsmodell auf der Seite und löst sie aus.
Die öffentlichen Optionen von triggerModelTask() akzeptieren kein chatBoxUid. Um eine AI Chat Box als Ziel festzulegen, konfigurieren Sie chatBoxUid in der vordefinierten Aufgabe der KI-Mitarbeiteraktion. triggerModelTask() verwendet diesen voreingestellten Wert weiterhin.
options.onResponseLoadingChange verhält sich wie bei triggerTask(). Ob der Callback ausgeführt wird, hängt vom Wert autoSend der konfigurierten Aufgabe ab. Bei autoSend: false wird er nicht ausgeführt.
Wenn das Zielmodell nicht existiert, kein KI-Mitarbeiter konfiguriert ist oder der angegebene Index keine Aufgabe enthält, wird keine Aufgabe ausgelöst und eine Warnung in der Konsole ausgegeben.
Hinweise
triggerTask()undtriggerModelTask()sind fire-and-forget. Sie geben kein Ausführungsergebnis der KI-Mitarbeiteraufgabe zurück.uploadFile()gibt ein Promise zurück. Warten Sie auf den Abschluss des Uploads, bevor Sie eine Aufgabe mit diesem Anhang auslösen.- Zeichenketten in
aiEmployeewerden nur exakt gegenAIEmployee.usernameabgeglichen. triggerModelTask()verwendet einentaskIndex, der bei0beginnt.message.workContextbeschreibt aktuell nur Seitenblockkontext.triggerTask().chatBoxUidauf oberster Ebene muss auf einen aktuell eingebundenen AI-Chat-Box-Block verweisen.triggerModelTask()verwendet weiterhin das in der vordefinierten Aufgabe konfiguriertechatBoxUid.- Dynamische Anhänge von
triggerModelTask()werden an vorhandenemessage.attachmentsder vordefinierten Aufgabe angefügt, ohne die gespeicherte Konfiguration zu ändern. onResponseLoadingChangeverfolgt nur eine von diesem Aufruf automatisch gesendete Modellantwort. Eine später manuell gesendete Nachricht wird nicht verfolgt.
Verwandte Themen
- ctx.message: Zeigt leichte Hinweise vor und nach dem Auslösen von Aufgaben.
- ctx.render: Rendert Buttons oder Formulare in JSBlock.
- ctx.model: Ruft Informationen zum aktuellen FlowModel ab.

