Correos electrónicos masivos sin duplicados

Imagina que un miembro ha seleccionado grupos y subcategorías que le interesan.

Quiero enviar un anuncio a aquellos que seleccionaron cualquiera de esos grupos y subcategorías.

Ejemplo: En una ciudad compuesta por la ciudad principal global, varios distritos y asuntos.

El usuario puede seleccionar:

  • Un asunto específico (que es un grupo general),
  • Un grupo en su distrito para este asunto,
  • Un grupo en otros dos distritos para este asunto,
  • Un segundo asunto específico (que es un grupo general),
  • Todos los grupos en todos los distritos para este asunto,
  • El grupo principal para la ciudad principal;

Si deseo enviar un correo electrónico a uno o más grupos o subcategorías dentro de estos grupos, algunos usuarios podrían terminar recibiendo más de un correo electrónico del mismo anuncio, especialmente si la persona seleccionó el grupo de la ciudad principal que reenviaría la información de todos los distritos, además de algunos subgrupos, etc.

La pregunta: ¿Cómo puedo preparar un envío de correo que abarque más de un grupo y listas de subcategorías de destino, sin duplicados, y enviar ese mensaje?

  1. ¿Necesito usar un script externo?

  2. ¿Necesito un procesador de correo externo?

Gracias

Marc

Si requiere entregas garantizadas sin duplicados en conjuntos arbitrarios de grupos y categorías, debe:

  • Exportar listas de usuarios de los grupos o categorías específicos.
  • Fusionar y eliminar duplicados de estas listas, ya sea manualmente o mediante un script.
  • Utilizar un procesador de correo electrónico externo para enviar el mensaje a la lista sin duplicados.

Esta es la forma más sólida de garantizar que los usuarios no reciban el mismo anuncio varias veces.

Gracias, ¿sabe si podemos automatizar eso, como solicitar a la API que reciba mensajes por cada nuevo registro/retiro de miembro o selección de grupo/categoría, y recibir solo los nuevos cambios O (menos bueno) la lista completa con su grupo/categoría, que puede ser solicitada por un programa de Python? (Puedo gestionar la codificación de Python). La pregunta es más sobre la comunicación automática entre Discourse y Python Y Python y el procesador de correo electrónico.

Discourse proporciona una API REST robusta que te permite:

  • Listar todos los usuarios, grupos y membresías de usuarios-grupos
  • Monitorizar nuevos registros de usuarios y acciones de unirse/salir de grupos (mediante sondeos o webhooks)
  • Recuperar configuraciones de membresía de categorías

Puedes consultar la lista completa o intentar rastrear cambios recientes. Para una detección completa de cambios incrementales, puede que necesites implementar comprobaciones basadas en el tiempo y gestionar las diferencias localmente. La autenticación se maneja a través de encabezados HTTP (Api-Key, Api-Username).

Sin embargo, para un control más eficiente e integrado, recomiendo crear un plugin personalizado de Discourse. Un plugin se ejecuta dentro del entorno del servidor de Discourse y proporciona acceso directo a los internos de Discourse, como:

  • Actualizaciones de membresía de usuarios, grupos y categorías
  • Ganchos de eventos de ciclo de vida para registros y cambios de grupo
  • Acceso directo a las APIs internas y la base de datos de Discourse

Este enfoque te brinda capacidades en tiempo real y mayor flexibilidad para implementar flujos de trabajo automatizados como el manejo de correo o la segmentación de usuarios.

¿Podemos crear un plugin que funcione en nuestra instancia incluso si está alojada por Discourse, o necesitamos alojarlo nosotros?

Si es un plugin no oficial, creo que solo puedes instalarlo en el plan Enterprise, de lo contrario, tendrás que autoalojarlo.

  • Genere listas dinámicas (datos de usuario/grupo/categoría) y muéstrelas o almacénelas dentro de Discourse.
  • Exporte datos a un archivo o cree informes de administración descargables.
  • Realice solicitudes HTTP(S) a otro servidor (por ejemplo, envíe actualizaciones de la lista de usuarios a su herramienta de Python/correo electrónico).
  • Active webhooks, programe tareas o integre directamente con API externas, todo desde dentro de Discourse, sin necesidad de sondeo.

@EMHmark7 ¿Lograste averiguar cómo quieres que esto funcione?

En Discourse, una forma de conseguir lo que buscas es crear categorías y permitir que los miembros de la comunidad se “suscriban” a esas categorías eligiendo el nivel de notificación “seguir”. Las Categorías predeterminadas que sigo o Primera publicación de categorías predeterminadas que sigo son útiles para tener una categoría de anuncios en tu sitio, para llegar a todos en tu sitio.

Creo que hay formas de gestionar lo anterior basándose en la pertenencia a un grupo o algún otro criterio, pero no lo he hecho yo mismo en mucho tiempo; tal vez alguien más tenga una receta que pueda compartir.

Otro enfoque es enviar mensajes privados directamente a los grupos; si envías un mensaje privado a un puñado de grupos y el mismo miembro está en varios grupos, no habrá duplicación.

Pero me parece que podrías estar buscando una herramienta diferente, si lo que quieres no es un foro o una comunidad en la que la gente inicie sesión para participar en discusiones, sino un montón de listas de correo que envíen correos electrónicos.

Todo esto puede vivir en código fuera de Discourse, por lo que no tienes que instalarlo. Si estás usando WordPress, puedes obtener gran parte de esto de forma gratuita usando GitHub - discourse/wp-discourse: WordPress plugin that lets you use Discourse as the community engine for a WordPress blog, y luego usar otro plugin de WordPress para manejar la parte de la lista de correo.