Este é um rascunho e pode precisar de trabalho adicional.
Vocabulário
- trigger (gatilho): representa o nome do gatilho, ex:
user_added_to_group - triggerable (acionável): representa a lógica de código associada a um gatilho, ex:
triggers/user_added_to_group_.rb - script (roteiro): representa o nome do roteiro, ex:
send_pms - scriptable (roteirizável): representa a lógica de código associada a um roteiro, ex:
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 da sua automação.
Lista de componentes válidos:
# foo deve ser exclusivo e representa o nome do seu campo.
field :foo, component: :text # gera uma entrada de texto
field :foo, component: :list # gera uma seleção múltipla de texto 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 (checkbox)
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 MP (Mensagem Privada)
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 MP 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 acionáveis permitidos para um roteiro
triggerables %i[recurring]
# Permite forçar um acionável para o seu roteiro e também 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 roteiro 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.
# context é enviado quando a automação é acionada e pode diferir muito 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/roteiro.
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: Category
description: Optional, allows to limit trigger execution to this category
Note que a descrição é opcional aqui.
Este documento é controlado por versão - sugira alterações no github.