これはドラフトであり、さらなる作業が必要になる場合があります。
用語集
- 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)
スクリプタブル 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 # 0個以上のカテゴリを選択できるようにします
field :foo, component: :key-value # キーと値のペアを作成できるようにします
field :foo, component: :message # 置換可能な変数を使用してPMを作成できるようにします
field :foo, component: :trustlevel # 1つ以上の信頼レベルを選択できるようにします
triggerables および 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
これはオートメーションの核であり、すべてのロジックが発生する場所です。
# オートメーションがトリガーされたときにコンテキストが送信され、トリガーによって大きく異なる場合があります
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で行ってください。