Erstelle benutzerdefinierte Automatisierungen

:information_source: 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.

7 „Gefällt mir“