Участники не получают письма из отслеживаемой категории

Привет. Есть ли способ переопределить осознанный выбор существующих пользователей?

Я пробовал UserOption.update_all(default_categories_watching: <id>) и UserOption.update_all(watched_categories: <id>), но это не параметры пользователя…

РЕДАКТИРОВАНИЕ и решение: User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end

Это можно сделать через консоль Rails (а также через API), но я бы тщательно обдумал, стоит ли это делать. Если пользователь сознательно выбрал опцию «Следить» или «Скрыть» для категории (или тега, или темы), то принудительное изменение этого выбора, скорее всего, приведет к нежелательным последствиям. Кроме того, пользователь может просто вернуть всё как было, так что вы, возможно, ничего не выиграете.

Спасибо за ответ. Я полностью согласен. Однако в нашем случае речь идет о решении текущей проблемы, которую я описал здесь: Favor activity summary posts from certain category.

Идея заключается в том, чтобы откатить новое значение по умолчанию (наблюдение за определенной категорией), а затем позволить пользователям изменить его по своему усмотрению.

Я заметил, что вышеуказанная команда User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end somehow не сработала для изменения настроек всех пользователей. Есть какие-то идеи, почему? Еще лучше было бы добавить новое предпочтение отслеживания к существующим предпочтениям отслеживания пользователя…

P.S. Мы — крошечное сообщество, и я знаю, что лишь еще меньшая часть людей потратила время на настройку своих предпочтений (;

Для тех, кто явно не установил категорию на уровне уведомлений, сброс default category watching и его применение к истории должно вернуть эти настройки к обычным значениям.

Если количество пользователей невелико, использование интерфейса или API может быть безопаснее, чем консоль Rails. О скольких людях идёт речь?

Для понимания: рассматриваемая категория называется Announcements, и её ID — 22.

Я сделал именно это, а затем также попробовал команду. Но после обоих действий при новом сообщении в категории Announcements email получают только некоторые пользователи.
Возможно, пользователи отписались от уведомлений по электронной почте, поскольку письмо digest содержало только «незначительную» активность (т. е. отсутствовали сообщения из категории Announcements, как описано в связанной ранее проблеме).

60

У вас установлен Data Explorer? Если да, есть ли у вас запрос, чтобы узнать, сколько из ваших пользователей не имеют правильных настроек отслеживания и/или предпочтений по электронной почте?

Отличная идея. Я займусь этим, когда у меня будет немного больше времени!

Более простой вариант в плане немедленных усилий — написать скрипт на Rails для сброса необходимых параметров для всех пользователей. Это тоже меня бы порадовало.

Думаю, нам нужно узнать немного больше деталей, прежде чем искать решение. Таблица category_users хранит только записи об активных уровнях уведомлений по категориям, поэтому, если у кого-то такой записи нет, данных в таблице для изменения через rails console не будет. (Например, если я добавлю #site-feedback в настройку администратора «Категории по умолчанию, за которыми ведется наблюдение», для каждого пользователя будет создана запись в category_users, а при сбросе этой настройки эти записи снова будут удалены).

Я могу подтвердить, что User.all.each do |user| CategoryUser.batch_set(user, :watching, [22]) изменил настройки отслеживания всех пользователей на отслеживание нужной категории (22 | Объявления), так как этот запрос выводит всех пользователей:

SELECT *
FROM category_users 
WHERE category_id = '22' AND notification_level = '3'

А этот запрос выводит только одного пользователя:

SELECT *
FROM user_options uo
WHERE uo.email_level = '2'

Вопрос теперь в том, почему так много пользователей не получают письмо при появлении нового поста в категории 22 «Объявления» :thinking:

P.S. Я экспериментирую с SQL-запросами и не знаю, как их объединять.

Привет. Я пока не нашёл решения. Не могу понять, какие настройки пользователя необходимы для получения уведомлений по электронной почте о новых сообщениях в отслеживаемых темах. Есть какие-то идеи? Спасибо!

Привет, @JammyDodger

На всякий случай я всё ещё пытаюсь разобраться и решить эту проблему. Я выделил настройки одного из наших пользователей, у которого установлены настройки по умолчанию для отслеживания определённой категории («Объявления»), но который не получает уведомления по электронной почте о новых сообщениях:

| 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/Somwhere | 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 |

Я действительно не вижу причины, по которой возникает эта проблема, поскольку это строка пользователя при запросе пользователей, отслеживающих категорию «Объявления»:

id category user notification_level last_seen_at
123 Announcements JohnDoe 3 NULL

Есть ли какие-либо другие настройки, которые я упускаю? Возможно, пользователь нажал «Отписаться» в одном из писем с уведомлениями, и это изменило его настройки электронной почты?

Спасибо!

Нажатие на ссылку «отписаться» в уведомительном письме перенаправляет пользователя на страницу, где он может изменить свои настройки уведомлений. Например:

Если пользователь выбрал вариант «перестать следить за всеми темами в категории <category_name>» или «Не присылать мне никаких писем от Discourse», изменения отобразятся на его странице настроек. Либо категория будет удалена из списка отслеживаемых категорий, либо настройки электронной почты будут изменены так, что все параметры на странице электронной почты будут установлены в значение «никогда».

Сложнее увидеть изменения, если пользователь выбрал вариант «перестать следить за этой темой». В этом случае вы можете войти в систему от имени пользователя через его административную страницу, затем перейти к теме и проверить, изменился ли уровень уведомлений для этой темы с «следит» на «отслеживает». Также информацию об уровне уведомлений пользователя для темы можно получить через консоль Rails:

Прежде чем углубляться в это, перейдите на страницу «Журналы пропущенных писем» сайта. Доступ к ней можно получить через боковое меню администратора. Введите адрес электронной почты пользователя в поле «Адресат» в верхней части страницы. Возможно, там будет показана информация о том, почему конкретное письмо не было отправлено пользователю.

Спасибо за ответ.

Я проверил раздел пропущенных писем. Там указаны только следующие случаи: «Пользователь был активен недавно», «Уведомления рассылки отключены для собственных постов пользователя» и «Превышен порог bounce_score_threshold».

Меня интересует, есть ли возможность изменить настройки для всех пользователей одним из следующих способов:

  • Изменить настройки всех пользователей так, «как если бы» они только что зарегистрировались.
  • Или: создать нового тестового пользователя, настроить его и применить эти настройки ко всем остальным существующим пользователям.

Существует настройка сайта «default categories watching» (категории по умолчанию для отслеживания). Если вы измените её, вам будет предложено применить изменения исторически. Выбор этой опции обновит предпочтения для всех пользователей, кроме тех, кто явно настроил своё предпочтение для данной категории на странице настроек. Думаю, именно это вы и пытаетесь обойти. Вы, вероятно, могли бы решить это через консоль Rails, но я бы избегал такого подхода.

Вы можете просто создать новую категорию для объявлений и добавить её в настройку сайта «default categories watching». Затем вы можете привести сайт в порядок, переместив темы из старой категории объявлений в новую. Если вы хотите сохранить название категории «announcements», начните с переименования исходной категории «announcements» во что-то другое. Я понимаю, что это немного костыль, но это способ решить проблему, не обращаясь к консоли Rails.