Hallo. Gibt es eine Möglichkeit, die bewusste Wahl bestehender Benutzer zu überschreiben?
Ich habe versucht UserOption.update_all(default_categories_watching: <id>) und UserOption.update_all(watched_categories: <id>), aber das sind keine Benutzeroptionen…
EDIT und Lösung: User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end
Es ist möglich, dies über die Rails-Konsole (und auch über die API) zu tun, aber ich würde sorgfältig überlegen, ob Sie dies tun sollten oder nicht. Wenn ein Benutzer bewusst die Entscheidung getroffen hat, eine Kategorie (oder ein Tag oder Thema) zu beobachten oder stummzuschalten, ist es wahrscheinlich unerwünscht, diese Entscheidung zu überschreiben. Sie können es auch einfach wieder auf das zurücksetzen, was es war, sodass Sie möglicherweise nichts gewinnen.
Danke für die Antwort. Ich stimme vollkommen zu. In unserem Fall geht es jedoch darum, ein aktuelles Problem zu lösen, das ich hier beschrieben habe: Favor activity summary posts from certain category.
Die Idee ist, die neue Standardeinstellung (Beobachten einer bestimmten Kategorie) rückgängig zu machen und die Leute dann ihre Einstellungen nach Belieben ändern zu lassen.
Ich habe jetzt bemerkt, dass der obige Befehl User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end aus irgendeinem Grund nicht funktioniert hat, um die Einstellungen für alle Benutzer zu ändern. Irgendeine Idee warum? Noch besser wäre es, die neue Tracking-Einstellung zu den bestehenden Benutzer-Tracking-Einstellungen hinzuzufügen…
P.S. Wir sind eine kleine Community und ich weiß, dass nur ein noch kleinerer Bruchteil sich die Zeit genommen hat, seine Einstellungen anzupassen (;
Für alle, die keine bestimmte Kategorie auf Benachrichtigungsebene festgelegt haben, sollten das Zurücksetzen der Standardkategorie-Beobachtung und die historische Anwendung dieser Einstellungen diese auf normale Stufen zurücksetzen.
Wenn die Zahlen gering sind, ist die Verwendung der Benutzeroberfläche oder der API möglicherweise sicherer als die Rails-Konsole. Über wie viele Personen sprechen wir?
Zum besseren Verständnis: Die betreffende Kategorie heißt Ankündigungen und ihre ID ist 22.
Ich habe genau das getan, bevor ich auch den Befehl ausprobiert habe. Aber immer noch, nach beidem, bei einem neuen Beitrag in Ankündigungen erhalten nur einige Benutzer eine E-Mail.
Was passiert sein könnte, ist, dass Benutzer sich von den E-Mail-Benachrichtigungen abgemeldet haben, weil die Digest-E-Mail nur “geringfügige” Aktivitäten enthielt (d. h. keine Beiträge aus Ankündigungen, wie im zuvor verlinkten verwandten Problem beschrieben).
Haben Sie den Daten-Explorer installiert? Wenn ja, haben Sie eine Abfrage, um zu sehen, wie viele Ihrer Nutzer das richtige Tracking und/oder die richtige E-Mail-Präferenz nicht haben?
Gute Idee. Das mache ich, wenn ich etwas mehr Zeit habe!
Weniger Aufwand bedeutet sofortige Mühe, ein Rails-Skript zum Zurücksetzen der notwendigen Parameter für alle Benutzer würde mich ebenfalls glücklich machen.
Ich denke, wir müssen mehr Details erfahren, bevor wir eine Lösung ausarbeiten können. Die Tabelle category_users speichert nur aktive Benachrichtigungsebenen für Kategorien. Wenn also jemand keine hat, sind die Daten nicht in der Tabelle vorhanden, um sie über die Rails-Konsole zu ändern. (Wenn ich beispielsweise #site-feedback zur Admin-Einstellung default categories watching hinzufüge, wird für jeden Benutzer ein Eintrag in category_users erstellt, und wenn ich die Einstellung zurücksetze, werden diese Einträge wieder gelöscht).
Ich kann bestätigen, dass User.all.each do |user| CategoryUser.batch_set(user, :watching, [22]) die Tracking-Einstellungen aller Benutzer geändert hat, um die gewünschte Kategorie (22 | Ankündigungen) zu beobachten. Diese Abfrage listet alle Benutzer auf:
SELECT *
FROM category_users
WHERE category_id = '22' AND notification_level = '3'
Und diese Abfrage listet nur 1 Benutzer auf:
SELECT *
FROM user_options uo
WHERE uo.email_level = '2'
Die Frage ist nun, warum so viele Benutzer keine E-Mail erhalten, wenn es einen neuen Beitrag in Kategorie 22 „Ankündigungen“ gibt
P.S. Ich experimentiere mit den SQL-Abfragen und weiß nicht, wie ich sie verbinden kann.
Hallo. Ich habe noch keine Lösung gefunden. Ich kann die notwendigen Benutzereinstellungen nicht verstehen, um E-Mail-Benachrichtigungen für beobachtete Themen zu erhalten. Irgendwelche Ideen? Danke!
Nur für den Fall, ich untersuche das Problem weiterhin und versuche, es zu lösen. Ich habe die Einstellungen eines unserer Benutzer isoliert, der die Standardeinstellungen für das Beobachten einer bestimmten Kategorie (‘Ankündigungen’) hat, aber keine E-Mail-Benachrichtigungen für neue Beiträge erhält:
user
mailing_list_mode
email_digests
external_links_in_new_tab
enable_quoting
dynamic_favicon
automatically_unpin_topics
digest_after_minutes
auto_track_topics_after_msecs
new_topic_duration_minutes
last_redirected_to_top_at
email_previous_replies
email_in_reply_to
like_notification_frequency
mailing_list_mode_frequency
include_tl0_in_digests
notification_level_when_replying
theme_key_seq
allow_private_messages
homepage
theme_ids
hide_profile_and_presence
text_size_key
text_size_seq
email_level
email_messages_level
title_count_mode_key
enable_defer
timezone
enable_allowed_pm_users
dark_scheme
skip_new_user_tips
color_scheme
default_calendar
oldest_search_log_date
chat_enabled
only_chat_push_notifications
chat_sound
dismissed_channel_retention_reminder
dismissed_dm_retention_reminder
bookmark_auto_delete_preference
ignore_channel_wide_mention
chat_email_frequency
enable_experimental_sidebar
seen_popups
chat_header_indicator_preference
sidebar_link_to_filtered_list
sidebar_show_count_of_new_items
watched_precedence_over_muted
chat_separate_sidebar_mode
topics_unread_when_closed
show_thread_title_prompts
JohnDoe
false
true
true
true
false
true
10080
240000
2880
2023-06-13T08:25:13.000Z
1
false
1
1
true
2
0
true
NULL
{}
false
0
0
1
1
0
false
Europe/Somewhere
false
NULL
false
NULL
0
NULL
true
NULL
NULL
NULL
NULL
3
NULL
1
false
{1,2,3,4,5}
0
false
false
NULL
0
true
true
Ich kann wirklich nicht sehen, warum dieses Problem auftritt, da dies die Zeile des Benutzers ist, wenn ich die Benutzer abfrage, die die Kategorie ‘Ankündigungen’ beobachten:
id
category
user
notification_level
last_seen_at
123
Announcements
JohnDoe
3
NULL
Gibt es noch andere Einstellungen, die ich übersehe? Könnte es sein, dass der Benutzer in einer der Benachrichtigungs-E-Mails auf “Abmelden” geklickt hat und dies seine E-Mail-Einstellungen geändert hat?
Wenn Sie in einer Benachrichtigungs-E-Mail auf den Link „Abbestellen“ klicken, gelangen Sie zu einer Seite, auf der Sie Ihre Benachrichtigungseinstellungen ändern können. Zum Beispiel:
Wenn ein Benutzer entweder die Option „Alle Themen in der Kategorie <category_name> nicht mehr verfolgen“ oder „Keine E-Mails von Discourse senden“ ausgewählt hat, sehen Sie die Änderungen auf deren Einstellungsseite. Entweder wurde die Kategorie aus der Liste der beobachteten Kategorien entfernt, oder deren E-Mail-Einstellungen wurden so geändert, dass alle Einstellungen auf deren E-Mail-Seite auf „nie“ gesetzt sind.
Es ist schwieriger, die Änderung zu sehen, wenn der Benutzer die Option „Dieses Thema nicht mehr verfolgen“ ausgewählt hat. In diesem Fall könnten Sie den Benutzer von deren Admin-Seite aus imitieren und dann das Thema besuchen, um zu sehen, ob sich deren Benachrichtigungsstufe für das Thema von „beobachten“ zu „verfolgen“ geändert hat. Sie können die Informationen über deren Benachrichtigungsstufe für das Thema auch über die Rails-Konsole abrufen:
Bevor Sie sich zu sehr damit beschäftigen, rufen Sie die Seite „Skipped Email Logs“ der Website auf. Sie können diese über die Admin-Seitenleiste aufrufen. Geben Sie die E-Mail des Benutzers in das Feld „An Adresse“ oben auf der Seite ein. Möglicherweise werden Ihnen Details angezeigt, warum die jeweilige E-Mail nicht an den Benutzer gesendet wurde.
Ich habe den Abschnitt mit den übersprungenen E-Mails überprüft. Dort gibt es nur die Fälle „Benutzer wurde kürzlich gesehen“, „Mailinglisten-Benachrichtigungen für eigene Beiträge des Benutzers deaktiviert“ und „bounce_score_threshold überschritten“.
Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Einstellungen für alle Benutzer auf eine der folgenden Arten zu ändern:
Ändere die Einstellung aller Benutzer „so als ob“ sie sich gerade angemeldet hätten.
oder: Ich erstelle einen neuen Testbenutzer und verwende diese Einstellungen, um sie auf alle anderen vorhandenen Benutzer zu übertragen.
Es gibt die Site-Einstellung „Standardkategorien beobachten“. Wenn Sie diese ändern, erhalten Sie die Option, die Änderungen historisch anzuwenden. Wenn Sie diese Option auswählen, werden die Einstellungen für alle Benutzer aktualisiert, mit Ausnahme von Benutzern, die ihre Einstellungen für diese Kategorie explizit auf ihrer Einstellungsseite konfiguriert haben. Ich denke, das ist das Problem, das Sie umgehen wollen. Sie könnten das wahrscheinlich von der Rails-Konsole aus erledigen, aber ich würde diesen Ansatz wahrscheinlich vermeiden.
Sie könnten einfach eine neue Kategorie für Ankündigungen erstellen und diese Kategorie zu den Site-Einstellungen „Standardkategorien beobachten“ Ihrer Site hinzufügen. Sie könnten die Site dann aufräumen, indem Sie Themen von der alten Ankündigungskategorie in die neue verschieben. Wenn Sie den Kategorienamen „Ankündigungen“ beibehalten möchten, beginnen Sie damit, die ursprüngliche „Ankündigungen“-Kategorie in etwas anderes umzubenennen. Mir ist bewusst, dass dies ein kleiner Hack ist, aber es ist eine Möglichkeit, das Problem zu lösen, ohne die Rails-Konsole zu berühren.