Hallo zusammen,
ich versuche, eine benutzerdefinierte Automatisierung zu erstellen, bei der der Ersteller des Themas eine private Nachricht erhält, wenn eine Abfrage als Lösung/gelöst markiert wird (oder alternativ eine neue Antwort im Thread mit einer vordefinierten Nachricht erstellt wird – in beiden Fällen wäre es eine Umfrage).
Es muss eine benutzerdefinierte Automatisierung sein, da das aktuelle verfügbare Skript „PMs senden“ im Automatisierungs-Plugin die PMs an denjenigen sendet, der die als Lösung/gelöst markierte Antwort gesendet hat (und nicht an die Person, die das Thema erstellt hat, wie in meinem Anwendungsfall beabsichtigt).
Unten ist das Skript, das ich erstellt habe, um zu versuchen, eine neue Antwort im Thema zu posten, sobald eine Antwort als Lösung markiert ist (im folgenden Beispiel sende ich die Umfrage nicht als Antwort, sondern gebe dem Administrator die Freiheit, zu wählen, was zurückgegeben wird, oder es als Standard zu belassen):
# frozen_string_literal: true
DiscourseAutomation::Scriptable.add(DiscourseAutomation::Scripts::REPLY_ON_SOLUTION) do
field :reply_text, component: :text
# field :answering_user, component: :user
field :once, component: :boolean
version 1
triggerables %i[:first_accepted_solution] if defined?(DiscourseSolved)
placeholder :sender_username
placeholder :word
script do |context, fields, automation|
topic = context["topic"]
# user = context["user"]
reply_text = fields.dig("reply_text", "value")
# Eine Antwort im Thema posten, in dem eine Lösung markiert wurde
PostCreator.create!(
Discourse.system_user,
topic_id: topic.id,
raw: reply_text || "Eine Lösung wurde für dieses Thema markiert!",
)
end
end
Aber ich bin mir nicht sicher, ob es PostCreator.create! oder PostCreator.reply oder vielleicht etwas anderes sein sollte. Was mich zu einer Frage bringt:
- Gibt es irgendwo eine Dokumentation über die Schlüsselwörter, die bei der Erstellung eines benutzerdefinierten Automatisierungsskripts verwendet werden?
Basierend auf der obigen Automatisierung erhalte ich, wenn ich sie auslöse, indem ich eine Antwort als Lösung markiere, nach 1 Sekunde eine Popup-Meldung mit einer Fehlermeldung „500 Internal Server Error“ auf dem Bildschirm.
- Fehlt mir etwas? Meine Bereitstellung erfolgte mit devcontainers, auf meinem lokalen Rechner zu Entwicklungszwecken.
- Was muss getan werden, nachdem das benutzerdefinierte Skript erstellt wurde? Vielleicht fehlt mir in dieser Phase etwas? Oder vielleicht ist es ein Problem im Skript selbst?
- Gibt es irgendwo eine Dokumentation über die Schritte, die nach Fertigstellung Ihres Skripts unternommen werden müssen? Zum Beispiel: Welche Dateien müssen geändert werden, damit alles reibungslos funktioniert? (Ich habe auf die harte Tour herausgefunden, dass ich die Datei
client.en.ymlfür den korrekten Namen und die Beschreibung in der Automatisierungsliste ändern musste.)
Ich plane, einen Versuch zu wagen, basierend auf dem integrierten Skript „PMs senden“, mein Skript zu ändern, um stattdessen PMs zu senden, anstatt eine Antwort zu erstellen, aber ich bin mir nicht sicher bezüglich Folgendem:
- Wie würde ich die Person markieren, die das Thema erstellt hat, und nicht diejenige, die die als Lösung markierte Antwort erhalten hat?
Vielen Dank im Voraus für jeden Hinweis und jede Hilfe.