Las comunidades de Discourse a menudo necesitan automatizar la pertenencia a grupos en función de condiciones como la posesión de insignias o la pertenencia a otros grupos.
Los casos de uso comunes incluyen:
Usuarios que no están en el grupo ‘suscriptores’
Usuarios que no tienen prohibido publicar en Marketplace
Usuarios con nivel de confianza 0 o 1, pero no 2
Usuarios que han completado el tutorial para nuevos usuarios o que llevan más de un año como miembros
Usuarios que pertenecen a cliente_1, cliente_2 o cliente_3 y no son becarios
Anteriormente, resolver esto requería scripts personalizados que sincronizaban los grupos periódicamente. El plugin Dynamic Groups elimina esa necesidad.
Este plugin introduce un campo de expresión booleana en la configuración de los grupos, lo que permite a los administradores definir reglas que determinan dinámicamente la pertenencia al grupo.
Ejemplos:
usuarios que no están en el grupo ‘suscriptores’ trust_level_0 AND NOT subscribers
usuarios que no tienen prohibido publicar en Marketplace trust_level_2 AND NOT banned_users
usuarios que están en nivel de confianza 0 o 1, pero no en 2 trust_level_0 AND NOT trust_level_2
usuarios que han completado el tutorial para nuevos usuarios o llevan más de un año como miembros badge:certified OR badge:anniversary
usuarios que pertenecen al cliente 1, 2 o 3 y no son becarios (client_1 OR client_2 OR client_3) AND NOT interns
Configuración
Una vez instalado y habilitado el plugin, aparecerá una nueva pestaña en la interfaz de administración de grupos:
Cuando introduzcas o actualices la expresión booleana, el sistema tardará unos momentos en rellenar el grupo con los usuarios que coincidan. A partir de ese momento, la pertenencia al grupo se actualizará automáticamente a medida que cambie el estado de los usuarios.
Importante:
Cuando se define una regla, el grupo se marca como automático, lo que deshabilita los cambios manuales de miembros. Para volver a la gestión manual del grupo, simplemente borra el campo de la expresión. Los miembros existentes permanecerán y recuperarás el control manual.
Hola, ¡gracias por desarrollar este plugin tan útil!
Actualmente estoy usando Discourse Dynamic Groups para añadir automáticamente todos los usuarios no anónimos a un grupo especial. Mi expresión booleana es:
NOT anonymous_users
Comportamiento esperado:
Cuando un nuevo usuario se registra (que no pertenece al grupo anonymous_users), debería ser añadido automáticamente a este grupo, sin ninguna intervención manual.
Comportamiento real:
Los usuarios recién registrados no se añaden inmediatamente al grupo. Solo se añaden después de que yo vuelva a guardar manualmente la expresión booleana en la configuración del grupo.
Esto significa que el grupo no se actualiza automáticamente a medida que los usuarios se unen, a menos que yo active una sincronización manual.
Recibo el error: Palabra clave, grupo o insignia desconocida: 'anonymous_users'
Si cambio el nombre del grupo a mi grupo real, por ejemplo:
trust_level_0 AND NOT interns
Aún recibo: Palabra clave, grupo o insignia desconocida: 'interns'
He verificado dos veces y estoy copiando el nombre único del grupo directamente desde la página de administración del grupo, así que no hay errores de escritura.
¿Hay algo que podría estar olvidando o hay algo más que necesito configurar para que los grupos personalizados sean reconocidos en la expresión?
Intentando reproducir, he identificado dos errores y uno de ellos probablemente te afectó. ¿Puedes actualizar el plugin a la última versión 59640f1 y ver si eso resuelve el problema?
El plugin todavía no gestiona muy bien el cambio de nombre de los grupos. Si cambias el nombre de un grupo, debes guardar las reglas de todos los grupos que dependen de él (simplemente introduce un espacio después de la expresión booleana y elimínalo de nuevo para habilitar el botón Guardar). Esto se abordará en una versión posterior.
Los usuarios con nivel de confianza 1 también son miembros del grupo de nivel de confianza 0. Por lo tanto, el comportamiento es el esperado. Podrías excluir al grupo de nivel de confianza 1 para obtener solo usuarios TL0. Similar al ejemplo de la primera publicación
Aunque entiendo el motivo, esto causa algunos problemas cuando quieres experimentar con el Título predeterminado, el Distintivo y el Efecto.
Esto se puede solucionar bien revelando la pestaña en la consola del navegador, o eliminando la expresión en la pestaña de Grupos Dinámicos, actualizando, realizando los cambios, pegándola de nuevo y actualizando otra vez.
Pero me pregunto si no sería mejor simplemente ocultar los campos que no son útiles, en lugar de toda la pestaña. Algo más parecido a esto:
¡Sí, ya lo resolví en el tiempo entre mi publicación y tu respuesta! No había apreciado que te conectas a la funcionalidad principal con eso; además, está muy bien hecho.
He tachado mi sugerencia incorrecta.
Supongo que la otra solución alternativa que mencioné está bien entonces.
Vamos a realizar una ronda de mantenimiento en todos los plugins en el próximo mes o así. Tal vez necesitemos revisar la opción ‘automático’, ya que, por lo que recuerdo, era solo una forma rápida de desactivar la funcionalidad de agregar/quitar miembros. Todo lo demás probablemente sean efectos secundarios no deseados.