Это черновик, и он может потребовать дополнительной доработки.
Словарь
- 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 обработчиков скриптов (Scriptable)
field (поле)
field :name, component: позволяет добавить настраиваемое значение в интерфейс автоматизации.
Список допустимых компонентов:
# 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 # позволяет создать одну или несколько шаблонов личных сообщений
field :foo, component: :categories # позволяет выбрать ноль или более категорий
field :foo, component: :key-value # позволяет создавать пары ключ-значение
field :foo, component: :message # позволяет составить личное сообщение с заменяемыми переменными
field :foo, component: :trustlevel # позволяет выбрать один или несколько уровней доверия
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 (скрипт)
Это сердце автоматизации, где происходит вся логика.
# 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: Категория
description: Опционально, позволяет ограничить выполнение триггера этой категорией
Обратите внимание, что поле description здесь опционально.
Этот документ контролируется версионированием — предлагайте изменения на GitHub.