通过 API 创建无密码用户

我正在将支持论坛从帮助台系统(YouTrack)迁移到 Discourse。
我想通过 API 实现以下功能:

  1. 从 YouTrack 拉取用户(姓名、用户名、邮箱),并在 Discourse 中创建对应的用户。不为这些用户设置密码!
  2. 向所有这些用户发送邀请,让他们使用相同的用户名和邮箱在 Discourse 注册(以便他们创建新密码)。
  3. 从 YouTrack 拉取特定的主题、附件和评论,并在 Discourse 中创建相同的内容。
    为此,这些用户必须先在 Discourse 中存在,以便将他们设为主题和评论的作者。无论这些用户在收到邀请后是否已在 Discourse 注册,都必须完成此操作。

问题:
a) API 文档指出,创建用户时“password”字段为必填项。我该如何绕过这一限制?
b) 通过 API 创建的用户(已有一些以其名义发布的主题,但尚未确认,也未设置密码)应处于何种状态?

1 个赞

我会使用导入脚本而非 API 来创建用户、分类、主题和帖子。

我不太确定如何最好地向每一位用户发送邮件,但一种可行的方法是让导入脚本在创建用户时保持其激活状态,并允许他们接收摘要邮件。这样,摘要邮件中就可以包含访问新论坛的操作说明。

2 个赞

这样的脚本会如何工作?是直接与数据库交互吗?

请查看 scripts/import 目录下的导入脚本。

1 个赞

我尝试使用了你的这个脚本,看起来确实能解决问题,但一直收到错误信息:

 ./create-user 'Test User Four' me@[domain] test4 41 default
Creating user: test4 user test4 created. .  . Adding to group 41. . . {"errors":["You supplied invalid parameters to the request: usernames"],"error_type":"invalid_parameters"}

我不明白自己哪里做错了。另外,是否可以在这里不设置组和密码?

我不太确定,但看起来你使用了一个无效的组号,因此出现了错误?如果是添加用户的话,那似乎意味着它并没有预设组。:wink:

我想你可以修改脚本,使其不设置密码,但设置一个无人知晓的随机密码,其效果几乎等同于不设密码。

如果你需要定制且有预算,我今天晚些时候大概可以处理。

组号是正确的,我是从 /groups.json 中获取的。不过,我目前的目标是利用现有工具找到解决方案。尽管如此,还是要感谢你的提议和帮助!

1 个赞

嗯,也许那个 API 变了。我想它现在需要一个组名。如果你想到了什么方案,欢迎提交 PR。

在我能更仔细地查看这个问题之前,我还有很多事情要处理。

不。如果我使用组名称而不是 ID,会得到
{"status":404,"error":"Not Found"}

奇怪的是,尽管错误消息出现在 user test6 created. . . Adding to group 之后,但该用户实际上并未被创建。

嗯,这个脚本确实需要更新,改为在请求头中传递 API 用户和密钥,而不是放在 URL 中。虽然我相当确定它在两年前还能正常工作,但看起来它的作者当时的经验比我现在的少两年。:wink:

它没有进行任何错误检查来确认用户是否真的被创建,如果由我来修改,我会加入这部分逻辑。

看起来,如果你没有任何用户组,脚本会跳过将用户添加到组的步骤。

1 个赞

你好,Dmitry @dm.linov

我在搜索关于在 Confluence、YouTrack 和 Discourse 之间迁移的任何方法时,发现了这个主题。

您能否分享一下从 YouTrack 迁移到 Discourse 的主要要点?原因是成本、性能还是搜索问题?

你好,Ivan,

这两个原因都是成立的。我们希望在公开论坛上为客户提供支持,让全世界都能看到我们的卓越之处 :slight_smile: 而 YouTrack 并不适合作为此类平台,原因有很多,其中一点就是它按用户收费。

我们目前的设置如下:

  • Discourse 用于支持、功能请求和讨论。我们网站上的“联系我们”表单也会提交到这里(新主题和“临时”用户会通过 API 自动创建)
  • YouTrack 用于开发——任务、缺陷和其他问题
  • Confluence 用于一般文档。一些描述特定用例的文章也会手动发布到 Discourse 上

我们也曾尝试将 Discourse 用作公司博客,但后来更倾向于使用 Hashnode。

3 个赞

谢谢,德米特里。这次经历对我们很有用。

我们正计划将文档从 Confluence 迁移。Confluence 的搜索功能较弱,且费用昂贵。YouTrack 拥有支持 Markdown 的知识库功能,导入便捷,搜索功能也可接受。YouTrack 是我们的缺陷跟踪系统,我们将继续使用它。

如果您能确认 YouTrack 知识库在生产环境中运行缓慢,我们可以考虑不使用它。

Discourse 被用作三级支持系统。其主要功能是保存客户解决方案并分享最佳实践。遗憾的是,让客户使用 Discourse 存在困难。因为客户支持团队使用的是服务台系统。此外,为每位客户创建数百个私密分类也过于困难。

无论如何,Discourse 总体来说非常出色:slight_smile:。

1 个赞

据我所知,我们从未使用过 YT 知识库,因此我无法对此发表任何意见。

至于 Confluence,我们目前也在寻找替代方案 :slight_smile: 但并不急于求成。

3 个赞

您是否查看过 Discourse for teams

3 个赞

@blake 尚未,我会查看,谢谢!

1 个赞

值得考虑将 Discourse for TeamsGoogle Currents 结合使用。:speech_balloon:

2 个赞