オンラインコース向けのDiscourseの構成方法は?

@dax 2020 年現在でも、トピック内の投稿を投稿者のグループのユーザーに限定することはできませんか?

オンライン学習システムで Discourse を利用したいと考えています。複数のコホート(グループ)のユーザーが、それぞれのグループ内の投稿のみを閲覧できるように、7 つ程度のトピックを共通して利用したいと考えています。新しいコホートごとに同じトピックを繰り返し作成するのではなく、1 つのトピックセットで運用したいのです。

もしかすると、その間にこの機能を可能にする新しい機能が登場したかもしれません。ご意見をお聞かせください。

「いいね!」 2

申し訳ありませんが、ご質問の内容が不明確で、関連性がなさそうです。

カテゴリを作成し、グループを使ってカテゴリを制限することができます。

@HappyGezim 様が求めているのは、トピック内でのカスタム「ささやき」機能ですが、これは現在ロードマップに含まれておりません。

@sam お早いご返信ありがとうございます!私たちの具体的なシナリオを明確にさせていただきます。

  • 提供している4つのコースに合わせて、4つのカテゴリを設定しています。

  • 各カテゴリ(コース)には、約5〜10件のトピックがあります。これらはコース内の各「レッスン」に対応しており、「技術的な質問」や「自己紹介」などの追加トピックもいくつか含まれています。各レッスンが進むにつれて、学生は関連するトピックに投稿をするように依頼されます。

  • 多数の学生 Cohort がこれらのコースを順次進めていく予定ですので、各トピックへの投稿を、その Cohort に所属する「グループ」に限定したいと考えています。これにより、カテゴリとトピックは固定したまま、ユーザーのプロパティを変更して異なるグループに割り当てるだけで対応できます。このグループは API を通じて作成し、学生を動的に割り当てることも可能でしょうか?

以上が、私が最初に挙げた「特定のトピック内で、特定のグループに属するユーザーにのみ表示されるメッセージを作成することは可能か?」という質問に至った背景です。

「いいね!」 1

ダニエル、私も Discourse を通じて運営しているコースがあります。最も制限をかけやすいよう、カテゴリとサブカテゴリを利用しています。

カテゴリ:Acme コース
サブカテゴリ:2020-05 - コースディスカッション

特定の cohort に所属する学生は、1 つのサブカテゴリのみを表示できます。

完璧ではありませんが、機能しています!

「いいね!」 2

@waffleslop 素晴らしいですね。ありがとうございます。新しいコホートがあるたびに、そのサブカテゴリを手動で作成しているのでしょうか(あるいは API を通じてですか)?

私はそれを避けたいと思っていたのです。なぜなら、各コホートごとに、サブカテゴリ内に同じ5〜10の新しいトピックを設定する必要があるからです。また、コースの1つの実行期間中に複数のコホートが同時に進行する可能性もあるため、名前付けにおいて工夫が必要になるかもしれません。そこで、あなたの例を踏まえて考えると…
2020-05-cohort-A Course Conversations
…あるいは、サブサブサブカテゴリを作成する方法があるかもしれません。まだ調べていませんが。

また、ご意見をお聞かせいただきありがとうございます。

「いいね!」 3

それらのカテゴリーを「読み取り専用」に設定してください。

新しいコホートが入ってくるたびに、そのコホート用の新しいカテゴリーを作成してください。学生には :link: アイコンをクリックし、「新しいトピック」を選択して、そのコホートのカテゴリー内に課題用の新しいトピックを作成させます。私は各課題に「課題」タグを付けて、誰がいつ課題を完了したかを追跡しやすくしました(また、私がそのトピックに「いいね」をした場合に授与されるバッジも作成し、さらにすべての学生に対してこれを自動で行うスクリプトも作成しました。その後、CSV ファイルを作成して、私が使用したくなかった大学の LMS にアップロードしました)。

「いいね!」 3

@pfaffman ご意見ありがとうございます。

当初は、サブカテゴリを使ってコースの下にコホート(同期生グループ)を整理しようと考えていました。しかし、サブカテゴリを作成する際に UI で以下のメッセージが表示されているのを見つけました。

つまり、サブカテゴリを使ってコースの下にコホートをグループ化し、グループ権限でそのサブカテゴリにアクセスを制限することはできない、ということでしょうか? @waffleslop さんは、あなたのアプローチでサブカテゴリによる制限を実現できましたか?もしかすると、この UI メッセージの解釈を間違えているのかもしれません。

サブカテゴリをグループに制限できないのであれば、@pfaffman さん、ご説明いただいたように、各コホートごとに新しいカテゴリを作成するアプローチが、おそらく唯一の選択肢になると思います。

各コースに含まれる 10 ほどのトピックは、名称や番号付けなどが比較的固定されているため、システム上で新しいコホートが作成されるたびに、API を通じてそれらを作成しようと考えています。具体的には、LMS で新しいコホートを作成するたびに、API を使って以下の処理を行います:

  • そのコホート用の新しいカテゴリを Discourse に作成
  • そのカテゴリへのアクセス権を持つ新しいグループを Discourse に作成
  • 新しいカテゴリに正しい 10 ほどのトピックを作成
  • LMS で学生がコホートに追加されたら、Discourse の該当グループにも追加(退会した場合は削除)

学生自身にトピックを作成させるのではなく、このアプローチを試されたことはありますか?同じ課題に対して、学生によってトピック名が微妙に異なるものが作成されてしまう懸念があります。

また、「読み取り専用カテゴリ」をこの問題の一面に活用するというご提案については、まだ理解が追いついておりません。

ご自身の考えを丁寧にまとめていただき、本当にありがとうございます!

「いいね!」 2

以下の形式です:

カテゴリ:Acme コース
グループ:2020-01_cohort、2020-05_cohort

サブカテゴリ:

  • 2020-01 - コースの会話(グループ:2020-01_cohort)
  • 2020-05 - コースの会話(グループ:2020-05_cohort)
「いいね!」 3

なるほど。@waffleslop さん、ありがとうございます。つまり、サブカテゴリをグループに制限することで、他のサブカテゴリへのアクセスを禁止できる、ということですね。私が先ほどコピーした UI メッセージを誤解していたようです。 :zipper_mouth_face:

したがって、私たちのアプローチはおそらく API を使って以下を行うことです:

  • 各コホートごとに Discourse に新しいサブカテゴリを作成する
  • そのサブカテゴリ(および上記の UI メッセージに従い、親カテゴリ)へのアクセス権を持つ新しいグループを Discourse に作成する
  • 新しいサブカテゴリに適切な 10 個ほどのトピックを作成する
  • LMS で学生がコホートに追加されるたびに、Discourse の適切なグループに追加する(退会した場合は削除する)
「いいね!」 2

親カテゴリは読み取り専用で、サブカテゴリは特定のグループにのみ制限できると思います。

可能です。ただし、この方法では、指示付きの読み取り専用カテゴリを一度だけ作成(および管理。最初に完璧に作らない限り)する必要があります。コホートを作成する際は、サブカテゴリを1つだけ作成すれば済みます。

私がタグを使ったのはそのためだと思います。トピックに課題用のタグを付与すれば、トピックの内容は説明的であっても問題ありません。もし不適切な名前を選んでも害はありません。

「いいね!」 4

上記のアプローチ(各コースの「コホート」ごとにサブカテゴリを作成し、議論トピックをそれぞれに繰り返す方法)を採用する場合は、「重複するトピックタイトルを許可する」設定を有効にしてください。そうしないと、Discourse は各サブカテゴリで同じトピックを繰り返すことを許可しません。

「いいね!」 2

これが、コンテンツを含む読み取り専用カテゴリを一つだけ設け、学生がそのコンテンツについてコhort固有のカテゴリで新しいトピックを使って議論する、という私の解決策を気に入っている理由の一つです。

「いいね!」 4

こんにちは、@Daniel_McQuillen さん。
あなたのコースの進捗状況が気になっていました。私は複数のクラスを持つ3つのコースを運営しようと考えており、これまでのあなたの経験について知りたいと思いました。

また、コースやディスカッションへのアクセスを期限切れにする予定はありますか?

共有いただき、事前にありがとうございます。ハンター

「いいね!」 4

こんにちは、ハンターさん。

現在はベータ版ですが、Discourse との統合は順調に進んでいます。当サイトでは SSO 統合を使用して強制的にログインを要求しています。これは問題なく機能していますが、以下の点にご注意ください。

  1. Discourse は「@」記号を含むユーザー名を受け付けません。「@」以前の部分のみがユーザー名として切り捨てられます。後でこのユーザー名を引数として Discourse API を呼び出す際に問題が発生する可能性があります。Discourse 側では、someone@example.com というユーザー名は認識されず、そのユーザーのユーザー名は「someone」として保存されます。これを回避する簡単な方法は、自サイトのユーザー名で「@」記号を禁止することです。

  2. 自サイトでユーザーが登録された場合、そのユーザーを Discourse サイトに初めて訪問する前に(自動的に SSO が同期される前に)何らかの処理(例えば、Discourse グループへの追加など)を行いたい場合は、Discourse API を明示的に呼び出して SSO ユーザーを同期する必要があります。私は Django ベースのサイトを使用しているため、pydiscourse ライブラリを利用しています。これには sync_sso メソッドがあり、これを非常に簡単に実行できます(Client Challenge

はい、一部のコースを期限切れにする予定です。その場合、サーバーは Discourse API を呼び出して、そのコースの一般グループおよびそのコース内のコホート専用のグループからユーザーを削除します。

私は Django サイトに、これらの「コース」グループと各コース内のさまざまな「コホート」グループを追跡するテーブルを作成しました。そのため、学生の追加や削除などを行う際に、その情報を利用しています。

「いいね!」 2