このクエリは、グループのメンバーを除き、グループのメールボックスにPM /メールを送信したすべてのユーザー(メールアドレスを含む)を返します。
ユースケースは、物理的なイベントで、私のサイトのステージングユーザーを作成するための低摩擦の方法を有効にすることです。
対面イベントでは、多くの潜在的なユーザーがサインアッププロセス(少なくともメールアドレス(正しく)入力、ユーザー名選択、パスワード生成を含む)を完了するのに苦労することを発見しました。また、メールの検証とそれに続くサインインも必要です。これは、人々とチャットしたり、スピーカーを聞いたり、食べ物を食べたりしながら立っている場合には大きな要求です!
これはOAuth2である程度軽減できますが、まだやるべきことがいくつかあり、技術的にあまり詳しくない人も苦労しているようです。
私の解決策
-
キャッチーなメールアドレス(例:join@mycommunity.url)を持つセミプライベートグループを作成します。
-
そのアドレスへのmailto:リンクをエンコードしたQRコードを表示します。
-
これらの人々をグループに参加させることを管理する善意の人々を配置します。
-
Data Explorerに次のクエリを追加し、グループにアクセス権を付与します。
-- [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
その後、いくらかのフォローアップが必要ですが、少なくともユーザーが2〜3回のクリック/タッチでキャプチャできる方法で、メールアドレスを確実にキャプチャできます!