Dies ist ein Entwurf und erfordert möglicherweise zusätzliche Arbeit.
Vokabular
- trigger: Repräsentiert den Namen des Triggers, z. B.
user_added_to_group - triggerable: Repräsentiert die Code-Logik, die mit einem Trigger verbunden ist, z. B.
triggers/user_added_to_group_.rb - script: Repräsentiert den Namen des Skripts, z. B.
send_pms - scriptable: Repräsentiert die Code-Logik, die mit einem Skript verbunden ist, z. B.
scripts/send_pms.rb
Plugin API
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
Scriptable API
field
field :name, component: ermöglicht es Ihnen, einen anpassbaren Wert in der Benutzeroberfläche Ihrer Automatisierung hinzuzufügen.
Liste der gültigen Komponenten:
# foo muss eindeutig sein und repräsentiert den Namen Ihres Feldes.
field :foo, component: :text # generiert eine Texteingabe
field :foo, component: :list # generiert eine Mehrfachauswahl-Texteingabe, in die Benutzer Werte eingeben können
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # generiert eine Kombinationsfeld mit benutzerdefinierten Inhalten
field :foo, component: :boolean # generiert eine Kontrollkästchen-Eingabe
field :foo, component: :category # generiert einen Kategorie-Wähler
field :foo, component: :group # generiert einen Gruppen-Wähler
field :foo, component: :date_time # generiert einen Datums-/Zeit-Auswähler
field :foo, component: :tags # generiert einen Tag-Wähler
field :foo, component: :user # generiert einen Benutzer-Wähler
field :foo, component: :pms # ermöglicht die Erstellung einer oder mehrerer PM-Vorlagen
field :foo, component: :categories # ermöglicht die Auswahl von null oder mehr Kategorien
field :foo, component: :key-value # ermöglicht die Erstellung von Schlüssel-Wert-Paaren
field :foo, component: :message # ermöglicht die Erstellung einer PM mit ersetzbaren Variablen
field :foo, component: :trustlevel # ermöglicht die Auswahl einer oder mehrerer Vertrauensstufen
triggerables und triggerable!
# Definiert die Liste der für ein Skript zulässigen Triggerables
triggerables %i[recurring]
# Erzwingt einen Triggerable für Ihr Skript und ermöglicht auch die Erzwingung eines bestimmten Zustands für Felder
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Markiert einen Schlüssel als ersetzbar in Texten unter Verwendung der Platzhaltersyntax `%%sender%%`
placeholder :sender
Beachten Sie, dass es in der Verantwortung des Skripts liegt, Werte für Platzhalter bereitzustellen und die Ersetzung mit input = utils.apply_placeholders(input, { sender: 'bob' }) durchzuführen.
script
Dies ist das Herzstück einer Automatisierung und wo die gesamte Logik stattfindet.
# context wird gesendet, wenn die Automatisierung ausgelöst wird, und kann sich zwischen Triggern stark unterscheiden
script do |context, fields, automation|
end
Lokalisierung
Jedes Feld, das Sie verwenden, hängt von i18n-Schlüsseln ab und wird nach ihrem Trigger/Skript benannt.
Zum Beispiel ein Skriptable mit diesem Inhalt:
field :post_created_edited, component: :category
Erfordert die folgenden Schlüssel in client.en.yml:
en:
js:
discourse_automation:
scriptables:
post_created_edited:
fields:
restricted_category:
label: Category
description: Optional, allows to limit trigger execution to this category
Beachten Sie, dass die Beschreibung hier optional ist.
Dieses Dokument wird versioniert – schlagen Sie Änderungen auf github vor.