Ciao. C’è un modo per sovrascrivere la scelta deliberata degli utenti esistenti?
Ho provato UserOption.update_all(default_categories_watching: <id>) e UserOption.update_all(watched_categories: <id>) ma queste non sono opzioni utente…
MODIFICA e soluzione: User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end
È possibile farlo tramite la console di Rails (e anche tramite l’API), ma valuterei attentamente se farlo o meno. Se un utente ha fatto una scelta deliberata di “Watch” o “Mute” una categoria (o tag o argomento), sovrascrivere quella scelta sarà probabilmente indesiderato. Possono anche semplicemente ripristinarla a come era, quindi potresti non ottenere alcun vantaggio.
L’idea è quella di ripristinare l’impostazione predefinita (seguire una determinata categoria) e poi lasciare che le persone la modifichino a loro piacimento.
Ho notato ora che il comando sopra User.all.each do |user| CategoryUser.batch_set(user, :watching, [<id>]) end in qualche modo non ha funzionato per modificare le preferenze di tutti gli utenti. Qualche idea sul perché? Ancora meglio sarebbe aggiungere la nuova preferenza di monitoraggio alle preferenze di monitoraggio utente esistenti…
P.S. siamo una piccola community e so che solo una frazione ancora più piccola si è presa il tempo di regolare le proprie preferenze (;
Per chiunque non abbia impostato specificamente una categoria a livello di notifica, ripristinare la categoria predefinita di osservazione e applicarla storicamente dovrebbe ripristinare questi a livelli normali.
Se i numeri sono piccoli, usare l’interfaccia utente o l’API potrebbe essere una scommessa più sicura rispetto alla console rails. Di quante persone stiamo parlando?
Per chiarezza, la categoria in questione si chiama Announcements e il suo ID è 22.
Ho fatto esattamente questo prima di provare anche il comando. Ma ancora dopo entrambi, in un nuovo post in Announcements, solo alcuni utenti ricevono un’email.
Ciò che potrebbe essere successo è che gli utenti si siano disiscritti dalle notifiche via email perché l’email digest conteneva solo attività “minori” (cioè, nessun post da Announcements come descritto nel problema correlato collegato in precedenza)
Penso che abbiamo bisogno di conoscere qualche dettaglio in più prima di elaborare una soluzione. La tabella category_users registra solo i livelli di notifica delle categorie attive, quindi se qualcuno non ne ha uno, i dati non saranno nella tabella da modificare tramite la console Rails. (ad esempio, se aggiungo #site-feedback all’impostazione admin categorie predefinite che seguono aggiungerà un record in category_users per ogni utente, e quando reimposto l’impostazione eliminerà nuovamente quei record).
Posso confermare che User.all.each do |user| CategoryUser.batch_set(user, :watching, [22]) ha modificato le preferenze di tracciamento di tutti gli utenti per seguire la categoria desiderata (22 | Annunci); poiché questa query elenca tutti gli utenti:
SELECT *
FROM category_users
WHERE category_id = '22' AND notification_level = '3'
E questa query elenca solo 1 utente:
SELECT *
FROM user_options uo
WHERE uo.email_level = '2'
La domanda ora è: perché così tanti utenti non ricevono un’email quando c’è un nuovo post nella categoria 22 “Annunci”
P.S. Sto armeggiando con le query SQL e non so come unirle.
Ciao. Non ho ancora trovato una soluzione. Non riesco a capire le preferenze utente necessarie per ricevere e-mail di notifica dei post per gli argomenti monitorati. Qualche idea? Grazie!
Nel caso, sto ancora indagando e cercando di risolvere questo problema. Ho isolato le impostazioni di uno dei nostri utenti che ha le impostazioni predefinite per seguire una determinata categoria (‘Announcements’) ma che non riceve notifiche via email per nuovi post:
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
Non riesco proprio a capire perché questo problema si verifichi, dato che questa è la riga dell’utente quando interrogo gli utenti che seguono la categoria ‘Announcements’:
id
category
user
notification_level
last_seen_at
123
Announcements
JohnDoe
3
NULL
Ci sono altre impostazioni che mi sfuggono? Potrebbe essere che l’utente abbia cliccato su “unsubscribe” in una delle email di notifica e ciò abbia modificato le sue impostazioni email?
Fare clic sul link “annulla iscrizione” da un’email di notifica porta l’utente a una pagina in cui può modificare le proprie preferenze di notifica. Ad esempio:
Se un utente ha selezionato una delle opzioni “smetti di seguire tutti gli argomenti nella categoria <category_name>” o “Non inviarmi alcuna email da Discourse”, vedrai le modifiche nella loro pagina delle preferenze. O la categoria sarà stata rimossa dal loro elenco di categorie seguite, o le loro preferenze email saranno state modificate in modo che tutte le impostazioni nella loro pagina email siano impostate su “mai”.
È più difficile vedere la modifica se l’utente ha selezionato l’opzione “smetti di seguire questo argomento”. In tal caso, potresti impersonare l’utente dalla loro pagina di amministrazione, quindi visitare l’argomento per vedere se il suo livello di notifica per l’argomento è cambiato da “seguendo” a “tracciando”. Puoi anche ottenere informazioni sul suo livello di notifica per l’argomento dalla console Rails:
Prima di farti coinvolgere troppo in questo, vai alla pagina dei log delle email saltate del sito. Puoi accedervi dal pannello laterale di amministrazione. Inserisci l’email dell’utente nel campo “Indirizzo To” in alto nella pagina. Potrebbe mostrarti i dettagli sul motivo per cui l’email specifica non è stata inviata all’utente.
Ho controllato la sezione delle email saltate. Ci sono solo i casi “L’utente è stato visto di recente”, “Notifiche della mailing list disabilitate per i post dell’utente” e “Superata la soglia di bounce_score”.
Mi stavo chiedendo se ci fosse la possibilità di modificare le impostazioni per tutti gli utenti in uno dei seguenti modi:
Modificare l’impostazione di tutti gli utenti “come se” si fossero appena iscritti.
oppure: Creo un nuovo utente di test e utilizzo queste impostazioni per copiarle a tutti gli altri utenti esistenti.
C’è l’impostazione del sito “categorie predefinite monitorate”. Se la modifichi, ti verrà data la possibilità di applicare le modifiche storicamente. Selezionando tale opzione verranno aggiornate le preferenze per tutti gli utenti eccetto gli utenti che hanno esplicitamente configurato la loro preferenza per quella categoria nella loro pagina delle preferenze. Penso che questo sia il problema che stai cercando di aggirare. Potresti probabilmente gestirlo dalla console Rails, ma probabilmente eviterei quell’approccio.
Potresti semplicemente creare una nuova categoria per gli annunci e aggiungere quella categoria all’impostazione del sito “categorie predefinite monitorate” del tuo sito. Potresti quindi riordinare il sito spostando gli argomenti dalla vecchia categoria degli annunci alla nuova. Se vuoi mantenere il nome della categoria “annunci”, inizia rinominando la categoria originale “annunci” in qualcos’altro. Mi rendo conto che questo è un po’ un hack, ma è un modo per risolvere il problema senza toccare la console Rails.