adamengst
(Adam C. Engst)
1
我正在考虑将邮件列表中的约 600 个电子邮件地址导入到 Discourse 中,目标是让所有用户自动设置为关注“公告”分类,该分类将主要用来替代邮件列表的核心功能。
据我了解,在导入过程中(我理解这涉及脚本,需要我的开发人员来执行),我们可以强制所有被导入的用户关注“公告”分类,这样他们就会收到每篇帖子的邮件通知(除非他们手动取消关注)。是这样吗?
对我来说不太清楚的是,被导入用户的用户体验会如何。他们每个人都会拥有一个账户,但我推测在他们设置密码之前无法登录,而首次访问网站时,Discourse 会提示他们设置密码。对吗?
如果他们从未设置密码怎么办?(大多数人尚未意识到他们现在拥有 Mailman 账户;因此对于需要再创建一个账户存在抵触情绪。唉。)如果某人从未访问过网站也从未登录,他们是否仍然会收到“公告”分类中主题和帖子的邮件通知?
对于有过类似导入经验的人,导入后你们遇到了哪些类型的支持问题?
谢谢!
1 个赞
downey
(Michael Downey)
2
如果您已经与这些用户建立了事务性关系(例如,您正在将他们迁移到一个新平台),那么有一些方法可以简化用户创建流程。这适用于更高级的管理员,但以下是一些可能有效的命令行(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 网站上为其创建了账户,并提供一个链接供他们设置账户:
您的 Discourse 站点名称已为您创建了新账户
点击以下链接为您的新账户设置密码:
https://discourse.example.org/u/password-reset/(随机数字)
您需要设置您的公告分类,使所有新用户自动关注该分类,这是一个站点设置。
3 个赞
adamengst
(Adam C. Engst)
3
谢谢!这看起来相对简单(是的,这些都是我管理的列表中的用户,我正在尝试将他们从 Mailman 迁移出去)。
您是否知道,如果他们从未设置账户,在接收“自动关注公告”类别的邮件方面会发生什么情况?
downey
(Michael Downey)
4
关于这个话题,这里比我更聪明的人大有人在。但我想,因为你运行了 u.activate(); 命令,他们应该已经完全激活了。通过邮件,他们唯一要做的就是将密码从初始的随机字符串(没人知道)改为自己的密码。
有一种说法是,不活跃的用户最终会停止接收邮件,但我不确定这是否适用于“自动关注”的类别。我主要是从摘要/汇总接收者的角度考虑过这个问题。希望有人能对此补充说明。
4 个赞
adamengst
(Adam C. Engst)
5
还有一个关于导入的快速问题。如果您尝试导入一个已分配给系统中用户的电子邮件地址,会发生什么情况?它会被直接跳过吗?
adamengst
(Adam C. Engst)
7
我担心你就是这样说的。Rails 控制台的方法远远超出了我的管理权限(我们的 VPS 上甚至没有安装 Rails,而且我也不清楚如何通过这种方式导入 600 个地址),所以我不得不请我们的开发人员来帮忙。我会让他检查一下。
riking
(Kane York)
8
您可以通过以下方式访问自托管的 Discourse 站点的 Rails 控制台:
ssh ....
cd /var/discourse
./launcher enter app
rails c
2 个赞
adamengst
(Adam C. Engst)
9
谢谢!我不得不在第三行前加上 sudo su 以获取连接 Docker 守护进程的权限,之后一切顺利,我成功执行了上述 Rails 脚本中的命令并创建了一个测试用户。太棒了!
不过,这个脚本如何扩展以处理 600 个电子邮件地址的列表呢?重复运行 600 次似乎……有点繁琐。
1 个赞
pfaffman
(Jay Pfaffman)
10
您可以生成一个脚本,其中包含针对 600 名用户的该行代码,或者将数据放入某个数据结构中并遍历它。
3 个赞
adamengst
(Adam C. Engst)
11
由于这里没有人有 Ruby 经验,我们选择创建一个包含所有命令的大文件,然后将其粘贴到 Rails 控制台中。看起来运行正常,但 Sidekiq 中现在有四个错误(在前 50 次测试导入中),我不知道该如何处理它们或它们代表什么。用户是否已创建?还是他们只是没有收到欢迎邮件?由于重试失败,我是否应该直接删除这些错误并继续?
pfaffman
(Jay Pfaffman)
12
这应该是你需要去弄清楚的事情。
我很难想象 user_id 怎么会无效。
大概是这样,但你需要找出哪些用户失败了以及原因。你在粘贴命令时是否出现了错误?如果你无法查明这一点,就需要查看已存在的用户和你预期应存在的用户,并找出其中的差异。
如果你没有简便的方法来回查看之前的内容,那么应该分更小的批次进行操作,以便更轻松地检查它们的进度。
3 个赞
adamengst
(Adam C. Engst)
13
我直到很久之后才收到相关通知,因此无法追溯。这些错误有可能是因为导入的电子邮件地址在系统中已存在——我可以测试一下。我预期创建的所有用户都已成功创建。
但我无法确定的是,这张截图中的信息与我在 Discourse 中能查询到的任何内容是否存在关联。email_tokens 是否能关联到其他任何信息?
看来我只能继续分批操作,看看能否将某个错误与这些消息中的某一条对应起来。
1 个赞
adamengst
(Adam C. Engst)
14
原来这些错误是在导入过程中每次出错时生成的,例如用户名超过 20 个字符、用户名中连续出现两个特殊字符,或者邮箱可能已被使用(我在这一项上看到了不一致的结果)。我只是逐个修复了这些问题,然后继续处理,最后删除了 Sidekiq 中的所有错误记录。
2 个赞