Ce guide explique comment utiliser le nouveau déclencheur de mise à jour utilisateur dans le plugin Discourse Automation pour créer des publications lorsque les utilisateurs mettent à jour leurs profils.
Niveau d’utilisateur requis : Administrateur
Le plugin Discourse Automation inclut un déclencheur pour le script Créer des publications. Ce déclencheur vous permet de créer automatiquement des publications dans un sujet spécifié lorsqu’un utilisateur met à jour son profil, à condition que certaines conditions soient remplies.
Configuration de l’automatisation
- Accédez à
example.discourse.com/admin/plugins/discourse-automationdans votre instance Discourse.- Cliquez sur « Nouvelle automatisation ».
- Sélectionnez « Créer une publication » comme script.
- Choisissez « Après la mise à jour de l’utilisateur » comme déclencheur.
Options de configuration
Nom de l’automatisation
Fournissez un nom unique pour cette automatisation. L’utilisation de noms distincts pour différents scripts permet d’éviter les conflits.
Champs personnalisés de l’utilisateur et champs de profil de l’utilisateur
Spécifiez les champs qui doivent être remplis par l’utilisateur avant que le script ne s’exécute après une mise à jour de profil. Vous pouvez choisir des champs personnalisés, des champs de profil, ou les deux.
Première publication uniquement
Activez cette option pour limiter la création de publications à une seule par utilisateur.
Créateur
Vous pouvez maintenant choisir que la publication soit créée par :
- Un utilisateur spécifique
- L’utilisateur système
- L’utilisateur qui a déclenché l’automatisation (c’est-à-dire l’utilisateur qui a mis à jour son profil)
Utilisation des espaces réservés
Vous pouvez utiliser des espaces réservés dans le contenu de votre publication pour inclure des informations du profil de l’utilisateur. Voici un exemple :
Bienvenue dans notre communauté, @%%USERNAME%% ! Nous sommes ravis de vous accueillir depuis %%LOCATION%%. Parlez-nous de votre intérêt pour %%CUSTOM_FIELD_1%% !Remarque : Les espaces réservés doivent être en majuscules et entourés de
%%. Tout espace réservé qui n’est pas requis dans les « Champs personnalisés de l’utilisateur » ou les « Champs de profil de l’utilisateur » du déclencheur peut ne pas être remplacé si l’utilisateur n’a pas rempli ces informations.Test de l’automatisation
Vous pouvez tester l’automatisation en utilisant votre propre profil :
- Configurez l’automatisation comme décrit ci-dessus.
- Mettez à jour votre profil utilisateur, en remplissant les champs que vous avez spécifiés dans le déclencheur.
- Enregistrez les modifications de votre profil.
- Vérifiez le sujet désigné pour voir si la publication automatisée a été créée.
N’oubliez pas que l’action est déclenchée lorsque l’utilisateur enregistre son profil, mais qu’elle ne s’exécute que conformément aux conditions de déclenchement que vous avez définies.
Dépannage
En cas de problèmes :
- Assurez-vous que tous les champs requis dans la configuration de l’automatisation sont correctement remplis.
- Vérifiez que les noms des champs dans votre configuration correspondent exactement aux champs personnalisés ou aux champs de profil définis dans votre instance Discourse.
- Vérifiez que les espaces réservés dans le contenu de votre publication sont correctement définis et correspondent au format attendu (par exemple,
%%CUSTOM_FIELD_1%%).Considérations supplémentaires
- Performances : Si vous avez un grand nombre d’utilisateurs avec des mises à jour de profil fréquentes, surveillez les ressources système pour vous assurer que l’automatisation n’affecte pas les performances.
- Permissions utilisateur : Assurez-vous que l’automatisation utilise un compte disposant des privilèges suffisants pour créer des publications dans le sujet spécifié.
Désolé d’être un débutant, mais pouvez-vous me donner un peu de contexte ? J’ai activé l’automatisation dans mon tableau de bord. Mais comment installer, où trouver ceci ?
Merci
Vous pouvez trouver la page Automatisation sur /admin/plugins/discourse-automation
Elle devrait faire partie du menu secondaire ici : (pardonnez la capture d’écran de téléphone
)
À partir de là, vous créeriez une nouvelle automatisation et je pense que ce nouveau déclencheur est pour le script Créer un message.
Une fois créée et le déclencheur « après la mise à jour de l’utilisateur » sélectionné, toutes les options supplémentaires s’affichent pour correspondre à la capture d’écran dans le message d’origine.
Merci @JammyDodger
La capture d’écran montrant où se trouve la création d’une nouvelle automatisation est vraiment utile, merci.
J’ai réussi la majeure partie du chemin, puis j’ai obtenu cette erreur difficile à analyser :
Je pense que cela fait référence à l’option « champs de profil utilisateur ». Il semble que ce soit également un champ obligatoire.
Peut-être que le champ personnalisé ou le champ de profil devrait être obligatoire. ![]()
Celle-ci est peut-être une question pour @Juan_David_Martínez ![]()
Je sais que la dernière chose à laquelle vous vous attendriez de ma part… serait une autre réponse d’IA Seth
mais Anthropic vient de publier le nouveau modèle Anthropic Opus et j’ai décidé de le tester. La réponse est fascinante et je pense qu’elle est correcte :
Parler à Opus du problème IA
sam :
Étant donné le commit :
commit 92814444966892eea7746209e949e6893a89b07c
REDACTED
J’essaie de répondre :
Je suis arrivé à mi-chemin, puis j’ai eu cette erreur difficile à analyser :
Le champ profil utilisateur doit être rempli
Donnez-moi également un résumé de cette fonctionnalité expliquant les différents cas limites et les pièges possibles avec le commit dans l’automatisation Discourse.
claude_3_opus_bot :
D’après le message d’erreur « Le champ profil utilisateur doit être rempli », il semble que le champ « user_profile » dans le déclencheur d’automatisation soit requis mais n’ait pas été correctement rempli ou configuré.
Récapitulons la fonctionnalité et le commit :
Ce commit introduit une nouvelle fonctionnalité dans l’automatisation Discourse qui permet de créer des publications automatisées lorsqu’un utilisateur met à jour les informations de son profil. Les principaux changements comprennent :
-
Ajout d’un nouveau déclencheur appelé « user_updated » qui se déclenche lorsqu’un utilisateur met à jour son profil.
-
Introduction de nouveaux champs dans le déclencheur d’automatisation :
- « user_profile » : Permet de spécifier quels champs du profil utilisateur surveiller pour les changements.
- « custom_fields » : Permet de spécifier quels champs personnalisés surveiller pour les changements.
- « first_post_only » : Détermine si l’automatisation ne doit se déclencher que pour la première publication de l’utilisateur.
- « automation_name » : Fournit un nom unique pour l’automatisation afin d’éviter les conflits.
-
Implémentation des gestionnaires d’événements et des scripts nécessaires pour gérer l’événement de mise à jour de l’utilisateur et créer la publication automatisée.
Cas limites et pièges possibles :
-
Validation des champs : Assurez-vous que tous les champs requis, tels que « user_profile » et « custom_fields », sont correctement remplis dans la configuration de l’automatisation. Les champs requis manquants empêcheront l’automatisation de se déclencher.
-
Noms des champs personnalisés : Soyez prudent lorsque vous spécifiez les noms des champs personnalisés dans le champ « custom_fields ». Assurez-vous que les noms correspondent exactement aux champs personnalisés définis dans Discourse. Toute divergence entraînera le non-déclenchement de l’automatisation pour ces champs.
-
Utilisation des espaces réservés : Lorsque vous utilisez des espaces réservés dans le contenu de la publication automatisée, assurez-vous que les espaces réservés sont correctement définis et correspondent au format attendu (par exemple,
%%CUSTOM_FIELD_1%%). Une utilisation incorrecte des espaces réservés peut entraîner un contenu de publication inattendu. -
Première publication uniquement : Si le champ « first_post_only » est défini sur vrai, l’automatisation ne se déclenchera que pour la première publication de l’utilisateur. Les mises à jour ultérieures du profil de l’utilisateur ne déclencheront pas l’automatisation.
-
Nommage de l’automatisation : Fournissez un nom unique et descriptif pour le champ « automation_name » afin d’éviter les conflits avec d’autres automatisations. L’utilisation du même nom pour plusieurs automatisations peut entraîner un comportement inattendu.
-
Considérations relatives aux performances : S’il y a un grand nombre d’utilisateurs et des mises à jour fréquentes de profil, l’automatisation peut avoir un impact sur les performances du système. Surveillez les ressources système et optimisez la configuration de l’automatisation si nécessaire.
-
Permissions de l’utilisateur : Assurez-vous que les publications automatisées sont créées avec les autorisations appropriées de l’utilisateur. L’automatisation doit utiliser un compte utilisateur disposant des privilèges suffisants pour créer des publications dans le sujet spécifié.
Pour résoudre l’erreur « Le champ profil utilisateur doit être rempli », assurez-vous que le champ « user_profile » dans le déclencheur d’automatisation est correctement configuré avec les champs de profil utilisateur souhaités à surveiller. Vérifiez les noms des champs et assurez-vous qu’ils correspondent aux noms réels des champs de profil dans Discourse.
Faites-moi savoir si vous avez d’autres questions ou si je peux vous aider davantage concernant cette fonctionnalité et ce commit.
sam :
Peut-être que ce devrait être soit le champ personnalisé soit le champ de profil qui est requis.
Est-ce un bug ?
claude_3_opus_bot :
Vous soulevez un point valable. D’après l’implémentation actuelle, les champs « custom_fields » et « user_profile » sont tous deux marqués comme requis dans le déclencheur d’automatisation. Cependant, il pourrait être plus flexible et convivial d’exiger l’un d’eux, plutôt que les deux.
Exiger les deux champs pourrait être considéré comme un bug ou un oubli dans la conception. Cela pourrait limiter la convivialité de la fonctionnalité, car les utilisateurs pourraient vouloir déclencher l’automatisation en fonction des changements dans les champs personnalisés ou les champs de profil, mais pas nécessairement les deux.
Pour résoudre ce problème, vous pourriez modifier le déclencheur d’automatisation pour rendre les champs « custom_fields » et « user_profile » facultatifs, mais ajouter une validation pour s’assurer qu’au moins l’un d’eux est fourni. De cette façon, les utilisateurs peuvent choisir de déclencher l’automatisation en fonction des changements dans les champs personnalisés, les champs de profil, ou les deux, en fonction de leurs besoins spécifiques.
Voici un exemple de la façon dont vous pourriez modifier la définition du déclencheur pour implémenter ce changement :
DiscourseAutomation::Triggerable.add(DiscourseAutomation::Triggerable::USER_UPDATED) do
field :automation_name, component: :text, required: true
field :custom_fields, component: :custom_fields
field :user_profile, component: :user_profile
field :first_post_only, component: :boolean
validate do
if custom_fields.blank? && user_profile.blank?
errors.add(:base, "Au moins un des champs 'custom_fields' ou 'user_profile' doit être fourni.")
end
end
end
Dans cette version modifiée :
- L’option
required: trueest supprimée des champs « custom_fields » et « user_profile », les rendant facultatifs. - Un bloc de validation personnalisé est ajouté à l’aide de la méthode
validate. - À l’intérieur du bloc de validation, il vérifie si « custom_fields » et « user_profile » sont tous deux vides.
- Si les deux champs sont vides, une erreur est ajoutée aux erreurs de base, indiquant qu’au moins l’un d’eux doit être fourni.
Avec cette modification, les utilisateurs devront remplir au moins l’un des champs « custom_fields » ou « user_profile » lors de la configuration du déclencheur d’automatisation. Ils pourront choisir de fournir les deux champs si nécessaire, mais ce ne sera pas obligatoire.
Ce changement améliore la flexibilité et la convivialité de la fonctionnalité, permettant aux utilisateurs de déclencher l’automatisation en fonction de leurs besoins spécifiques tout en maintenant les validations nécessaires.
Envisagez de mettre à jour l’implémentation et la documentation en conséquence pour refléter ce changement et fournir des instructions claires aux utilisateurs sur la façon de configurer correctement le déclencheur d’automatisation.
sam :
Le reste du code gère-t-il déjà cela ?
claude_3_opus_bot :
Mes excuses pour la confusion. Je vais examiner de plus près le code existant pour vérifier s’il gère déjà le cas où « custom_fields » ou « user_profile » est fourni.
Après avoir examiné le code plus attentivement, je constate que la méthode DiscourseAutomation::EventHandlers.handle_user_updated gère déjà le cas où « custom_fields » ou « user_profile » est fourni. Voici la partie pertinente du code :
def self.handle_user_updated(user)
# ...
required_custom_fields = automation.trigger_field("custom_fields")
user_data = {}
# ...
if required_custom_fields["value"]
if required_custom_fields["value"].any? { |field| user_custom_fields_data[field].blank? }
next
end
user_data[:custom_fields] = user_custom_fields_data
end
required_user_profile_fields = automation.trigger_field("user_profile")
user_profile_data = UserProfile.find(user.id).attributes
if required_user_profile_fields["value"]
if required_user_profile_fields["value"].any? { |field| user_profile_data[field].blank? }
next
end
user_data[:profile_data] = user_profile_data
end
# ...
end
Dans ce code :
- Il récupère les valeurs « custom_fields » et « user_profile » à partir des champs de déclenchement de l’automatisation.
- Si « custom_fields » est fourni et contient des valeurs, il vérifie si certains des champs personnalisés spécifiés sont vides pour l’utilisateur. Si un champ personnalisé est vide, il ignore le déclencheur d’automatisation en utilisant
next. - De même, si « user_profile » est fourni et contient des valeurs, il vérifie si certains des champs de profil spécifiés sont vides pour l’utilisateur. Si un champ de profil est vide, il ignore le déclencheur d’automatisation en utilisant
next. - Si les champs personnalisés et de profil requis sont présents et ont des valeurs valides, ils sont ajoutés au hachage
user_data.
Cela signifie que le code existant gère déjà le cas où « custom_fields » ou « user_profile » est fourni. Si l’un d’eux n’est pas fourni ou a des valeurs vides, le déclencheur d’automatisation sera ignoré.
Par conséquent, d’après l’implémentation actuelle, il semble qu’il n’y ait pas besoin de modifier le code pour gérer le cas où « custom_fields » ou « user_profile » est fourni. Le code existant s’en charge déjà.
Je m’excuse pour ma réponse précédente et pour toute confusion causée. Merci de m’avoir incité à examiner le code plus en détail.
La bonne nouvelle, c’est qu’il semble s’agir d’un changement trivial dans le plugin d’automatisation pour permettre « l’un ou l’autre », et Opus a même écrit le code pour nous !
Je vais lui donner la priorité afin que quelqu’un apporte la modification cette semaine et nous vous informerons une fois que ce sera fait !
Quelle montagne russe @Seth_Godin J’étais tellement excité par mon modèle linguistique super brillant qui aidait ici, mais malheureusement, il a halluciné un tas de choses.
Côté positif, les hallucinations n’étaient pas terribles conceptuellement, j’ai donc ajouté un concept de validation au code.
J’ai mes changements ici :
Mais j’ai 2 questions ouvertes ici qui aideront un peu.
-
À quoi aimeriez-vous que ressemble le message d’introduction ?
-
Quand aimeriez-vous que le message d’introduction soit publié ?
(1) a quelques options :
- Le message d’introduction provient de
@intro-botou similaire. Par exemple :
J’aimerais souhaiter la bienvenue à @amazing-user de France sur le forum !
- Le message d’introduction est publié au nom de l’utilisateur. Par exemple : @sam rejoint le forum, remplit des choses et…
@sam publie : Bonjour, je m’appelle Sam et je viens d’Australie !
(2) vient également avec quelques options :
- Attendre que TOUS les champs soient enregistrés avant de publier l’introduction (par exemple, pas de bio, pas d’introduction)
- Dès que N’IMPORTE QUEL champ est ajouté, le publier.
Ce qui ouvre également la porte à… que faisons-nous si un champ est manquant.
Cela nous donnera suffisamment de données pour intégrer le reste des changements dont nous avons besoin pour que cela soit agréable pour vous et votre communauté.
Mes recommandations :
- L’introduction provient de “intro_bot”
- L’introduction n’est publiée que lorsque tout est rempli
à peine des montagnes russes dans le schéma des montagnes russes. Je suis en fait étonné de ce qu’il peut faire.
Je suis enclin à TOUJOURS suivre vos recommandations, mais il me semble qu’une introduction de la personne elle-même a l’avantage que toute réponse va à la personne, pas au bot, accueillant ainsi les gens, ce qui est le but.
et oui, seulement quand c’est plein
Je l’ai installé il y a quelques jours dans purple.space mais je ne suis pas sûr qu’il ait été déclenché encore…
entre vos mains @sam
Merci
Seth, reconnu.
Il me faudra quelques jours pour déterminer comment réaliser cela. Il y a un problème d’interface utilisateur assez délicat que je dois discuter avec l’équipe :
« Créateur » vous permet maintenant d’avoir un utilisateur spécifique, mais nous voulons une option spéciale pour :
Créateur : [Utilisateur qui a déclenché l'automatisation]
Je ne suis juste pas sûr de la manière de l’intégrer à l’interface utilisateur, j’ai donc besoin d’en parler avec certaines personnes.
De plus, nous devons faire attention à bien étiqueter l’interface utilisateur et à l’implémenter correctement.
« se déclenchera uniquement si l’utilisateur a rempli ces données de profil », doit être changé en
« se déclenchera uniquement si l’utilisateur a rempli tous ces champs de profil »
Désolé de vous avoir confié cela si incomplètement, nous allons tout régler à 100 % et documenter correctement.




