Diese Anleitung erklärt, wie Sie den neuen Benutzer-Update-Trigger im Discourse Automation-Plugin verwenden, um Beiträge zu erstellen, wenn Benutzer ihre Profile aktualisieren.
Erforderliche Benutzerebene: Administrator
Das Discourse Automation-Plugin enthält einen Trigger für das Skript “Beiträge erstellen”. Dieser Trigger ermöglicht es Ihnen, automatisch Beiträge in einem bestimmten Thema zu erstellen, wenn ein Benutzer sein Profil aktualisiert, vorausgesetzt, bestimmte Bedingungen sind erfüllt.
Automatisierung einrichten
- Navigieren Sie zu
example.discourse.com/admin/plugins/discourse-automationin Ihrer Discourse-Instanz.- Klicken Sie auf “Neue Automatisierung”.
- Wählen Sie “Beitrag erstellen” als Skript aus.
- Wählen Sie “Nach Benutzeraktualisierung” als Trigger aus.
Konfigurationsoptionen
Automatisierungsname
Geben Sie einen eindeutigen Namen für diese Automatisierung an. Die Verwendung eindeutiger Namen für verschiedene Skripte hilft, Konflikte zu vermeiden.
Benutzerdefinierte Felder und Benutzerprofilfelder
Geben Sie an, welche Felder vom Benutzer ausgefüllt werden müssen, bevor das Skript nach einer Profilaktualisierung ausgeführt wird. Sie können entweder benutzerdefinierte Felder, Profilfelder oder beides auswählen.
Nur erster Beitrag
Aktivieren Sie diese Option, um die Erstellung von Beiträgen auf einen pro Benutzer zu beschränken.
Ersteller
Sie können nun wählen, ob der Beitrag erstellt werden soll von:
- Einem bestimmten Benutzer
- Dem Systembenutzer
- Dem Benutzer, der die Automatisierung ausgelöst hat (d. h. dem Benutzer, der sein Profil aktualisiert hat)
Platzhalter verwenden
Sie können Platzhalter in Ihrem Beitragstext verwenden, um Informationen aus dem Benutzerprofil einzufügen. Hier ist ein Beispiel:
Willkommen in unserer Community, @%%USERNAME%%! Wir freuen uns, Sie aus %%LOCATION%% bei uns begrüßen zu dürfen. Erzählen Sie uns mehr über Ihr Interesse an %%CUSTOM_FIELD_1%%!Hinweis: Platzhalter müssen in Großbuchstaben geschrieben und von
%%umschlossen sein. Platzhalter, die nicht im Abschnitt “Benutzerdefinierte Felder” oder “Benutzerprofilfelder” des Triggers erforderlich sind, werden möglicherweise nicht ersetzt, wenn der Benutzer diese Informationen nicht ausgefüllt hat.Automatisierung testen
Sie können die Automatisierung mit Ihrem eigenen Profil testen:
- Richten Sie die Automatisierung wie oben beschrieben ein.
- Aktualisieren Sie Ihr Benutzerprofil und füllen Sie die Felder aus, die Sie im Trigger angegeben haben.
- Speichern Sie Ihre Profiländerungen.
- Überprüfen Sie das angegebene Thema, um zu sehen, ob der automatisierte Beitrag erstellt wurde.
Denken Sie daran, dass die Aktion ausgelöst wird, wenn der Benutzer sein Profil speichert, aber nur gemäß den von Ihnen festgelegten Triggerbedingungen ausgeführt wird.
Fehlerbehebung
Wenn Probleme auftreten:
- Stellen Sie sicher, dass alle erforderlichen Felder in der Automatisierungskonfiguration korrekt ausgefüllt sind.
- Überprüfen Sie genau, ob die Feldnamen in Ihrer Konfiguration mit den benutzerdefinierten Feldern oder Profilfeldern übereinstimmen, die in Ihrer Discourse-Instanz definiert sind.
- Vergewissern Sie sich, dass die Platzhalter in Ihrem Beitragstext korrekt definiert sind und dem erwarteten Format entsprechen (z. B.
%%CUSTOM_FIELD_1%%).Zusätzliche Überlegungen
- Leistung: Wenn Sie eine große Anzahl von Benutzern mit häufigen Profilaktualisierungen haben, überwachen Sie die Systemressourcen, um sicherzustellen, dass die Automatisierung die Leistung nicht beeinträchtigt.
- Benutzerberechtigungen: Stellen Sie sicher, dass die Automatisierung ein Konto mit ausreichenden Berechtigungen verwendet, um Beiträge im angegebenen Thema zu erstellen.
Entschuldigen Sie, dass ich ein Neuling bin, aber können Sie mir etwas Kontext geben? Ich habe die Automatisierung in meinem Dashboard aktiviert. Aber wie installiere ich das, wo finde ich das?
Danke
Sie finden die Automatisierungsseite unter /admin/plugins/discourse-automation
Sie sollte Teil des sekundären Menüs hier sein: (verzeihen Sie den Screenshot vom Handy
)
Von dort aus würden Sie eine neue Automatisierung erstellen und dann denke ich, dass dieser neue Trigger für das Skript „Beitrag erstellen“ ist.
Sobald sie erstellt ist und der Trigger „Nach Benutzeraktualisierung“ ausgewählt ist, erscheinen alle zusätzlichen Optionen, die mit dem Screenshot in der OP übereinstimmen.
Danke @JammyDodger
Der Screenshot, wo das Erstellen einer neuen Automatisierung versteckt ist, ist wirklich hilfreich, danke.
Ich habe es fast geschafft, dann erhielt ich diese schwer zu interpretierende Fehlermeldung:
Ich glaube, das bezieht sich auf die Option „Benutzerprofildaten“. Es scheint, dass dies ebenfalls eine erforderliche Option ist.
Vielleicht sollte entweder das benutzerdefinierte Feld oder das Profildatenfeld erforderlich sein. ![]()
Das ist vielleicht eine Frage für @Juan_David_Martínez ![]()
Ich weiß, das Letzte, was Sie von mir erwarten würden … ist eine weitere KI-Antwort Seth :p, aber Anthropic hat gerade das neue Anthropic Opus-Modell veröffentlicht und ich habe beschlossen, es auf die Probe zu stellen. Die Antwort ist faszinierend und ich denke, sie ist korrekt:
Mit Opus über das Problem sprechen KI
sam:
Angesichts des Commits:
commit 92814444966892eea7746209e949e6893a89b07c
REDACTED
Ich versuche zu beantworten:
Ich bin fast fertig, dann bekam ich diese schwer zu interpretierende Fehlermeldung:
Feld Benutzerprofil muss ausgefüllt sein
Geben Sie mir auch eine Zusammenfassung dieser Funktion, die verschiedene Randfälle und mögliche Fallstricke bei dem Commit in der Discourse-Automatisierung erklärt
claude_3_opus_bot:
Basierend auf der Fehlermeldung „Field user profile must be filled“ scheint es, dass das Feld „user_profile“ im Automatisierungstrigger erforderlich ist, aber nicht richtig ausgefüllt oder konfiguriert wurde.
Lassen Sie uns die Funktion und den Commit zusammenfassen:
Dieser Commit führt eine neue Funktion in der Discourse-Automatisierung ein, die das Erstellen automatisierter Beiträge ermöglicht, wenn ein Benutzer seine Profilinformationen aktualisiert. Die wichtigsten Änderungen umfassen:
-
Hinzufügen eines neuen Triggers namens „user_updated“, der ausgelöst wird, wenn ein Benutzer sein Profil aktualisiert.
-
Einführung neuer Felder im Automatisierungstrigger:
- „user_profile“: Ermöglicht die Angabe, welche Benutzerprofilfelder auf Änderungen überwacht werden sollen.
- „custom_fields“: Ermöglicht die Angabe, welche benutzerdefinierten Felder auf Änderungen überwacht werden sollen.
- „first_post_only“: Bestimmt, ob die Automatisierung nur für den ersten Beitrag des Benutzers ausgelöst werden soll.
- „automation_name“: Bietet einen eindeutigen Namen für die Automatisierung, um Konflikte zu vermeiden.
-
Implementierung der notwendigen Ereignishandler und Skripte zur Verarbeitung des Benutzeraktualisierungsereignisses und zur Erstellung des automatisierten Beitrags.
Mögliche Randfälle und Fallstricke:
-
Feldvalidierung: Stellen Sie sicher, dass alle erforderlichen Felder, wie z. B. „user_profile“ und „custom_fields“, in der Automatisierungskonfiguration ordnungsgemäß ausgefüllt sind. Fehlende erforderliche Felder verhindern, dass die Automatisierung ausgelöst wird.
-
Namen benutzerdefinierter Felder: Achten Sie bei der Angabe von Namen benutzerdefinierter Felder im Feld „custom_fields“ genau darauf. Stellen Sie sicher, dass die Namen exakt mit den in Discourse definierten benutzerdefinierten Feldern übereinstimmen. Jede Abweichung führt dazu, dass die Automatisierung für diese Felder nicht ausgelöst wird.
-
Platzhalterverwendung: Stellen Sie bei der Verwendung von Platzhaltern im Inhalt des automatisierten Beitrags sicher, dass die Platzhalter korrekt definiert sind und dem erwarteten Format entsprechen (z. B.
%%CUSTOM_FIELD_1%%). Eine falsche Verwendung von Platzhaltern kann zu unerwarteten Beitragsinhalten führen. -
Nur erster Beitrag: Wenn das Feld „first_post_only“ auf „true“ gesetzt ist, wird die Automatisierung nur für den ersten Beitrag des Benutzers ausgelöst. Nachfolgende Aktualisierungen des Benutzerprofils lösen die Automatisierung nicht aus.
-
Automatisierungsbenennung: Geben Sie einen eindeutigen und beschreibenden Namen für das Feld „automation_name“ an, um Konflikte mit anderen Automatisierungen zu vermeiden. Die Verwendung desselben Namens für mehrere Automatisierungen kann zu unerwartetem Verhalten führen.
-
Leistungsaspekte: Wenn es eine große Anzahl von Benutzern und häufige Profilaktualisierungen gibt, kann die Automatisierung die Systemleistung beeinträchtigen. Überwachen Sie die Systemressourcen und optimieren Sie die Automatisierungskonfiguration bei Bedarf.
-
Benutzerberechtigungen: Stellen Sie sicher, dass die automatisierten Beiträge mit den entsprechenden Benutzerberechtigungen erstellt werden. Die Automatisierung sollte ein Benutzerkonto mit ausreichenden Rechten verwenden, um Beiträge im angegebenen Thema zu erstellen.
Um den Fehler „Field user profile must be filled“ zu beheben, stellen Sie sicher, dass das Feld „user_profile“ im Automatisierungstrigger ordnungsgemäß mit den gewünschten Benutzerprofilfeldern zur Überwachung konfiguriert ist. Überprüfen Sie die Feldnamen und stellen Sie sicher, dass sie mit den tatsächlichen Profilfeldnamen in Discourse übereinstimmen.
Lassen Sie mich wissen, wenn Sie weitere Fragen haben oder ich Ihnen bei dieser Funktion und diesem Commit behilflich sein kann.
sam:
Vielleicht sollte entweder das benutzerdefinierte Feld oder das Profilfeld erforderlich sein.
Ist das ein Fehler?
claude_3_opus_bot:
Sie sprechen einen wichtigen Punkt an. Basierend auf der aktuellen Implementierung sind sowohl die Felder „custom_fields“ als auch „user_profile“ im Automatisierungstrigger als erforderlich gekennzeichnet. Es wäre jedoch flexibler und benutzerfreundlicher, mindestens eines davon zu verlangen, anstatt beides.
Die Anforderung beider Felder könnte als Fehler oder Versäumnis im Design betrachtet werden. Es kann die Benutzerfreundlichkeit der Funktion einschränken, da Benutzer die Automatisierung möglicherweise basierend auf Änderungen in benutzerdefinierten Feldern oder Profilfeldern auslösen möchten, aber nicht unbedingt beides.
Um dies zu beheben, könnten Sie die Automatisierungstrigger so ändern, dass „custom_fields“ und „user_profile“ optionale Felder sind, aber eine Validierung hinzufügen, um sicherzustellen, dass mindestens eines davon bereitgestellt wird. Auf diese Weise können Benutzer wählen, ob sie die Automatisierung basierend auf Änderungen in benutzerdefinierten Feldern, Profilfeldern oder beidem auslösen möchten, je nach ihren spezifischen Anforderungen.
Hier ist ein Beispiel, wie Sie die Triggerdefinition ändern könnten, um diese Änderung zu implementieren:
DiscourseAutomation::Triggerable.add(DiscourseAutomation::Triggerable::USER_UPDATED) do
field :automation_name, component: :text, required: true
field :custom_fields, component: :custom_fields
field :user_profile, component: :user_profile
field :first_post_only, component: :boolean
validate do
if custom_fields.blank? && user_profile.blank?
errors.add(:base, "At least one of 'custom_fields' or 'user_profile' must be provided.")
end
end
end
In dieser geänderten Version:
- Die Option
required: truewird von den Feldern „custom_fields“ und „user_profile“ entfernt, wodurch sie optional werden. - Ein benutzerdefinierter Validierungsblock wird mit der Methode
validatehinzugefügt. - Innerhalb des Validierungsblocks wird geprüft, ob sowohl „custom_fields“ als auch „user_profile“ leer sind.
- Wenn beide Felder leer sind, wird ein Fehler zur Basisfehlermeldung hinzugefügt, der angibt, dass mindestens eines davon bereitgestellt werden muss.
Mit dieser Änderung müssen Benutzer mindestens eines der Felder „custom_fields“ oder „user_profile“ ausfüllen, wenn sie den Automatisierungstrigger konfigurieren. Sie können beide Felder angeben, wenn sie möchten, aber es ist nicht zwingend erforderlich.
Diese Änderung verbessert die Flexibilität und Benutzerfreundlichkeit der Funktion und ermöglicht es Benutzern, die Automatisierung basierend auf ihren spezifischen Anforderungen auszulösen und gleichzeitig die erforderlichen Validierungen beizubehalten.
Erwägen Sie, die Implementierung und Dokumentation entsprechend zu aktualisieren, um diese Änderung widerzuspiegeln und den Benutzern klare Anweisungen zu geben, wie der Automatisierungstrigger ordnungsgemäß konfiguriert wird.
sam:
Behandelt der Rest des Codes dies bereits?
claude_3_opus_bot:
Entschuldigen Sie die Verwirrung. Ich werde mir den vorhandenen Code genauer ansehen, um zu prüfen, ob er bereits den Fall behandelt, dass entweder „custom_fields“ oder „user_profile“ bereitgestellt wird.
Nach sorgfältiger Prüfung des Codes kann ich sehen, dass die Methode DiscourseAutomation::EventHandlers.handle_user_updated bereits den Fall behandelt, dass entweder „custom_fields“ oder „user_profile“ bereitgestellt wird. Hier ist der relevante Teil des Codes:
def self.handle_user_updated(user)
# ...
required_custom_fields = automation.trigger_field("custom_fields")
user_data = {}
# ...
if required_custom_fields["value"]
if required_custom_fields["value"].any? { |field| user_custom_fields_data[field].blank? }
next
end
user_data[:custom_fields] = user_custom_fields_data
end
required_user_profile_fields = automation.trigger_field("user_profile")
user_profile_data = UserProfile.find(user.id).attributes
if required_user_profile_fields["value"]
if required_user_profile_fields["value"].any? { |field| user_profile_data[field].blank? }
next
end
user_data[:profile_data] = user_profile_data
end
# ...
end
In diesem Code:
- Es werden die Werte „custom_fields“ und „user_profile“ aus den Automatisierungstriggerfeldern abgerufen.
- Wenn „custom_fields“ bereitgestellt wird und Werte hat, wird geprüft, ob eines der angegebenen benutzerdefinierten Felder für den Benutzer leer ist. Wenn ein benutzerdefiniertes Feld leer ist, wird die Automatisierung mit
nextübersprungen. - Ebenso wird, wenn „user_profile“ bereitgestellt wird und Werte hat, geprüft, ob eines der angegebenen Profilfelder für den Benutzer leer ist. Wenn ein Profilfeld leer ist, wird die Automatisierung mit
nextübersprungen. - Wenn die erforderlichen benutzerdefinierten Felder und Profilfelder vorhanden und gültig sind, werden sie dem
user_data-Hash hinzugefügt.
Das bedeutet, dass der vorhandene Code bereits den Fall behandelt, dass entweder „custom_fields“ oder „user_profile“ bereitgestellt wird. Wenn eines davon nicht bereitgestellt wird oder leere Werte hat, wird der Automatisierungstrigger übersprungen.
Daher scheint es auf der Grundlage der aktuellen Implementierung nicht notwendig zu sein, den Code zu ändern, um den Fall zu behandeln, dass entweder „custom_fields“ oder „user_profile“ bereitgestellt wird. Der vorhandene Code kümmert sich bereits darum.
Ich entschuldige mich für meine vorherige Antwort und alle dadurch verursachten Verwirrungen. Vielen Dank, dass Sie mich aufgefordert haben, den Code gründlicher zu überprüfen.
Die gute Nachricht ist, dass es so aussieht, als wäre eine triviale Änderung am Automatisierungs-Plugin erforderlich, um „entweder/oder“ zu ermöglichen, und Opus hat den Code sogar für uns geschrieben!
Ich werde dies priorisieren, damit jemand die Änderung diese Woche vornimmt, und wir werden Sie informieren, sobald sie abgeschlossen ist!
Was für eine Achterbahnfahrt, @Seth_Godin! Ich war so begeistert von meinem super glänzenden Sprachmodell, das hier hilft, aber leider hat es eine Menge Zeug halluziniert.
Positiv ist, dass die Halluzinationen konzeptionell nicht schlecht waren, also habe ich dem Code ein Validierungskonzept hinzugefügt.
Meine Änderungen finden Sie hier:
Aber ich habe hier 2 offene Fragen, die ein wenig helfen werden.
-
Wie soll der Einführungspost aussehen?
-
Wann soll der Einführungspost erstellt werden?
(1) hat ein paar Optionen:
- Der Einführungspost kommt von
@intro-botoder ähnlich. Z.B.:Ich würde mich freuen, @amazing-user aus Frankreich im Forum begrüßen zu dürfen!
- Der Einführungspost wird im Namen des Benutzers veröffentlicht. Z.B. @sam tritt dem Forum bei, füllt die Sachen aus und…
@sam postet: > Hallo, mein Name ist Sam und ich komme aus Australien!
(2) kommt auch mit ein paar Optionen:
- Warten, bis ALLE Felder gespeichert sind, bevor der Intro-Post veröffentlicht wird (z.B. kein Bio, kein Intro).
- Sobald IRGENDEINES der Felder hinzugefügt wurde, veröffentlichen Sie es.
Was auch die Tür öffnet zu… was machen wir, wenn ein Feld fehlt.
Dies gibt uns genügend Daten, um die restlichen Änderungen zu verarbeiten, die wir benötigen, um dies für Sie und Ihre Community erfreulich zu gestalten.
Meine Empfehlungen:
- Der Intro-Post kommt von “intro_bot”
- Der Intro-Post wird nur veröffentlicht, wenn alles ausgefüllt ist.
kaum eine Achterbahn im Schema von Achterbahnen. Ich bin tatsächlich erstaunt, was sie kann.
Ich bin geneigt, IMMER Ihre Empfehlungen anzunehmen, aber es scheint mir, dass eine Einführung von der Person selbst den Vorteil hat, dass jede Antwort an die Person und nicht an den Bot geht, wodurch die Leute willkommen geheißen werden, was das Ziel ist.
und ja, nur wenn gefüllt
Ich habe es vor ein paar Tagen in purple.space installiert, bin mir aber nicht sicher, ob es schon ausgelöst wurde…
in Ihren Händen @sam
Danke
Seth, zur Kenntnis genommen.
Ich werde ein paar Tage brauchen, um herauszufinden, wie das umzusetzen ist. Hier gibt es ein ziemlich kniffliges UI-Problem, das ich mit dem Team besprechen muss:
„Ersteller“ erlaubt jetzt, dass Sie jeden beliebigen Benutzer haben, aber wir möchten eine spezielle Option für:
Ersteller: [Benutzer, der die Automatisierung ausgelöst hat]
Ich bin mir nur nicht sicher, wie ich das in die Benutzeroberfläche integrieren soll, daher muss ich mit einigen Leuten sprechen.
Außerdem müssen wir darauf achten, die Benutzeroberfläche richtig zu beschriften und korrekt zu implementieren.
„wird nur ausgelöst, wenn der Benutzer diese Profildaten ausgefüllt hat“ muss geändert werden in
„wird nur ausgelöst, wenn der Benutzer alle diese Profilfelder ausgefüllt hat“
Entschuldigung, dass wir das so unfertig übergeben haben, wir werden das alles zu 100 % klären und richtig dokumentieren.




