これはドラフトであり、追加の作業が必要になる場合があります。
語彙
- trigger: トリガーの名前を表します。例:
user_added_to_group - triggerable: トリガーに関連付けられたコードロジックを表します。例:
triggers/user_added_to_group_.rb - script: スクリプトの名前を表します。例:
send_pms - scriptable: スクリプトに関連付けられたコードロジックを表します。例:
scripts/send_pms.rb
プラグインAPI
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
Scriptable API
field
field :name, component: を使用すると、自動化のUIにカスタマイズ可能な値を追加できます。
有効なコンポーネントのリスト:
# foo は一意で、フィールドの名前を表します。
field :foo, component: :text # テキスト入力フィールドを生成します
field :foo, component: :list # ユーザーが値を入力できる複数選択テキスト入力を生成します
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # カスタムコンテンツを持つコンボボックスを生成します
field :foo, component: :boolean # チェックボックス入力を生成します
field :foo, component: :category # カテゴリ選択肢を生成します
field :foo, component: :group # グループ選択肢を生成します
field :foo, component: :date_time # 日時ピッカーを生成します
field :foo, component: :tags # タグ選択肢を生成します
field :foo, component: :user # ユーザー選択肢を生成します
field :foo, component: :pms # 1つ以上のPMテンプレートを作成できます
field :foo, component: :categories # ゼロ個以上のカテゴリを選択できます
field :foo, component: :key-value # キーと値のペアを作成できます
field :foo, component: :message # 置換可能な変数を使用してPMを作成できます
field :foo, component: :trustlevel # 1つ以上の信頼レベルを選択できます
triggerables and triggerable!
# スクリプトで許可されるトリガー可能なリストを定義します
triggerables %i[recurring]
# スクリプトのトリガー可能なものを強制し、フィールドに特定の状態を強制することもできます
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# `%%sender%%` のプレースホルダー構文を使用して、テキスト内でキーを置換可能としてマークします
placeholder :sender
プレースホルダーの値を提供し、input = utils.apply_placeholders(input, { sender: 'bob' }) を使用して置換を適用するのはスクリプトの責任です。
script
これは自動化の中心であり、すべてのロジックが発生する場所です。
# context は自動化がトリガーされたときに送信され、トリガーによって大きく異なる場合があります
script do |context, fields, automation|
end
ローカライゼーション
使用する各フィールドは、i18nキーに依存し、トリガー/スクリプトの名前空間に属します。
たとえば、このコンテンツを持つスクリプト可能なもの:
field :post_created_edited, component: :category
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
ここで、description はオプションです。
このドキュメントはバージョン管理されています - github で変更を提案してください。