Questa query restituisce tutti gli utenti (incluse le loro email) che inviano un PM / email a una casella di posta di gruppo, escludendo i membri del gruppo.
Il caso d’uso è un modo a basso attrito per consentire alle persone a un evento fisico di creare un utente di staging per il mio sito.
Ho scoperto che a un evento dal vivo, molti potenziali utenti hanno difficoltà a completare il processo di registrazione (che include la digitazione del loro indirizzo email (correttamente), la scelta del nome utente e la generazione della password come minimo. Richiede anche la convalida dell’email e il successivo accesso. Questa è una grande richiesta quando si è in piedi a chiacchierare con le persone / ascoltare un relatore / mangiare / ecc.!
Questo può essere ridotto un po’ con OAuth2, ma c’è ancora del lavoro da fare e anche i meno esperti di tecnologia sembrano avere difficoltà con esso.
La mia soluzione
-
Creare un gruppo semi-privato con un indirizzo email accattivante (ad esempio, join@mycommunity.url)
-
Presentare un codice QR che codifica un link mailto: a quell’indirizzo
-
Mettere le brave persone che gestiranno la successiva adesione di queste persone al gruppo
-
Aggiungere la seguente query a Data Explorer e concedere l’accesso al gruppo:
-- [params]
-- string :group_name
WITH group_members AS (
SELECT gu.user_id
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
WHERE g.name = :group_name
),
non_group_users AS (
SELECT u.id, u.username, ue.email, u.created_at
FROM users u
JOIN user_emails ue ON ue.user_id = u.id
WHERE NOT EXISTS (
SELECT 1
FROM group_members gm
WHERE u.id = gm.user_id
) AND ue.primary = TRUE
),
group_messages AS (
SELECT tg.topic_id
FROM topic_allowed_groups tg
JOIN groups g ON g.id = tg.group_id
WHERE g.name = :group_name
),
group_message_participants AS (
SELECT gm.topic_id, tau.user_id AS tau_user_id FROM group_messages gm
JOIN topic_allowed_users tau ON tau.topic_id = gm.topic_id
JOIN non_group_users ngu ON ngu.id = tau.user_id
)
SELECT ngu.username, ngu.email, ngu.created_at FROM group_message_participants gmp
JOIN non_group_users ngu ON ngu.id = gmp.tau_user_id
GROUP BY ngu.username, ngu.email, ngu.created_at
ORDER BY ngu.username
C’è un po’ di lavoro da fare in seguito, ma almeno catturi i loro indirizzi email in modo affidabile in un modo che richiede solo due o tre clic / tocchi dell’utente!