Discourse-Arbeitsabläufe

:discourse2: Zusammenfassung Discourse Workflows ermöglicht es Administratoren, über einen visuellen Builder fortgeschrittene Automatisierungen zu erstellen, um nahezu alles in Ihrer Community zu automatisieren.
:open_book: Installationsanleitung Dieses Plugin ist im Discourse-Kern enthalten. Eine separate Installation des Plugins ist nicht erforderlich.

Workflows ist ein visueller Automatisierungs-Builder, der es Administratoren ermöglicht, komplexe, mehrstufige Automatisierungen mit einer Drag-and-Drop-Oberfläche zu erstellen – indem Trigger, Bedingungen, Aktionen und Flusssteuerungsknoten verbunden werden, um nahezu alles auf Ihrer Discourse-Site zu automatisieren.

:discourse: Discourse Workflows ist in den Business- oder Enterprise-Plänen verfügbar.

Wichtige Konzepte

Wenn Sie mit anderen Automatisierungstools vertraut sind, werden Sie die meisten Begriffe, die in Workflows verwendet werden, wahrscheinlich wiedererkennen:

  • Workflow: Eine gespeicherte Automatisierung, die aus verbundenen Knoten besteht.
  • Knoten: Ein einzelner Schritt in einem Workflow: Trigger, Bedingungen, Aktionen und Flusssteuerung / Hilfsprogramme.
  • Trigger: Der Startpunkt eines Workflows. Ein Trigger kann manuell ausgelöst werden oder durch ein bestimmtes Ereignis – z. B. das Erstellen eines Themas, das Auslösen eines Zeitplans oder ein eingehendes Webhook.
  • Bedingung: Ein Routing-Knoten, der eine Regel auswertet und den Fluss in Zweige aufteilt. Zum Beispiel leitet ein If-Knoten den Fluss basierend auf einer wahren oder falschen Auswertung weiter.
  • Aktion: Ein Knoten, der eine bestimmte Aufgabe ausführt – z. B. das Erstellen eines Beitrags, das Verleihen eines Abzeichens, das Aufrufen einer externen API usw.
  • Element: Die Daten, die zwischen den Knoten fließen. Elemente sind JSON-Objekte, die Sie in Ausführungsprotokollen inspizieren und mit Ausdrücken referenzieren können.
  • Ausdruck: Ein dynamischer Wert, der als {{ ... }} geschrieben wird, zur Laufzeit aufgelöst wird und verwendet wird, um auf Daten aus früheren Knoten, Workflow-Variablen oder Site-Einstellungen zu verweisen.

Erstellen eines Workflows

So erstellen Sie einen Workflow:

  1. Gehen Sie zu Admin > Plugins > Workflows und klicken Sie auf Neuer Workflow.

  1. Benennen Sie Ihren Workflow.
  2. Klicken Sie auf Ersten Schritt hinzufügen und wählen Sie Ihren Trigger.

  1. Verwenden Sie die +-Schaltfläche, um weitere Knoten hinzuzufügen.

  1. Doppelklicken Sie auf einen Knoten, um ihn zu konfigurieren. Im Konfigurationsfeld werden auf der linken Seite Details zu den Eingaben des Knotens und auf der rechten Seite des Bildschirms Details zu den Ausgaben des Knotens angezeigt. Möglicherweise müssen Sie den Workflow einmal ausführen, bevor alle verschiedenen Details angezeigt werden.

  1. Wenn Sie bereit sind, den Workflow live zu schalten, klicken Sie auf Veröffentlichen.

:light_bulb: Tipps:

  • Verwenden Sie Sticky Notes (Haftnotizen), die sich im Menü mit den drei Punkten oben rechts im Builder befinden, um zu dokumentieren, was Ihr Workflow tut. Haftnotizen haben keinen Einfluss auf den Workflow, machen Vorlagen und freigegebene Workflows jedoch leichter verständlich.
  • Verwenden Sie während der Entwicklung den Log-Knoten (Protokollknoten), um Debug-Werte in das Ausführungsprotokoll zu senden, ohne das Verhalten des Workflows zu beeinträchtigen.
  • Sie können Workflows als JSON exportieren und importieren, um sie mit Teammitgliedern zu teilen oder Workflows von anderen Sites zu rekonstruieren.

Ausdrücke und dynamische Daten

Felder, die Ausdrücke akzeptieren, zeigen im Editor eine {/}-Schaltfläche. Klicken Sie darauf, um in den verfügbaren Daten des Triggers und früherer Knoten zu suchen und eine Referenz einzufügen.

Häufig verwendete Ausdrücke

Ausdruck Was es zurückgibt
{{ $json.topic.title }} Der Titel des Themas aus dem aktuellen Element
{{ $json.post.url }} Die URL des Beitrags aus dem aktuellen Element
{{ $json.user.username }} Der Benutzername des Benutzers, der mit dem aktuellen Element verknüpft ist
{{ $vars.my_variable }} Der Wert einer Workflow-Variable mit dem Namen my_variable
{{ $site_settings.title }} Der Titel Ihrer Site
{{ $execution.id }} Die eindeutige ID der aktuellen Ausführung
{{ $('Node Name').item.json.property }} Ausgabe eines bestimmten upstream-Knotens, referenziert über seinen Namen auf der Leinwand

Statische und dynamische Werte

Felder, die mit = beginnen, werden als Ausdrücke behandelt. Felder ohne führendes = werden als Klartext behandelt. Der Ausdrucksauswahl-Assistent übernimmt dies automatisch für Sie.

Workflows verwalten

Es gibt eine Reihe von Funktionen, die Ihnen beim Verwalten Ihrer vorhandenen Workflows helfen.

Ausführungen

Jedes Mal, wenn ein Workflow ausgeführt wird, protokolliert Discourse eine Ausführung. Gehen Sie zu Workflows → Ausführungen, um die Historie anzuzeigen.

Jede Ausführung zeigt Datum und Uhrzeit des Abschlusses sowie den Status:

  • Abgeschlossen: Wurde ohne Fehler bis zum Ende ausgeführt.
  • Fehler: Ist an einem bestimmten Knoten fehlgeschlagen; klicken Sie auf die Ausführung, um den Fehler und die Daten, die ihn verursacht haben, anzuzeigen.
  • Läuft: Wird derzeit verarbeitet.
  • Wartet: Wurde aufgrund eines Wait-Knotens (Warten-Knotens) pausiert; wartet auf eine Antwort in einem Formular, Modal, Chat-Freigabe; oder ein Call-Workflow-Knoten, der darauf wartet, dass ein Unter-Workflow abgeschlossen wird.
  • Rate limitiert: Der Workflow wurde aufgrund von Ratenbegrenzung übersprungen.
  • Übersprungen: Der Trigger wurde ausgelöst, aber der Workflow war nicht veröffentlicht.

Sie können auf die Anzeigen-Schaltfläche klicken, um einen detaillierteren Blick auf die Ausführung des Workflows zu werfen. Dies zeigt jeden Schritt des Workflows, den Sie erweitern können, um die genauen Details und die Dauer dieses Schritts anzuzeigen.

Unten auf der Seite können Sie die Gesamtdauer des Workflows sehen. Sie können das Protokoll bei Bedarf auch Exportieren, um es zu teilen oder zur Fehlerbehebung zu verwenden.

Einstellungen

Auf der Registerkarte Workflows → Einstellungen können Sie:

  • Einen Fehler-Workflow konfigurieren, der ausgelöst werden soll, wenn bei der Ausführung dieses Workflows Fehler auftreten. Wenn der Workflow einen Fehler-Trigger hat, werden Fehler gemäß der Definition dieses Triggers behandelt.
  • Die Zeitzone für Zeitplan-Trigger festlegen. Wenn dies nicht gesetzt ist, wird standardmäßig die Zeitzone der Site verwendet.
  • Den Workflow löschen. :warning: Dies ist endgültig, daher sollten Sie Ihren Workflow exportieren (zugänglich über das Menü mit den drei Punkten in der oberen rechten Ecke des Workflow-Builders), bevor Sie fortfahren.

Versionen

Jedes Mal, wenn Sie eine Aktualisierung am Workflow vornehmen, speichern wir die vorherige(n) Version(en). Dies macht es einfach, Änderungen, die nicht wie erwartet funktioniert haben, mit Zurücksetzen rückgängig zu machen.

Variablen

Variablen sind Schlüssel-Wert-Paare, die auf einen einzelnen Workflow beschränkt sind. Definieren Sie sie im Variablen-Panel des Workflows und referenzieren Sie sie überall mit {{ $vars.key_name }}. Verwenden Sie Variablen, um Konfigurationswerte (wie eine Kategorie-ID oder einen Empfänger-Benutzernamen) zu speichern, die Sie ändern möchten, ohne den Workflow-Graphen bearbeiten zu müssen.

Anmeldeinformationen

Einige Knoten – wie HTTP-Anforderung oder AI-Agent – müssen sich bei externen Diensten authentifizieren. Speichern Sie API-Schlüssel und Geheimnisse in Workflows → Anmeldeinformationen, anstatt sie direkt in Knotenfelder einzufügen. Anmeldeinformationen werden verschlüsselt gespeichert und können über Workflows hinweg wiederverwendet werden.

Unterstützte Anmeldeinformationstypen:

  • Basic Auth (Benutzername + Passwort)
  • Bearer-Token
  • Header-Auth (benutzerdefinierter Header-Name und -Wert)

Datentabellen

Datentabellen sind persistente, strukturierte Tabellen, die intern im Workflows-Plugin verwaltet werden. Verwenden Sie den Datentabelle-Knoten, um darauf zu lesen oder zu schreiben. Sie unterstützen die Spaltentypen string, number, boolean und date.

Datentabellen sind nützlich für:

  • Entduplizierung – protokollieren, welche Benutzer oder Themen ein Workflow bereits verarbeitet hat
  • Status – verfolgen, ob sich ein Thema in einer bestimmten Phase eines Prozesses befindet
  • Nachschlagen – speichern Zuordnungen (wie Thema-ID → zugewiesenes Staff-Mitglied), die Ihre Workflows abfragen können

Ausführungen

Sie können alle Ausführungen aller Workflows auf der Registerkarte Ausführungen anzeigen. Das Format und die Funktion sind den workflowspezifischen Ausführungen sehr ähnlich, zeigen aber alle Workflows an, was die Überwachung erleichtert.

Vorlagen

Wenn Sie einen neuen Workflow erstellen, können Sie anstelle einer leeren Leinwand mit einer Vorlage beginnen. Vorlagen sind vorgefertigte Workflows für häufige Anwendungsfälle – sie sind mit Haftnotizen versehen, die erklären, wie sie funktionieren, und sind ein guter Weg, das System kennenzulernen.

:megaphone: Interessiert daran, mehr Vorlagen zu sehen? Wir werden die Bibliothek der verfügbaren Vorlagen im Laufe der Zeit erweitern, aber lassen Sie uns bitte wissen, wenn es eine Vorlage gibt, die Sie hier sehen möchten, um Ihre Nutzung von Workflows zu erleichtern.

Sie können auch jeden Workflow als JSON-Datei exportieren, um ihn mit anderen zu teilen oder als eigenen Ausgangspunkt zu verwenden.

21 „Gefällt mir“

Hallo, beim Versuch, dieses Plugin zu aktivieren, erhalte ich folgende Fehlermeldung: Sie haben keine Berechtigung, die versteckten Einstellungen zu ändern: discourse_workflows_enabled

2 „Gefällt mir“

Derzeit muss es unter /admin/config/upcoming-changes aktiviert werden, nicht unter admin/plugins

3 „Gefällt mir“

Hi, wenn ich den Zweck dieser Workflows richtig verstehe, wäre ein Template-Beispiel, das ich mir wünsche, ein Admin-Button für Themen, der das Thema sofort nach oben bringt. Ist das machbar? :grinning_face:

1 „Gefällt mir“

Moin!

Wie stellen wir sicher, dass „Build with AI“ ein bestimmtes LLM verwendet?
Wenn wir Google Gemini als Standard-LLM in unserem System verwenden, erhalten wir den Fehler: Invalid JSON payload received. Unknown name “additionalProperties” at ‘tools[0].function_declarations[5].parameters’: Cannot find field

Danke!

1 „Gefällt mir“

Welches Gemini-Modell verwenden Sie? Um es zu ändern, wählen Sie den Workflow-Agenten aus und ersetzen Sie das standardmäßige LLM darauf.

1 „Gefällt mir“

Hey Sam! Gemini 3 Flash.

Ich habe die Workflow-Einstellung gefunden und es war tatsächlich Gemini Flash 3. Ich habe auf GPT Nano 5 umgestellt, erhalte aber immer noch denselben Fehler.

Ich habe sogar den Standard für alle auf GPT Nano 5 geändert und die individuelle Workflow-Einstellung überprüft. Diese habe ich ebenfalls auf „Überschreiben mit GPT Nano 5“ gesetzt.

Immer noch kein Erfolg. :frowning:

1 „Gefällt mir“

Besteht die Möglichkeit, dass du Zugriff auf Luna, Terra, 3.5 Flash oder Sonnet hast?

Der KI-Agent-Workflow verfügt über ziemlich viele Tools, sodass er in der Regel ein aktuelles LLM erfordert.

1 „Gefällt mir“

Ich hätte schwören können, dass Flash Lite funktioniert hat, aber das tat es nicht. GPT Nano 5 hat definitiv funktioniert. Es sieht so aus, als sei dies ein bekanntes Problem, selbst bei WordPress. Hier ist ein Link zur Referenz. Was wir tun müssen, ist, wann immer wir einen Gemini-Anbieter verwenden, das Element additionalProperties aus dem JSON-Antwort-Schema zu entfernen: Remove `additionalProperties` from the JSON response schema - Pull Request #18 - WordPress/ai-provider-for-google - GitHub

Uff, ich arbeite gerade intensiv an einem Wechsel zur Interactions API, was uns hoffentlich nächste Woche eine deutlich stabilere Schnittstelle zu den Gemini-Modellen bieten wird.

2 „Gefällt mir“

Super und danke für die schnelle Antwort! Ich habe noch mehr Inhalte gefunden, aber ich denke, du hast die Idee verstanden. :wink:

Hier ist Googles eigene Erklärung zu Gemini. Hoffentlich ergibt das Sinn? Ich verstehe nicht alles davon, aber ich weiß nur, dass es bei dieser Eigenschaft versagt. LOL.

Zusammenfassung: Der Fehler bleibt bestehen, weil Google für die Schema-Verarbeitung zwei völlig unterschiedliche Engines verwendet. Während Gemini standardmäßiges JSON-Schema für Strukturierte Ausgaben (response_json_schema) unterstützt, verwendet seine Function Calling / Tool Execution-Engine weiterhin Googels strengen OpenAPI 3.0 Protobuf-Parser, der additionalProperties ablehnt oder daran scheitert.

1. Tool Calling vs. Strukturierte Ausgabe (Die Engine-Aufteilung)

Die Gemini-API von Google validiert Schemata an zwei separaten Stellen:

  • Strukturierte Ausgaben (response_json_schema): Entwickelt für die Formatierung der finalen Antwort des Modells. Es verwendet die Standard-JSON-Schema-Parsing-Methode und verarbeitet additionalProperties sauber.

  • Tool / Function Calling (tools[0].function_declarations): Entwickelt, um Site-Tools (wie Discourse AI-Suche, Persona-Aktionen oder Websurfen) an das Modell zu übergeben. Dieser Endpunkt analysiert Schemata in Googles internes google.ai.generativelanguage.v1beta.Schema Protobuf-Objekt.

Da der Tool-Endpunkt Parameter auf einen Legacy-OpenAPI 3.0-Subset abbildet, führt das Senden von additionalProperties in einer Funktionsdeklaration dazu, dass der API-Parser einen 400 Bad Request oder MALFORMED_FUNCTION_CALL zurückgibt.

GitHub

2. Warum Frameworks wie Discourse dies einfügen

Orchestrierungs-Frameworks (Discourse AI, Model Context Protocol/MCP, LangChain, Pydantic, Zod) generieren automatisch JSON-Schemata für benutzerdefinierte Tools:

  1. Standardeinstellungen für strenge Durchsetzung: Generatoren fügen automatisch "additionalProperties": false hinzu, um strenge Parametertypisierung zu erzwingen.

  2. Dynamische Maps/Wörterbücher: Wenn ein Tool-Parameter ein Schlüssel-Wert-Hash/Wörterbuch verwendet (z. B. dict[str, Any] oder ein Ruby Hash), geben Schema-Generatoren "additionalProperties": { "type": "string" } aus.

  3. Nicht bereinigte Payload: Wenn Discourse diese automatisch generierten Tool-Schemata an Googles Endpunkt für Funktionsdeklarationen sendet, markiert der Protobuf-Parser von Gemini additionalProperties als ungültiges oder unbekanntes Feld.

3. Wie man das Problem in Discourse löst

Wenn du diesen Fehler bei Discourse AI Tool-Aufrufen siehst:

  • Vermeide dynamische Hash-/Dict-Parameter: Stelle sicher, dass benutzerdefinierte Tool-Parameter jeden erwarteten Schlüssel unter properties explizit definieren, anstatt offene Objekte zu verwenden.

  • Serialisiere dynamische Daten als Strings: Wenn ein Tool beliebige Schlüssel-Wert-Paare akzeptieren muss, definiere den Parameter als STRING und weise das Tool an, eine serialisierte JSON-Zeichenfolge zu akzeptieren.

  • Filtere additionalProperties in benutzerdefinierten Tools heraus: Wenn du benutzerdefinierte KI-Tools unter /admin/plugins/discourse-ai/ai-tools definiert hast, bearbeite das Parameter-JSON-Schema, um alle "additionalProperties"-Blöcke zu entfernen.

Ich habe gerade einen PR erstellt, der die Unterstützung für die Interaktions-API hinzufügt. Wenn du eine Testumgebung hast, wäre ich dankbar für etwas mehr Testing.

Gibt es Pläne, die Abrufung externer Benutzer-IDs über Workflows zu ermöglichen? Ich möchte ein Formular erstellen, das vor dem Fortsetzen einige Informationen über den aktuellen Benutzer im Identitätsanbieter-System überprüft, aber der „Benutzer abrufen“-Knoten gibt, soweit ich das beurteilen kann, kein external_id-Feld aus.

Danke für das Feedback, das sollte es tun: FIX: supports optional data for workflow user node (#42400) · discourse/discourse@4d0c688 · GitHub

3 „Gefällt mir“