Dies ist ein Entwurf und erfordert möglicherweise zusätzliche Arbeit.
Vokabular
- trigger: Stellt den Namen des Triggers dar, z. B.
user_added_to_group - triggerable: Stellt die mit einem Trigger verknüpfte Codologik dar, z. B.
triggers/user_added_to_group_.rb - script: Stellt den Namen des Skripts dar, z. B.
send_pms - scriptable: Stellt die mit einem Skript verknüpfte Codologik dar, 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 das Hinzufügen eines anpassbaren Wertes in der UI Ihrer Automatisierung.
Liste der gültigen Komponenten:
# foo muss eindeutig sein und repräsentiert den Namen Ihres Feldes.
field :foo, component: :text # erzeugt eine Texteingabe
field :foo, component: :list # erzeugt eine Mehrfachauswahl-Texteingabe, in die Benutzer Werte eintragen können
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # erzeugt eine Kombinationsfeld mit benutzerdefiniertem Inhalt
field :foo, component: :boolean # erzeugt eine Kontrollkästchen-Eingabe
field :foo, component: :category # erzeugt einen Kategorie-Auswähler
field :foo, component: :group # erzeugt einen Gruppen-Auswähler
field :foo, component: :date_time # erzeugt einen Datum/Uhrzeit-Auswähler
field :foo, component: :tags # erzeugt einen Tag-Auswähler
field :foo, component: :user # erzeugt einen Benutzer-Auswä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 das Verfassen einer PM mit ersetzbaren Variablen
field :foo, component: :trustlevel # ermöglicht die Auswahl einer oder mehrerer Vertrauensstufen
triggerables und triggerable!
# Lässt Sie die Liste der für ein Skript zulässigen Triggerables definieren
triggerables %i[recurring]
# Lässt Sie einen Triggerable für Ihr Skript erzwingen und ermöglicht es Ihnen auch, einen Zustand für Felder zu erzwingen
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Lässt Sie einen Schlüssel als ersetzbar in Texten mit der Platzhaltersyntax `%%sender%%` markieren
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' }) anzuwenden.
script
Dies ist das Herzstück einer Automatisierung und der Ort, an dem die gesamte Logik stattfindet.
# context wird gesendet, wenn die Automatisierung ausgelöst wird, und kann sich zwischen den 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 Scriptable 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.