Este é um rascunho e pode precisar de trabalho adicional.
Vocabulário
- trigger: representa o nome do gatilho, por exemplo:
user_added_to_group - triggerable: representa a lógica de código associada a um gatilho, por exemplo:
triggers/user_added_to_group_.rb - script: representa o nome do script, por exemplo:
send_pms - scriptable: representa a lógica de código associada a um script, por exemplo:
scripts/send_pms.rb
API de Plugin
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
API de Scriptable
field
field :name, component: permite adicionar um valor personalizável na interface do usuário de sua automação.
Lista de componentes válidos:
# foo deve ser único e representa o nome do seu campo.
field :foo, component: :text # gera uma entrada de texto
field :foo, component: :list # gera uma entrada de texto de múltipla seleção onde os usuários podem preencher valores
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # gera um combo-box com conteúdo personalizado
field :foo, component: :boolean # gera uma entrada de caixa de seleção
field :foo, component: :category # gera um seletor de categoria
field :foo, component: :group # gera um seletor de grupo
field :foo, component: :date_time # gera um seletor de data e hora
field :foo, component: :tags # gera um seletor de tags
field :foo, component: :user # gera um seletor de usuário
field :foo, component: :pms # permite criar um ou mais modelos de PM
field :foo, component: :categories # permite selecionar zero ou mais categorias
field :foo, component: :key-value # permite criar pares chave-valor
field :foo, component: :message # permite compor uma PM com variáveis substituíveis
field :foo, component: :trustlevel # permite selecionar um ou mais níveis de confiança
triggerables e triggerable!
# Permite definir a lista de triggerables permitidos para um script
triggerables %i[recurring]
# Permite forçar um triggerable para o seu script e também permite forçar algum estado nos campos
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Permite marcar uma chave como substituível em textos usando a sintaxe de placeholder `%%sender%%`
placeholder :sender
Note que é responsabilidade do script fornecer valores para os placeholders e aplicar a substituição usando input = utils.apply_placeholders(input, { sender: 'bob' })
script
Este é o coração de uma automação e onde toda a lógica acontece.
# o contexto é enviado quando a automação é acionada e pode diferir bastante entre os gatilhos
script do |context, fields, automation|
end
Localização
Cada campo que você usar dependerá de chaves i18n e será nomeado de acordo com seu gatilho/script.
Por exemplo, um scriptable com este conteúdo:
field :post_created_edited, component: :category
Exigirá as seguintes chaves em client.en.yml:
en:
js:
discourse_automation:
scriptables:
post_created_edited:
fields:
restricted_category:
label: Categoria
description: Opcional, permite limitar a execução do gatilho a esta categoria
Note que a descrição é opcional aqui.
Este documento é controlado por versão - sugira alterações no github.