Merci, ça a résolu le problème !
@gilles J’ai maintenant implémenté le suivi mentionné plus haut :
Il ajoute une opération générique Événement → Définir la présence, avec :
- le participant
- l’état de présence : Présent / Intéressé / Absent / Supprimer la présence
- l’ID du sujet
- un acteur facultatif
Ainsi, votre cas d’utilisation d’origine peut être construit comme suit :
Publication créée → Si premier message → Événement / Définir la présence
en utilisant l’auteur de l’événement comme participant et en le définissant comme Présent.
J’ai testé ce schéma exact localement dans l’interface graphique des Workflows, en l’empilant sur #42932, et j’ai confirmé que l’utilisateur est automatiquement enregistré comme Présent sur l’événement.
La PR est actuellement un brouillon uniquement parce qu’elle dépend de #42932. Dès que #42932 sera fusionnée, je la rebase sur main, ce qui ne laissera que la différence relative à la présence.
@Ethsim2 Merci tu es un chef
![]()
Existe-t-il un moyen de relancer un workflow (avec le même événement), de la même manière que, avec un webhook, on peut renvoyer un payload ?
Non, désolé, nous ne prenons pas en charge cette fonctionnalité pour le moment.
Y a-t-il un déclencheur ou un événement qui se déclenche lorsqu’un NOUVEAU tag est créé ?
Lorsqu’un utilisateur crée un nouveau tag, existe-t-il un moyen de l’ajouter automatiquement à un groupe de tags spécifique ? Sinon, quelle est l’approche recommandée ?
Non, nous n’avons rien de tout cela. Pourriez-vous développer votre cas d’utilisation, s’il vous plaît ?
Pourriez-vous faire la chose suivante :
- Examiner tous les nouveaux sujets
- Vérifier l’étiquette par rapport aux étiquettes existantes
- S’il s’agit d’une nouvelle étiquette,
<insert action>
Il existe « Topic Tag Changed ». Vous pouvez ensuite appeler l’API Discourse pour voir combien de fois le tag est utilisé. S’il n’est utilisé qu’une seule fois / s’il se trouve sur ce sujet spécifique, vous savez que le tag est nouveau.
En alternative, et peut-être plus simplement : vous pouvez configurer un webhook pour « tag is created » et le diriger vers un déclencheur de workflow webhook.
Cas d’utilisation : j’ai un groupe de balises « artist ». De nouveaux artistes font leurs débuts en permanence, de sorte que de nouvelles balises d’artistes apparaissent régulièrement lorsque les utilisateurs les créent. Je souhaite que ces nouvelles balises soient automatiquement ajoutées au groupe de balises « artist », plutôt que de devoir les ajouter manuellement. Existe-t-il une bonne méthode pour obtenir ce résultat avec les Workflows ?
comment savez-vous qu’il s’agit d’une balise d’artiste et non d’une autre balise aléatoire ?
C’est exactement ce que gère l’étape IA. L’agent IA détermine d’abord si une nouvelle balise appartient à l’un des groupes définis (artiste / membre / région / type d’événement / type de sortie) ; si elle ne correspond à aucun, elle est ignorée et n’est jamais classée dans un groupe. Ainsi, les balises aléatoires sont filtrées, et seules les balises correctement classées sont ajoutées automatiquement à un groupe de balises.
ok, j’ajouterai un déclencheur pour la création d’un tag et un nœud pour l’ajout d’un tag à un groupe de tags
Nous avons ajouté les éléments suivants aux workflows :
Je veux étiqueter un sujet s’il est créé avec un certain texte. Existe-t-il un moyen d’utiliser les minuscules pour {{ $JSON.topic.title }} afin que cela évalue à vrai pour “pub run”, “Pub Run”, “pUb rUn” ?
(extrait)
{
"id": "db9e2fa2-0008-4110-9c77-f1060124d7e7",
"type": "condition:if",
"typeVersion": "1.0",
"name": "If",
"parameters": {
"combinator": "and",
"conditions": [
{
"id": "29d3ed6c-e984-4d9b-83bf-861bd11b4b0a",
"operator": {
"type": "string",
"operation": "contains",
"singleValue": false
},
"leftValue": "={{ $json.topic.title }}",
"rightValue": "pub run"
}
]
},
avez-vous essayé {{ $JSON.topic.title.toLowerCase() }} ?
merci – ça a fonctionné !
quel langage de gabarit est utilisé ?
Il semble s’agir du système d’expressions JavaScript propre à Discourse Workflows, évalué côté serveur dans un bac à sable, plutôt que d’une langue de gabarit distincte telle que Liquid ou Handlebars.
Ainsi, par exemple :
={{ $json.topic.title.toLowerCase() }}
fournit le résultat attendu car le contenu de {{ ... }} est évalué en tant que JavaScript, et toLowerCase() est la méthode de chaîne JavaScript standard.
L’implémentation se trouve dans plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb ; elle expose des variables globales spécifiques aux flux de travail telles que $json, $input, $itemIndex, $trigger, $execution et $().
La syntaxe et les concepts sont assez proches de ceux de n8n. Il y a en fait une référence explicite à n8n ailleurs dans le code source de Workflows :
l’engagement oneboxed ci-dessous a ajouté le comportement de combinaison du nœud de fusion et inclut un test décrit comme suit :
defaults clash handling to add_suffix (matches n8n position combine)
Il existe donc des preuves que certaines parties de Workflows correspondent délibérément au comportement de n8n, bien que je n’aie rien trouvé qui affirme explicitement que le langage d’expression lui-même est copié de n8n ou basé dessus. Je le décrirais donc comme des expressions JavaScript en bac à sable fournies par Discourse Workflows, avec certaines conventions semblables à n8n.
Ce serait super cool d’avoir un accès basé sur les groupes pour les formulaires ![]()
J’ai remarqué que l’étape « Agent IA » exige que le bot soit activé pour l’agent concerné. Pourquoi est-ce nécessaire ? Existe-t-il une documentation à ce sujet ? J’ai passé quelques minutes à chercher pourquoi je ne pouvais pas sélectionner un agent particulier dans le menu déroulant ![]()