Envoi d'e-mails en masse sans doublons

Imaginez qu’un membre ait sélectionné les groupes et sous-catégories qui l’intéressent.

Je souhaite envoyer une annonce à ceux qui ont sélectionné l’un ou l’autre de ces groupes et sous-catégories.

Exemple : Dans une ville composée de la ville principale mondiale, de plusieurs arrondissements et de sujets.

L’utilisateur peut sélectionner :

  • Un sujet spécifique (qui est un groupe général),
  • Un groupe dans son arrondissement pour ce sujet,
  • Un groupe dans deux autres arrondissements pour ce sujet,
  • Un deuxième sujet spécifique (qui est un groupe général),
  • Tous les groupes dans tous les arrondissements pour ce sujet,
  • Le groupe principal pour la ville principale ;

Si je souhaite envoyer un e-mail à un ou plusieurs groupes ou sous-catégories de ces groupes, certains utilisateurs pourraient recevoir plusieurs e-mails de la même annonce, surtout si la personne a sélectionné le groupe de la ville principale qui transmettrait les informations de tous les arrondissements, plus certains sous-groupes, etc.

La question : Comment puis-je préparer un envoi postal touchant plus d’un groupe ciblé et des listes de sous-catégories, sans doublons, et envoyer ce message ?

  1. Ai-je besoin d’utiliser un script externe ?

  2. Ai-je besoin d’un processeur d’e-mails externe ?

Merci

Marc

Si vous avez besoin d’une livraison garantie sans doublons sur des ensembles arbitraires de groupes et de catégories, vous devez :

  • Exporter les listes d’utilisateurs des groupes ou catégories ciblés.
  • Fusionner et dédupliquer ces listes, manuellement ou à l’aide d’un script.
  • Utiliser un processeur d’e-mails externe pour envoyer le message à la liste dédupliquée.

C’est le moyen le plus fiable de garantir que les utilisateurs ne reçoivent pas la même annonce plusieurs fois.

Merci, savez-vous si nous pouvons automatiser cela, par exemple en demandant à l’API de recevoir des messages pour chaque nouvel enregistrement/retrait de membre ou sélection de groupe/catégorie, et de ne recevoir que les nouveaux changements OU (moins bien) la liste entière avec leur groupe/catégorie, qui peut être demandée par un programme Python ? (Je peux gérer le codage Python). La question porte davantage sur la communication automatique entre Discourse et Python ET Python et le processeur de messagerie.

Discourse fournit une API REST robuste qui vous permet de :

  • Lister tous les utilisateurs, groupes et appartenances utilisateur-groupe
  • Surveiller les nouvelles inscriptions d’utilisateurs et les actions de rejoindre/quitter un groupe (via sondage ou webhooks)
  • Récupérer les configurations d’appartenance aux catégories

Vous pouvez interroger la liste complète ou tenter de suivre les changements récents. Pour une détection complète des changements incrémentiels, vous devrez peut-être implémenter des vérifications basées sur le temps et gérer les différences localement. L’authentification est gérée via les en-têtes HTTP (Api-Key, Api-Username).

Cependant, pour un contrôle plus efficace et intégré, je recommande de créer un plugin Discourse personnalisé. Un plugin s’exécute à l’intérieur de l’environnement serveur de Discourse et fournit un accès direct aux internes de Discourse, tels que :

  • Mises à jour des appartenances utilisateur, groupe et catégorie
  • Hooks d’événements de cycle de vie pour les inscriptions et les changements de groupe
  • Accès direct aux API internes et à la base de données de Discourse

Cette approche vous offre des capacités en temps réel et une plus grande flexibilité pour implémenter des flux de travail automatisés comme la gestion du courrier ou la segmentation des utilisateurs.

Pouvons-nous créer un plugin qui fonctionnera sur notre instance même si elle est hébergée par Discourse, ou devons-nous l’héberger ?

S’il s’agit d’un plugin non officiel, je pense que vous ne pouvez l’installer que sur le plan Entreprise, sinon vous devrez l’auto-héberger.

  • Générer des listes dynamiques (données utilisateur/groupe/catégorie) et les afficher ou les stocker dans Discourse.
  • Exporter des données vers un fichier ou créer des rapports d’administration téléchargeables.
  • Effectuer des requêtes HTTP(S) vers un autre serveur (par exemple, envoyer des mises à jour de liste d’utilisateurs à votre outil Python/email).
  • Déclencher des webhooks, planifier des tâches ou intégrer directement des API externes, le tout depuis Discourse, sans aucun sondage requis.

@EMHmark7 as-tu finalement trouvé comment tu voulais faire fonctionner cela ?

Dans Discourse, une façon d’obtenir ce que tu veux est de créer des catégories et de laisser les membres de la communauté s’y « abonner » en choisissant le niveau de notification « Suivre ». Les options Catégories par défaut à suivre ou Catégories par défaut à suivre le premier message sont pratiques pour avoir une catégorie d’annonces sur ton site, afin de contacter tout le monde sur ton site.

Je crois qu’il existe des moyens de gérer ce qui précède en fonction de l’appartenance à un groupe ou d’autres critères, mais je ne l’ai pas fait moi-même depuis un moment - peut-être que quelqu’un d’autre a une recette à partager.

Une autre approche consiste à envoyer des messages privés directement aux groupes - si tu envoies un message privé à une poignée de groupes et que le même membre est dans plusieurs groupes, il n’y aura pas de duplication.

Mais il me semble que tu cherches peut-être un outil différent, si ce que tu veux n’est pas un forum ou une communauté dans laquelle les gens se connectent pour participer à des discussions, mais plutôt un ensemble de listes de diffusion qui envoient des e-mails.

Tout cela peut vivre dans du code extérieur à Discourse, donc tu n’as pas besoin de l’installer. Si tu utilises WordPress, tu peux obtenir une partie de cela gratuitement en utilisant GitHub - discourse/wp-discourse: WordPress plugin that lets you use Discourse as the community engine for a WordPress blog, puis utiliser un autre plugin WordPress pour gérer la partie liste de diffusion.