Ceci est un brouillon et pourrait nécessiter des travaux supplémentaires.
Vocabulaire
- trigger : représente le nom du déclencheur, par exemple :
user_added_to_group - triggerable : représente la logique de code associée à un déclencheur, par exemple :
triggers/user_added_to_group_.rb - script : représente le nom du script, par exemple :
send_pms - 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
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 un champ de saisie de texte
field :foo, component: :list # génère un champ de saisie de texte multi-sélection où les utilisateurs peuvent saisir des valeurs
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # génère une boîte combinée 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
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
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!
# Définit la liste des triggerables autorisés pour un script
triggerables %i[recurring]
# Force un triggerable pour votre script et permet également de forcer un état sur les champs
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
placeholders
# Marque une clé comme remplaçable dans les textes en utilisant la syntaxe de placeholder `%%sender%%`
placeholder :sender
Notez qu’il incombe au script de fournir les valeurs pour les placeholders et d’appliquer le remplacement en utilisant input = utils.apply_placeholders(input, { sender: 'bob' })
script
C’est le cœur d’une automatisation et là où toute la logique se déroule.
# context est envoyé lorsque l'automatisation est déclenchée, et peut beaucoup varier entre les déclencheurs
script do |context, fields, automation|
end
Localisation
Chaque champ que vous utiliserez dépendra de 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: Catégorie
description: Optionnel, permet de limiter l'exécution du déclencheur à cette catégorie
Notez que la description est facultative ici.
Ce document est contrôlé par version - suggérez des modifications sur github.