Опыт пользователей для импортированных аккаунтов?

Я рассматриваю возможность импорта примерно 600 адресов электронной почты из рассылки в Discourse. Цель — автоматически настроить всем пользователям наблюдение за категорией Announcements, которая будет выполнять основную функцию рассылки.

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

Меня меньше всего беспокоит пользовательский опыт для импортированных пользователей. У каждого из них будет учётная запись, но, полагаю, они не смогут войти в систему, пока не установят пароль. При первом посещении сайта Discourse предложит им это сделать. Верно?

А что, если они никогда не установят пароль? (Большинство даже не осознают, что у них уже есть учётные записи в Mailman, поэтому возникло сопротивление идее создания ещё одной учётной записи. Вздох.) Если кто-то никогда не зайдёт на сайт и не войдёт в систему, будут ли они всё равно получать письма по темам и постам в категории Announcements?

Для тех, кто уже делал подобное: с какими проблемами поддержки вам пришлось столкнуться после импорта?

Спасибо!

Если у вас уже есть транзакционные отношения с этими пользователями, то есть вы переносите их на новую платформу, существуют способы упростить процесс создания учётных записей. Это решение для более опытных администраторов, но вот несколько идей для командной строки (rails console), которые могут сработать:

u = User.new({username: 'testuser', email: 'testuser@example.com', name: 'Test User', trust_level: 2, password: SecureRandom.hex});
u.activate();
t = u.email_tokens.create(email: u.email);
Jobs.enqueue(:critical_user_email, type: :account_created, user_id: u.id, email_token: t.token);

По моему опыту, это создаст нового пользователя с указанными вами данными, активирует его учётную запись, чтобы он мог получать письма, а затем отправит ему уведомление о том, что для него создана учётная запись на вашем сайте Discourse, и предоставит ссылку для настройки аккаунта:

Для вас была создана новая учётная запись на сайте Your Discourse Site Name

Нажмите на следующую ссылку, чтобы задать пароль для вашей новой учётной записи:
https://discourse.example.org/u/password-reset/(randomdigits)

Вам также необходимо настроить категорию «Объявления» так, чтобы все новые пользователи автоматически подписывались на неё. Это делается через настройки сайта.

Спасибо! Это кажется относительно простым (и да, все это пользователи из списка, которым я управляю и который пытаюсь перевести с Mailman).

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

В этом вопросе здесь есть люди умнее меня, но я думаю, что поскольку вы выполняете команду u.activate();, они уже полностью активированы, и единственное, что они делают через письмо, — это меняют пароль с начальной случайной строки, которую никто не знает.

Существует представление, что неактивные пользователи со временем перестают получать письма, но я не уверен, применимо ли это здесь для категорий с «авто-подпиской». Я рассматривал это только в контексте получателей дайджестов/сводок. Надеюсь, кто-то другой сможет добавить что-то к этому ответу.

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

:man_shrugging:

Я бы просто протестировал это с помощью временного адреса, чтобы узнать.

Я боялся, что вы так скажете. Подход с консолью Rails оказался значительно сложнее моих административных возможностей (Rails даже не был установлен на нашем VPS, и я не понимал, как вообще импортировать 600 адресов таким способом), поэтому мне приходится привлекать нашего разработчика. Я попрошу его проверить.

Вы можете получить доступ к консоли Rails на вашем собственном хостинге Discourse следующим образом:

ssh ....
cd /var/discourse
./launcher enter app
rails c

Спасибо! Мне пришлось добавить sudo su перед третьей строкой, чтобы получить права на подключение к демону Docker, но после этого всё заработало, и я смог выполнить строки из скрипта Rails выше и создать тестового пользователя. Ура!

Но как этот скрипт можно расширить для работы со списком из 600 адресов электронной почты? Запускать его 600 раз кажется… утомительным. :slight_smile:

Вы создадите скрипт, который либо включит эту строку для 600 пользователей, либо поместит данные в структуру данных и выполнит цикл по ним.

Так как у нас здесь никто не имел опыта работы с Ruby, мы решили создать большой файл со всеми командами и вставить их в консоль Rails. Похоже, это сработало, но теперь в Sidekiq обнаружено четыре ошибки (из первых 50 импортированных записей), и я не знаю, что с ними делать или что они означают. Были ли созданы пользователи? Или они просто не получили приветственное письмо? Поскольку повторные попытки не удаются, стоит ли мне просто удалить эти ошибки и продолжить?

Вам стоит это выяснить.

Мне трудно представить, как идентификатор пользователя (user_id) может оказаться недействительным.

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

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

Мне об этом сообщили лишь значительно позже, поэтому вернуться назад уже не удалось. Возможно, эти ошибки возникают, когда импортируемый адрес электронной почты уже существует в системе — я могу это проверить. Все пользователи, которых я ожидал создать, были созданы.

Однако я не могу понять, есть ли какая-либо связь между информацией на этом скриншоте и данными, которые можно найти в Discourse. Можно ли связать email_tokens с какой-либо другой информацией?

Похоже, мне придётся продолжать работать небольшими партиями и посмотреть, удастся ли привязать ошибку к одному из этих сообщений.

Оказалось, что эти ошибки возникали каждый раз при сбое импорта: например, если имя пользователя содержало более 20 символов, если в имени пользователя шли подряд два специальных символа или, возможно, если email уже был занят (по этому пункту я наблюдал непоследовательные результаты). Я просто исправлял каждую проблему и продолжал работу, а в конце удалил все ошибки из Sidekiq.