Questa è una bozza e potrebbe richiedere ulteriori lavori.
Vocabolario
- trigger: rappresenta il nome del trigger, ad es.
user_added_to_group - triggerable: rappresenta la logica del codice associata a un trigger, ad es.
triggers/user_added_to_group_.rb - script: rappresenta il nome dello script, ad es.
send_pms - scriptable: rappresenta la logica del codice associata a uno script, ad es.
scripts/send_pms.rb
API Plugin
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
API Scriptable
field
field :name, component: ti consente di aggiungere un valore personalizzabile nell’interfaccia utente della tua automazione.
Elenco dei componenti validi:
# foo deve essere univoco e rappresenta il nome del tuo campo.
field :foo, component: :text # genera un input di testo
field :foo, component: :list # genera un input di testo a selezione multipla in cui gli utenti possono inserire valori
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # genera una casella combinata con contenuto personalizzato
field :foo, component: :boolean # genera un input checkbox
field :foo, component: :category # genera un selettore di categorie
field :foo, component: :group # genera un selettore di gruppi
field :foo, component: :date_time # genera un selettore di data e ora
field :foo, component: :tags # genera un selettore di tag
field :foo, component: :user # genera un selettore di utenti
field :foo, component: :pms # consente di creare uno o più modelli di PM
field :foo, component: :categories # consente di selezionare zero o più categorie
field :foo, component: :key-value # consente di creare coppie chiave-valore
field :foo, component: :message # consente di comporre un PM con variabili sostituibili
field :foo, component: :trustlevel # consente di selezionare uno o più livelli di fiducia
triggerables e triggerable!
# Consente di definire l'elenco dei triggerable consentiti per uno script
triggerables %i[recurring]
# Consente di forzare un triggerable per il tuo script e anche di forzare alcuni stati sui campi
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Consente di contrassegnare una chiave come sostituibile nei testi utilizzando la sintassi placeholder `%%sender%%`
placeholder :sender
Nota che è responsabilità dello script fornire valori per i placeholder e applicare la sostituzione utilizzando input = utils.apply_placeholders(input, { sender: 'bob' })
script
Questo è il cuore di un’automazione e dove avviene tutta la logica.
# context viene inviato quando l'automazione viene attivata e può differire molto tra i trigger
script do |context, fields, automation|
end
Localizzazione
Ogni campo che utilizzerai dipenderà dalle chiavi i18n e sarà raggruppato per trigger/script.
Ad esempio, uno scriptable con questo contenuto:
field :post_created_edited, component: :category
Richiederà le seguenti chiavi in client.en.yml:
en:
js:
discourse_automation:
scriptables:
post_created_edited:
fields:
restricted_category:
label: Categoria
description: Opzionale, consente di limitare l'esecuzione del trigger a questa categoria
Nota che la descrizione è opzionale qui.
Questo documento è controllato dalla versione - suggerisci modifiche su github.