Este es un borrador y puede necesitar trabajo adicional.
Vocabulario
- trigger: representa el nombre del disparador, por ejemplo:
user_added_to_group - triggerable: representa la lógica de código asociada a un disparador, por ejemplo:
triggers/user_added_to_group_.rb - script: representa el nombre del script, por ejemplo:
send_pms - scriptable: representa la lógica de código asociada a un script, por ejemplo:
scripts/send_pms.rb
API de Plugins
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
API de Scriptables
campo
field :name, component: te permite agregar un valor personalizable en la interfaz de usuario de tu automatización.
Lista de componentes válidos:
# foo debe ser único y representa el nombre de tu campo.
field :foo, component: :text # genera una entrada de texto
field :foo, component: :list # genera una entrada de texto de selección múltiple donde los usuarios pueden completar valores
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # genera un cuadro combinado con contenido personalizado
field :foo, component: :boolean # genera una casilla de verificación
field :foo, component: :category # genera un selector de categoría
field :foo, component: :group # genera un selector de grupo
field :foo, component: :date_time # genera un selector de fecha y hora
field :foo, component: :tags # genera un selector de etiquetas
field :foo, component: :user # genera un selector de usuario
field :foo, component: :pms # permite crear una o más plantillas de PM
field :foo, component: :categories # permite seleccionar cero o más categorías
field :foo, component: :key-value # permite crear pares de clave-valor
field :foo, component: :message # permite componer un PM con variables reemplazables
field :foo, component: :trustlevel # permite seleccionar uno o más niveles de confianza
disparadores y disparable!
# Te permite definir la lista de disparables permitidos para un script
triggerables %i[recurring]
# Te permite forzar un disparable para tu script y también te permite forzar algún estado en los campos
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
marcadores de posición
# Te permite marcar una clave como reemplazable en textos usando la sintaxis de marcador de posición `%%sender%%`
placeholder :sender
Ten en cuenta que es responsabilidad del script proporcionar valores para los marcadores de posición y aplicar el reemplazo usando input = utils.apply_placeholders(input, { sender: 'bob' })
script
Este es el corazón de una automatización y donde ocurre toda la lógica.
# el contexto se envía cuando se activa la automatización y puede diferir mucho entre los disparadores
script do |context, fields, automation|
end
Localización
Cada campo que utilices dependerá de claves i18n y se organizará por su disparador/script.
Por ejemplo, un scriptable con este contenido:
field :post_created_edited, component: :category
Requerirá las siguientes claves en client.en.yml:
en:
js:
discourse_automation:
scriptables:
post_created_edited:
fields:
restricted_category:
label: Category
description: Opcional, permite limitar la ejecución del disparador a esta categoría
Ten en cuenta que la descripción es opcional aquí.
Este documento está controlado por versiones - sugiere cambios en github.