@gilles Ich habe den oben erwähnten Follow-up nun implementiert:
Er fügt eine generische Event → Anwesenheit setzen-Operation hinzu, mit:
Teilnehmer
Anwesenheitsstatus: Gehe hin / Interessiert / Gehe nicht hin / Anwesenheit entfernen
Topic-ID
optionaler Actor
So lässt sich dein ursprünglicher Use Case wie folgt aufbauen:
Beitrag erstellt → Wenn erster Beitrag → Event / Anwesenheit setzen
wobei der Autor des Events als Teilnehmer verwendet wird und dieser auf Gehe hin gesetzt wird.
Ich habe genau dieses Muster lokal in der Workflows-GUI getestet, gestapelt auf #42932, und bestätigt, dass der Benutzer automatisch als „Gehe hin“ für das Event registriert wird.
Der PR ist derzeit nur ein Entwurf, da er von #42932 abhängt. Sobald #42932 gemerged wird, rebased ich ihn auf main, was nur den Diff für die Anwesenheitsfunktion übrig lassen wird.
Gibt es eine Möglichkeit, einen Workflow (mit demselben Ereignis) erneut auszuführen, ähnlich wie bei einem Webhook, bei dem eine Nutzlast erneut gesendet werden kann?
Gibt es einen Trigger/ein Ereignis, das ausgelöst wird, wenn ein NEUES Tag erstellt wird?
Wenn ein Benutzer ein neues Tag erstellt, gibt es eine Möglichkeit, es automatisch einer bestimmten Tag-Gruppe hinzuzufügen? Wenn nicht, welcher Ansatz wird empfohlen?
Es gibt „Topic Tag Changed“ (Thema-Tag geändert). Du könntest dann die Discourse-API aufrufen und prüfen, wie oft das Tag verwendet wird. Wenn es nur einmal vorkommt / wenn es in diesem bestimmten Thema ist, weißt du, dass das Tag neu ist.
Alternativ und vielleicht einfacher: Du könntest einen Webhook für „Tag wird erstellt“ einrichten und diesen auf einen Workflow-Webhook-Trigger zeigen lassen.
Anwendungsfall: Ich habe eine Tag-Gruppe namens „artist“ (Künstler). Da ständig neue Künstler debütieren, tauchen neue Künstler-Tags auf, sobald Benutzer sie erstellen. Ich möchte, dass diese neuen Tags automatisch der Tag-Gruppe „artist“ hinzugefügt werden, anstatt sie manuell eintragen zu müssen. Gibt es eine gute Möglichkeit, dieses Ergebnis mit Workflows zu erzielen?
Genau das übernimmt der KI-Schritt. Der KI-Agent prüft zunächst, ob ein neuer Tag zu einer der definierten Gruppen (Künstler / Mitglied / Region / Event-Typ / Release-Typ) passt; falls nicht, wird er übersprungen und keiner Gruppe zugeordnet. So werden zufällige Tags herausgefiltert, und nur korrekt klassifizierte Tags werden automatisch einer Tag-Gruppe hinzugefügt.
Ich möchte ein Thema mit einem Tag versehen, wenn es mit bestimmten Text erstellt wurde. Gibt es eine Möglichkeit, {{ $JSON.topic.title }} in Kleinbuchstaben umzuwandeln, damit der Ausdruck für “pub run”, “Pub Run” und “pUb rUn” den Wert true ergibt?
Es scheint sich um Discourse Workflows’ eigenes JavaScript-Ausdruckssystem zu handeln, das serverseitig in einer Sandbox ausgewertet wird, anstatt eine separate Template-Sprache wie Liquid oder Handlebars zu verwenden.
So funktioniert beispielsweise:
={{ $json.topic.title.toLowerCase() }}
damit der Inhalt von {{ ... }} als JavaScript ausgewertet wird und toLowerCase() die übliche JavaScript-Stringmethode ist.
Die Implementierung befindet sich in plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb; sie stellt workflow-spezifische globale Variablen wie $json, $input, $itemIndex, $trigger, $execution und $() bereit.
Die Syntax und die Konzepte ähneln stark n8n. Tatsächlich gibt es an anderer Stelle im Workflows-Quellcode einen expliziten Verweis auf n8n:
Der unten verlinkte Commit fügte das Kombinationsverhalten des Merge-Knotens hinzu und enthält einen Test, der wie folgt beschrieben wird:
defaults clash handling to add_suffix (matches n8n position combine)
Es gibt also Hinweise darauf, dass Teile von Workflows bewusst das Verhalten von n8n nachahmen, obwohl ich nichts Explizites finden konnte, das besagt, dass die Ausdruckssprache selbst von n8n übernommen oder auf dieser basiert. Ich würde sie daher als von Discourse Workflows bereitgestellte, in einer Sandbox ausgeführte JavaScript-Ausdrücke beschreiben, die einige n8n-ähnliche Konventionen aufweisen.
Ich habe bemerkt, dass der Schritt „KI-Agent“ erfordert, dass für den Agenten die Option „Bot“ aktiviert ist. Warum ist das nötig? Steht das irgendwo in der Dokumentation? Ich habe ein paar Minuten damit verbracht herauszufinden, warum ich einen bestimmten Agenten im Dropdown-Menü nicht auswählen konnte