Este es un borrador y puede necesitar trabajo adicional.
Vocabulario
- trigger (disparador): representa el nombre del disparador, ej:
user_added_to_group - triggerable (disparable): representa la lógica de código asociada a un disparador, ej:
triggers/user_added_to_group_.rb - script (guion): representa el nombre del guion, ej:
send_pms - scriptable (guionable): representa la lógica de código asociada a un guion, ej:
scripts/send_pms.rb
API de Plugin
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
API de Scriptable
field
field :name, component: le permite agregar un valor personalizable en la interfaz de usuario de su automatización.
Lista de componentes válidos:
# foo debe ser único y representa el nombre de su campo.
field :foo, component: :text # genera una entrada de texto
field :foo, component: :list # genera una entrada de selección múltiple donde los usuarios pueden rellenar 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 entrada de 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 MP
field :foo, component: :categories # permite seleccionar cero o más categorías
field :foo, component: :key-value # permite crear pares clave-valor
field :foo, component: :message # permite componer un MP con variables reemplazables
field :foo, component: :trustlevel # permite seleccionar uno o más niveles de confianza
triggerables y triggerable!
# Permite definir la lista de disparables permitidos para un guion
triggerables %i[recurring]
# Permite forzar un disparable para su guion y también permite forzar algún estado en los campos
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Permite marcar una clave como reemplazable en textos usando la sintaxis de marcador de posición `%%sender%%`
placeholder :sender
Tenga en cuenta que es responsabilidad del guion 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 disparadores
script do |context, fields, automation|
end
Localización
Cada campo que utilice dependerá de claves i18n y se organizará por espacios de nombres según su disparador/guion.
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: Optional, allows to limit trigger execution to this category
Tenga en cuenta que la descripción es opcional aquí.
Este documento está controlado por versiones: sugiera cambios en github.