API 経由でのパスワードなしユーザー作成

私は、ヘルプデスク(YouTrack)から Discourse へサポートフォーラムを移行しています。
API を使用して以下の処理を行いたいと考えています。

  1. YouTrack からユーザー(名前、ユーザー名、メールアドレス)を取得し、Discourse 上で同様のユーザーを作成する。パスワードは設定しないこと。
  2. これらのユーザー全員に、同じユーザー名とメールアドレスを使用して Discourse へのサインアップ招待を送信する(新しいパスワードを作成してもらうため)。
  3. YouTrack から特定のトピック、添付ファイル、コメントを取得し、Discourse 上で同様に作成する。
    そのためには、トピックやコメントの著者として設定できるように、同じユーザーが Discourse 上に存在している必要があります。これは、招待を受けた後にユーザーが Discourse にサインアップしたかどうかに関わらず、必ず行う必要があります。

課題:
a) API ドキュメントによると、ユーザー作成時に「password」フィールドが必須となっています。これを回避する方法はありますか?
b) API を介して作成されたユーザー(既にその名前でトピックがいくつか存在しているが、確認もパスワード設定もされていない状態)のステータスはどのようにすべきでしょうか?

API ではなく、インポートスクリプトを使用してユーザー、カテゴリ、トピック、投稿を作成することをお勧めします。

すべてのユーザーに個別にメールを送る最適な方法については確信が持てませんが、インポートスクリプトでユーザーを有効化し、要約メールを受信できるようにする一つの方法があります。その要約メールには、新しいフォーラムへのアクセス方法に関する手順を含めることができます。

そのようなスクリプトはどのように動作するのでしょうか?直接データベースと連携するのですか?

scripts/import にあるインポートスクリプトをご覧ください。

あなたのこのスクリプトを使ってみました。https://github.com/pfaffman/discourse-user-creator 確かに機能しているようですが、エラーメッセージが出続けています:

 ./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 から取得しました。とにかく、今の目標は、利用可能なあらゆるツールを使って解決策を見つけることです。それでも、ご提案とご支援をいただき、ありがとうございます!

ふむ、もしかしてその API が変更されたのかもしれません。今ではグループ名を受け取るようになったと思います。何か見つけたら、プルリクエストを提出してくださっても構いません。

これについて詳しく確認する前に、やらなければならないことがたくさんあります。

いいえ。ID の代わりにグループ名を使用すると、
{"status":404,"error":"Not Found"}
というエラーが返されます。

また奇妙なことに、エラーメッセージは user test6 created. . . Adding to group の後に表示されるものの、実際にはユーザーが作成されていません。

ふむ。確かに、このスクリプトは API のユーザー名とキーを URL に含めるのではなく、ヘッダーで送信するように更新する必要があります。2 年前には動いていたと確信していますが、当時の私よりも経験が 2 年少ない人が書いたようです :wink:

ユーザーが実際に作成されたかどうかを確認するエラーチェックが全くないので、私が手掛けるならそこは修正します。

グループが何も存在しない場合、ユーザーをグループに追加しようとする処理をスキップするようです。

こんにちは、Dmitry (@dm.linov) さん!

Confluence、YouTrack、Discourse 間を移動する方法について検索していたところ、このトピックを見つけました。

YouTrack から Discourse への移行について、主なポイントを共有していただけますか?その理由はコスト、パフォーマンス、検索の問題などでしょうか?

イワンさん、こんにちは。

ご指摘の2点とも事実です。私たちは、世界中の誰もが自社の素晴らしさを確認できるよう、オープンなフォーラムでお客様をサポートしたかったのです :slight_smile: その点において、YouTrackはいくつかの理由から適したツールではありませんでした。その理由の一つに、ユーザー数に応じた課金モデルがあることも挙げられます。

現在の構成は以下の通りです。

  • サポート、機能リクエスト、ディスカッションには Discourse を使用。ウェブサイトの「お問い合わせ」フォームからの問い合わせも Discourse 上で自動的に新しいトピックとして作成され、「ステージング」ユーザーも API を通じて自動生成されます。
  • 開発タスク、バグ、その他の課題の管理には YouTrack を使用。
  • 一般的なドキュメントには Confluence を使用。特定のユースケースを説明する一部の記事は、Discourse にも手動で公開されています。

また、Discourse を社内ブログとしても活用しようと試みましたが、後に Hashnode の方が好ましいと判断しました。

ドミトリー、ありがとうございます。この経験は私たちにとって役立つでしょう。

現在、Confluence からのドキュメント移行を検討しています。Confluence は検索機能が弱く、費用も高いためです。YouTrack には Markdown をサポートするナレッジベース機能があり、インポートも簡単で、検索機能も許容範囲です。YouTrack は当社のバグトラッキングシステムであり、引き続き使用します。

もし YouTrack のナレッジベースが生産環境で遅いことを確認できれば、使用を見送ることも検討できます。

Discourse は第3段階のサポートシステムとして利用されています。主な機能は、顧客の解決策の保存とベストプラクティスの共有です。残念ながら、Discourse を顧客向けに利用するのは困難です。顧客サポートチームがサービスデスクを使用しているためです。また、顧客ごとに数百のプライベートカテゴリを作成するのは非常に困難です。

とにかく、Discourse は全体的に素晴らしいです :slight_smile:

私の知る限り、私たちはこれまでYTナレッジベースを使用したことがないため、それについてお話しすることはできません。

Confluenceについては、現在代替手段を探していますが、急いではいません :slight_smile:

Discourse for teams をご覧になりましたか?

@blake まだですが、確認いたします。ありがとうございます!

Discourse for TeamsGoogle Currents の併用を検討してみるのも良いかもしれません。 :speech_balloon: