Ceci est un brouillon et pourrait nécessiter un travail supplémentaire.
Vocabulaire
- trigger (déclencheur) : représente le nom du déclencheur, par exemple :
user_added_to_group - triggerable (déclenchable) : représente la logique de code associée à un déclencheur, par exemple :
triggers/user_added_to_group_.rb - script (script) : représente le nom du script, par exemple :
send_pms - scriptable (scriptable) : représente la logique de code associée à un script, par exemple :
scripts/send_pms.rb
API de Plugin
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
API Scriptable
field (champ)
field :name, component: vous permet d’ajouter une valeur personnalisable dans l’interface utilisateur de votre automatisation.
Liste des composants valides :
# foo doit être unique et représente le nom de votre champ.
field :foo, component: :text # génère une saisie de texte
field :foo, component: :list # génère une saisie de sélection multiple où les utilisateurs peuvent renseigner des valeurs
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # génère une boîte de dialogue (combo-box) avec un contenu personnalisé
field :foo, component: :boolean # génère une case à cocher
field :foo, component: :category # génère un sélecteur de catégorie
field :foo, component: :group # génère un sélecteur de groupe
field :foo, component: :date_time # génère un sélecteur de date et d'heure
field :foo, component: :tags # génère un sélecteur d'étiquettes (tags)
field :foo, component: :user # génère un sélecteur d'utilisateur
field :foo, component: :pms # permet de créer un ou plusieurs modèles de MP (messages privés)
field :foo, component: :categories # permet de sélectionner zéro ou plusieurs catégories
field :foo, component: :key-value # permet de créer des paires clé-valeur
field :foo, component: :message # permet de composer un MP avec des variables remplaçables
field :foo, component: :trustlevel # permet de sélectionner un ou plusieurs niveaux de confiance
triggerables et triggerable!
# Vous permet de définir la liste des déclenchables autorisés pour un script
triggerables %i[recurring]
# Vous permet de forcer un déclenchable pour votre script et aussi de forcer un état sur les champs
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders (espaces réservés)
# Vous permet de marquer une clé comme remplaçable dans les textes en utilisant la syntaxe d'espace réservé `%%sender%%`
placeholder :sender
Notez qu’il est de la responsabilité du script de fournir des valeurs pour les espaces réservés et d’appliquer le remplacement en utilisant input = utils.apply_placeholders(input, { sender: 'bob' })
script (script)
C’est le cœur d’une automatisation et là où toute la logique se produit.
# context est envoyé lorsque l'automatisation est déclenchée, et peut différer beaucoup entre les déclencheurs
script do |context, fields, automation|
end
Localisation
Chaque champ que vous utiliserez dépendra des clés i18n et sera nommé par espace de noms en fonction de leur déclencheur/script.
Par exemple, un scriptable avec ce contenu :
field :post_created_edited, component: :category
Nécessitera les clés suivantes dans 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
Notez que la description est facultative ici.
Ce document est contrôlé par version - suggérez des modifications sur github.