Questa è una bozza e potrebbe necessitare di ulteriore lavoro.
Vocabolario
- trigger (innesco): rappresenta il nome dell’innesco, es:
user_added_to_group - triggerable (attivabile): rappresenta la logica del codice associata a un innesco, es:
triggers/user_added_to_group_.rb - script (script): rappresenta il nome dello script, es:
send_pms - scriptable (scriptabile): rappresenta la logica del codice associata a uno script, 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 dell’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 selezione multipla in cui gli utenti possono inserire valori
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # genera un menu a tendina con contenuto personalizzato
field :foo, component: :boolean # genera un input checkbox
field :foo, component: :category # genera un selettore di categoria
field :foo, component: :group # genera un selettore di gruppo
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 utente
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 degli attivabili consentiti per uno script
triggerables %i[recurring]
# Consente di forzare un attivabile per il tuo script e anche di forzare uno stato sui campi
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Consente di contrassegnare una chiave come sostituibile nei testi utilizzando la sintassi del segnaposto `%%sender%%`
placeholder :sender
Si noti che è responsabilità dello script fornire i valori per i segnaposto e applicare la sostituzione utilizzando input = utils.apply_placeholders(input, { sender: 'bob' })
script
Questo è il cuore di un’automazione ed è dove avviene tutta la logica.
# context viene inviato quando l'automazione viene attivata e può differire molto tra gli inneschi
script do |context, fields, automation|
end
Localizzazione
Ogni campo che utilizzerai dipenderà dalle chiavi i18n e sarà con namespace al rispettivo trigger/script.
Ad esempio, uno scriptabile 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: Category
description: Optional, allows to limit trigger execution to this category
Si noti che la descrizione è facoltativa qui.
Questo documento è controllato tramite versione - suggerisci modifiche su github.