Salut. Y a-t-il un moyen de remplacer le choix délibéré des utilisateurs existants ?
J’ai essayé UserOption.update_all(default_categories_watching: <id>) et UserOption.update_all(watched_categories: <id>) mais ce ne sont pas des options utilisateur…
EDIT et solution : User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end
Il est possible de le faire via la console Rails (et aussi via l’API), mais je réfléchirais bien à la question de savoir si vous devriez le faire ou non. Si un utilisateur a délibérément fait le choix de « Regarder » ou de « Mettre en sourdine » une catégorie (ou une étiquette ou un sujet), alors outrepasser ce choix sera probablement indésirable. Il peut également simplement le rétablir à ce qu’il était, de sorte que vous pourriez ne rien gagner.
L’idée est de revenir au nouveau paramètre par défaut (suivre une certaine catégorie) et de laisser ensuite les gens le modifier comme ils le souhaitent.
J’ai remarqué maintenant que la commande ci-dessus User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end n’a pas fonctionné pour modifier les préférences de tous les utilisateurs. Une idée pourquoi ? Encore mieux serait d’ajouter la nouvelle préférence de suivi aux préférences de suivi existantes des utilisateurs…
P.S. nous sommes une petite communauté et je sais que seule une fraction encore plus petite a pris le temps d’ajuster ses préférences (;
Pour ceux qui n’ont pas spécifiquement défini de catégorie à un niveau de notification, réinitialiser la catégorie par défaut surveillée et l’appliquer historiquement devrait les ramener à des niveaux normaux.
Si les chiffres sont faibles, l’utilisation de l’interface utilisateur ou de l’API pourrait être une option plus sûre que la console Rails. De combien de personnes parlons-nous ?
Pour la compréhension, la catégorie en question s’appelle Announcements et son ID est 22.
J’ai fait exactement cela avant d’essayer également la commande. Mais toujours après les deux, lors d’un nouveau message dans Announcements, seuls certains utilisateurs reçoivent un e-mail.
Ce qui a pu se passer, c’est que les utilisateurs se sont désabonnés des notifications par e-mail car l’e-mail digest ne contenait que des activités « mineures » (c’est-à-dire aucun message de Announcements comme décrit dans le problème connexe lié précédemment).
Avez-vous installé l’explorateur de données ? Si oui, avez-vous une requête pour voir combien de vos utilisateurs n’ont pas le bon suivi et/ou la bonne préférence d’e-mail ?
Bonne idée. Je le ferai quand j’aurai un peu plus de temps !
Un script rails pour réinitialiser les paramètres nécessaires à tous les utilisateurs me rendrait également heureux, car il représente un effort immédiat moindre.
Je pense que nous devons en savoir un peu plus avant de trouver une solution. La table category_users ne conserve qu’un enregistrement des niveaux de notification de catégorie actifs, donc si quelqu’un n’en a pas, les données ne seront pas dans la table pour être modifiées via la console Rails. (par exemple, si j’ajoute #site-feedback au paramètre administrateur default categories watching, cela ajoutera un enregistrement dans category_users pour chaque utilisateur, et lorsque je réinitialiserai le paramètre, ces enregistrements seront à nouveau supprimés).
Je peux confirmer que User.all.each do |user| CategoryUser.batch_set(user, :watching, [22]) a modifié les préférences de suivi de tous les utilisateurs pour regarder la catégorie souhaitée (22 | Annonces) ; car cette requête liste tous les utilisateurs :
SELECT *
FROM category_users
WHERE category_id = '22' AND notification_level = '3'
Et cette requête ne liste qu’un seul utilisateur :
SELECT *
FROM user_options uo
WHERE uo.email_level = '2'
La question est maintenant, pourquoi tant d’utilisateurs ne reçoivent pas d’e-mail lorsqu’il y a un nouveau message dans la catégorie 22 « Annonces »
P.S. Je bricole les requêtes SQL et je ne sais pas comment les joindre.
Salut. Je n’ai pas encore trouvé de solution. Je n’arrive pas à comprendre les préférences utilisateur nécessaires pour recevoir des e-mails de notification de publication pour les sujets suivis. Une idée ? Merci !
Juste au cas où, je continue d’enquêter et d’essayer de résoudre ce problème. J’ai isolé les paramètres d’un de nos utilisateurs qui a les paramètres par défaut pour regarder une certaine catégorie (‘Annonces’) mais qui ne reçoit pas de notifications par e-mail pour les nouveaux messages :
Je ne vois vraiment pas pourquoi ce problème survient car voici la ligne de cet utilisateur lorsque j’interroge les utilisateurs qui regardent la catégorie ‘Annonces’ :
id
catégorie
utilisateur
niveau_notification
vu_pour_la_dernière_fois_à
123
Annonces
JohnDoe
3
NULL
Y a-t-il d’autres paramètres que je manque ? Serait-il possible que l’utilisateur ait cliqué sur se désabonner dans l’un des e-mails de notification et que cela ait modifié ses paramètres d’e-mail ?
Cliquer sur le lien « se désabonner » d’un e-mail de notification redirige l’utilisateur vers une page où il peut modifier ses préférences de notification. Par exemple :
Si un utilisateur a sélectionné l’option « arrêter de suivre tous les sujets de la catégorie <category_name> » ou « Ne m’envoyer aucun e-mail de Discourse », vous verrez les modifications sur sa page de préférences. Soit la catégorie aura été supprimée de sa liste de catégories suivies, soit ses préférences de messagerie seront modifiées de telle sorte que tous les paramètres de sa page de messagerie seront définis sur « jamais ».
Il est plus difficile de constater le changement si l’utilisateur a sélectionné l’option « arrêter de suivre ce sujet ». Dans ce cas, vous pouvez vous faire passer pour l’utilisateur depuis sa page d’administration, puis visiter le sujet pour voir si son niveau de notification pour le sujet est passé de « suivre » à « suivre ». Vous pouvez également obtenir des informations sur son niveau de notification pour le sujet à partir de la console Rails :
Avant de vous laisser entraîner dans cela, consultez la page des journaux d’e-mails ignorés du site. Vous pouvez y accéder depuis la barre latérale d’administration. Entrez l’e-mail de l’utilisateur dans le champ « À » situé en haut de la page. Cela pourrait vous montrer pourquoi l’e-mail en question n’a pas été envoyé à l’utilisateur.
J’ai vérifié la section des e-mails ignorés. Il n’y a que les cas « L’utilisateur a été vu récemment », « Notifications de liste de diffusion désactivées pour les publications de l’utilisateur » et « Seuil de score de rebond dépassé ».
Je me demandais s’il était possible de modifier les paramètres de tous les utilisateurs de l’une des manières suivantes :
Modifier le paramètre de tous les utilisateurs « comme s’ils » venaient de s’inscrire.
ou : Je crée un nouvel utilisateur test et j’utilise ces paramètres pour les copier sur tous les autres utilisateurs existants.
Il existe le paramètre du site « catégories par défaut surveillées ». Si vous le modifiez, vous aurez la possibilité d’appliquer les modifications historiquement. La sélection de cette option mettra à jour les préférences de tous les utilisateurs sauf les utilisateurs qui ont explicitement configuré leur préférence pour cette catégorie sur leur page de préférences. Je pense que c’est le problème que vous essayez d’éviter. Vous pourriez probablement le gérer depuis la console Rails, mais j’éviterais probablement cette approche.
Vous pourriez simplement créer une nouvelle catégorie pour les annonces et ajouter cette catégorie au paramètre du site « catégories par défaut surveillées » de votre site. Vous pourriez ensuite nettoyer le site en déplaçant les sujets de l’ancienne catégorie d’annonces vers la nouvelle. Si vous souhaitez conserver le nom de catégorie « annonces », commencez par renommer la catégorie « annonces » d’origine en autre chose. Je réalise que c’est un peu une solution de contournement, mais c’est une façon de résoudre le problème sans toucher à la console Rails.