Olá. Existe uma maneira de substituir a escolha deliberada dos usuários existentes?
Tentei UserOption.update_all(default_categories_watching: <id>) e UserOption.update_all(watched_categories: <id>), mas estas não são opções de usuário…
EDIT e solução: User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end
É possível fazer isso através do console do Rails (e também da API), mas eu consideraria cuidadosamente se você deveria ou não. Se um usuário fez deliberadamente uma escolha de Assistir ou Silenciar uma categoria (ou tag ou tópico), então ignorar essa escolha provavelmente será indesejado. Eles também podem simplesmente reverter para o que era, então você pode não ganhar nada.
A ideia é reverter a nova configuração padrão (assistir a uma determinada categoria) e, em seguida, deixar as pessoas alterá-la como desejarem.
Notei agora que o comando acima User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end de alguma forma não funcionou para alterar as preferências de todos os usuários. Alguma ideia do porquê? Seria ainda melhor anexar a nova preferência de rastreamento às preferências de rastreamento de usuário existentes…
P.S. somos uma comunidade pequena e sei que apenas uma fração ainda menor teve tempo de ajustar suas preferências (;
Para quem não definiu especificamente uma categoria em um nível de notificação, redefinir a categoria padrão de observação e aplicá-la historicamente deve redefini-las para níveis normais.
Se os números forem pequenos, usar a interface do usuário ou a API pode ser uma aposta mais segura do que o console do Rails. De quantas pessoas estamos falando?
Para fins de compreensão, a categoria em questão chama-se Announcements e o seu ID é 22.
Fiz exatamente isso antes de também tentar o comando. Mas ainda assim, após ambos, em uma nova postagem em Announcements, apenas alguns usuários recebem um e-mail.
O que pode ter acontecido é que os usuários se desinscreveram das notificações por e-mail porque o e-mail digest continha apenas atividade “menor” (ou seja, nenhuma postagem de Announcements, conforme descrito no problema relacionado vinculado anteriormente).
Você tem o explorador de dados instalado? Se sim, você tem alguma consulta para ver quantos de seus usuários não têm o rastreamento e/ou a preferência de e-mail corretos?
Acho que precisamos de mais alguns detalhes antes de elaborar uma solução. A tabela category_users apenas mantém um registro dos níveis de notificação de categoria ativos, portanto, se alguém não tiver um, os dados não estarão na tabela para serem alterados através do console do Rails. (por exemplo, se eu adicionar #site-feedback à configuração de administrador default categories watching, ele adicionará um registro em category_users para cada usuário, e quando eu redefinir a configuração, ele excluirá esses registros novamente).
Posso confirmar que User.all.each do |user| CategoryUser.batch_set(user, :watching, [22]) alterou as preferências de rastreamento de todos os usuários para assistir à categoria desejada (22 | Anúncios); pois esta consulta lista todos os usuários:
SELECT *
FROM category_users
WHERE category_id = '22' AND notification_level = '3'
E esta consulta lista apenas 1 usuário:
SELECT *
FROM user_options uo
WHERE uo.email_level = '2'
A pergunta agora é, por que tantos usuários não recebem um e-mail quando há uma nova postagem na categoria 22 “Anúncios”
P.S. Eu mexo nas consultas SQL e não sei como uni-las.
Olá. Ainda não encontrei uma solução. Não consigo entender as preferências de usuário necessárias para receber e-mails de notificação de postagens para tópicos que estou observando. Alguma ideia? Obrigado!
Só para constar, ainda estou investigando e tentando resolver este problema. Isolei as configurações de um de nossos usuários que tem as configurações padrão de seguir uma determinada categoria (‘Announcements’), mas que não recebe notificações por e-mail para novas postagens:
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
Eu realmente não consigo ver por que esse problema surge, porque esta é a linha do usuário quando consulto os usuários que seguem a categoria ‘Announcements’:
id
category
user
notification_level
last_seen_at
123
Announcements
JohnDoe
3
NULL
Há alguma outra configuração que estou perdendo? Poderia ser que o usuário clicou em cancelar inscrição em um dos e-mails de notificação e isso alterou suas configurações de e-mail?
Clicar no link “cancelar inscrição” de um e-mail de notificação leva o usuário a uma página onde ele pode alterar suas preferências de notificação. Por exemplo:
Se um usuário selecionou uma das opções “parar de seguir todos os tópicos na categoria <category_name>” ou “Não me envie nenhum e-mail do Discourse”, você verá as alterações na página de preferências dele. Ou a categoria terá sido removida da lista de categorias que ele está seguindo, ou as preferências de e-mail dele serão alteradas para que todas as configurações em sua página de e-mail sejam definidas como “nunca”.
É mais difícil ver a alteração se o usuário selecionou a opção “parar de seguir este tópico”. Nesse caso, você pode se passar pelo usuário em sua página de administrador e, em seguida, visitar o tópico para ver se o nível de notificação dele para o tópico mudou de “seguir” para “acompanhar”. Você também pode obter informações sobre o nível de notificação dele para o tópico no console Rails:
Antes de se aprofundar muito nisso, acesse a página de Logs de E-mails Ignorados do site. Você pode acessá-la na barra lateral de administração. Insira o e-mail do usuário no campo “Endereço para” na parte superior da página. Isso pode mostrar detalhes sobre o motivo pelo qual o e-mail específico não foi enviado ao usuário.
Verifiquei a seção de e-mails ignorados. Existem apenas os casos “Usuário foi visto recentemente”, “Notificações da lista de e-mails desativadas para as postagens do próprio usuário” e “Excedeu bounce_score_threshold”.
Eu estava me perguntando se há alguma possibilidade de alterar as configurações para todos os usuários de uma das seguintes maneiras:
Alterar a configuração de todos os usuários “como se” eles tivessem acabado de se inscrever.
ou: Eu crio um novo usuário de teste e uso essas configurações para colá-las em todos os outros usuários existentes.
Existe a configuração do site “categorias padrão assistindo”. Se você a alterar, receberá a opção de aplicar as alterações historicamente. Selecionar essa opção atualizará as preferências de todos os usuários exceto para os usuários que configuraram explicitamente sua preferência para essa categoria em sua página de preferências. Acho que esse é o problema que você está tentando contornar. Você provavelmente poderia lidar com isso a partir do console Rails, mas eu provavelmente evitaria essa abordagem.
Você poderia simplesmente criar uma nova categoria para anúncios e adicionar essa categoria à configuração do site “categorias padrão assistindo” do seu site. Você poderia então organizar o site movendo tópicos da antiga categoria de anúncios para a nova. Se você quiser manter o nome da categoria “anúncios”, comece renomeando a categoria original “anúncios” para outra coisa. Percebo que isso é um pouco de um hack, mas é uma maneira de resolver o problema sem tocar no console Rails.