@gilles Ya he implementado la continuación que mencioné arriba:
Agrega una operación genérica Evento → Establecer asistencia, con:
asistente
estado de asistencia: Asistiré / Interesado / No asistiré / Eliminar asistencia
ID del tema
actor opcional
Así, tu caso de uso original se puede construir como:
Publicación creada → Si es la primera publicación → Evento / Establecer asistencia
usando al autor del evento como asistente y configurándolo como Asistiré.
Probé ese patrón exacto localmente en la interfaz de Workflows, apilado sobre #42932, y confirmé que el usuario se registra automáticamente como Asistiré en el evento.
La PR es actualmente solo un borrador porque depende de #42932. Una vez que #42932 se fusione, la rebasearé sobre main, lo que dejará solo el diff de asistencia.
¿Existe alguna forma de reintentar un flujo de trabajo (con el mismo evento), de manera similar a cómo, con un webhook, se puede reenviar una carga útil?
¿Existe un disparador o evento que se active cuando se crea una NUEVA etiqueta?
Cuando un usuario crea una nueva etiqueta, ¿hay alguna forma de añadirla automáticamente a un grupo de etiquetas específico? Si no, ¿cuál es el enfoque recomendado?
Existe “Topic Tag Changed”. Luego podrías llamar a la API de Discourse y ver cuántas veces se usa la etiqueta. Si es una vez / si está en ese tema específico, sabes que la etiqueta es nueva.
Alternativamente, y quizás más fácil: podrías configurar un webhook para “tag is created” y apuntarlo a un disparador de webhook de flujo de trabajo.
Caso de uso: tengo un grupo de etiquetas llamado “artista”. Los nuevos artistas debutan constantemente, por lo que aparecen nuevas etiquetas de artistas a medida que los usuarios las crean. Quiero que esas nuevas etiquetas se añadan automáticamente al grupo de etiquetas “artista”, en lugar de tener que añadirlas manualmente. ¿Existe una buena manera de lograr esto con Workflows?
Eso es exactamente lo que maneja el paso de IA. El agente de IA primero determina si una nueva etiqueta pertenece a alguno de los grupos definidos (artista / miembro / región / tipo de evento / tipo de lanzamiento); si no coincide con ninguno, se omite y nunca se archiva en un grupo. De esta manera, las etiquetas aleatorias se filtran y solo las etiquetas clasificadas correctamente se agregan automáticamente a un grupo de etiquetas.
Quiero etiquetar un tema si se crea con un texto específico. ¿Existe alguna forma de usar minúsculas para {{ $JSON.topic.title }} para que esta condición evalúe como verdadera para “pub run”, “Pub Run”, “pUb rUn”?
Parece ser el propio sistema de expresiones de JavaScript de Discourse Workflows, evaluado en el servidor dentro de un entorno aislado (sandbox) y no un lenguaje de plantillas separado como Liquid o Handlebars.
Por lo tanto, por ejemplo:
={{ $json.topic.title.toLowerCase() }}
funciona porque el contenido de {{ ... }} se evalúa como JavaScript, y toLowerCase() es el método de cadena estándar de JavaScript.
La implementación se encuentra en plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb; expone variables globales específicas del flujo de trabajo, como $json, $input, $itemIndex, $trigger, $execution y $().
La sintaxis y los conceptos son bastante similares a los de n8n. De hecho, hay una referencia explícita a n8n en otra parte del código fuente de Workflows:
el commit unificado a continuación añadió el comportamiento de combinación del nodo de fusión e incluye una prueba descrita como:
defaults clash handling to add_suffix (matches n8n position combine)
Por lo tanto, hay evidencia de que partes de Workflows coinciden deliberadamente con el comportamiento de n8n, aunque no pude encontrar nada que afirmara explícitamente que el propio lenguaje de expresiones fue copiado o basado en n8n. Por lo tanto, lo describiría como expresiones de JavaScript en un entorno aislado proporcionadas por Discourse Workflows, con algunas convenciones similares a las de n8n.
He notado que el paso de Agente de IA requiere que el agente tenga la función Bot activada. ¿Por qué es esto necesario? ¿Se puede documentar en algún lugar? Pasé unos minutos intentando averiguar por qué no podía seleccionar un agente específico en el menú desplegable