Discourse as an LMS / Discourse integration with an LMS

もちろんです、ご関心をお寄せいただきありがとうございます。

現在、自己成長を目指す大学生が集まるコミュニティがあります。ここでは、主に科学と哲学に関するモジュール、週次のミーティングを開催し、参加者にプレゼンテーションを奨励しています。また、このコミュニティのためにフォーラムを開設し、人々がより快適かつ長期的に議論やチャットができるようにしました。現在はコミュニティ限定ですが、将来的にはインターネット全体に公開する予定です。

現在、日々の読書、プレゼンテーションの詳細、ミーティングの詳細などの情報フローのほとんどはWhatsAppで行われています。フォーラムを利用する参加者の割合はまだ低いです。より機能的な運営を確立すると同時に、WhatsAppで行っていることをフォーラムに移管することで、より多くの人々がフォーラムに参加するようにしたいと考えています。

  1. モバイルフォンでプログレッシブウェブアプリとして使用する場合、ユーザーに通知を送信する方法はありますか?
  2. 参加者が日々の読書を行ったかどうかを確認し、報酬を与えたりリマインダーを送ったりするシステムを作成できますか?(ChatGPTに尋ねたところ、Discourseの自動化プラグインで新しいシナリオを作成すれば可能だと言われましたが、新しいシナリオを作成するオプションがありません。)
  3. モジュールでの週次のミーティング出席に基づいて、参加者に卒業証書を授与する認定システムを作成できますか?

これらは私が数日間探していた機能です。同様のシステムで機能的だと思う機能があれば、ぜひ教えてください。

「いいね!」 2

課題にバッジシステムを使用していました。生徒は課題のタグ付きトピックを作成し、私がそれを :heart: すると、バッジ(バッジSQL付き)が付与されます。学校のLMSからCSVファイルを読み込み、学校のLMSに再度アップロードできるように更新するスクリプトを作成しました。

「いいね!」 6

はい、PWAについては絶対に賛成です。

これについて詳しく教えていただけますか?管理ダッシュボードから新しい自動化を追加しようとしましたか?

そして、Jayが言うように、バッジはこの目的のために良い方法です。

「いいね!」 3

もう一度確認したところ、Discourseの設定で通知を有効にする必要があることがわかりました。ありがとうございます。

ChatGPTに少し誤解させられましたが、今は理解できました。しかし、ChatGPTが教えてくれた方法は機能しないようです。

回答ありがとうございます。

先ほども申し上げましたが、BadgeSQLを使用して、毎日の読書投稿に絵文字を残したユーザーに報酬を与えるシステムを作成できますか?バッジを付与することでこれを実現できますか?リーダーボードシステムにはより大きな労力が必要ですか?また、BadgeSQLのガイドや開始点を提供していただければ、大変嬉しく思います。

「いいね!」 1

はい。

リーダーボードプラグインは私がこれを行ったときには存在せず、それについてはあまり(何も?)行っていません。

https://meta.discourse.org/tag/sql-triggered-badge

バッジ機能がうまくいけば、SQL に関連付けられたバッジを自動的に作成するプラグイン(または API を呼び出すもの?)が良いアイデアでしょう。

毎日行う場合、バッジ SQL が昨日に対してバッジを付与する方法があるかもしれません。または、複数回付与できる単一のバッジを用意し、絵文字を投稿した毎日バッジを付与することもできます。

「いいね!」 2

このスレッドの多くの方と同様に、Discourse をネイティブの LMS として軽量に利用する方法を探していました。専用 LMS プラットフォームは機能過多すぎると感じていましたが、Discourse のデフォルトの「通知の減衰」(古いトピックが新規ユーザーに対して「未読」として表示されなくなる仕組み)のため、学習の進捗を追跡するのが難しいのです。

自分の課題を解決するために、カテゴリ設定、小さなバックエンドプラグイン、そしてテーマコンポーネントを組み合わせたシンプルなソリューションを構築しました。

以下に、私の設定方法と、それを再現するためのオープンソースコードを紹介します!

基本概念:Discourse を LMS として活用

これを機能させるために、標準的な Discourse の機能と、公式の Discourse Doc Categories プラグイン を組み合わせています。

  • コース = カテゴリ: 各コースに独自のカテゴリを割り当てます。
  • レッスン = トピック: 各レッスンは、そのカテゴリ内のトピックとなります。
  • 権限: メンバーはレッスンへの返信(質問など)はできますが、新しいトピックを作成できるのはスタッフのみです。
  • 順序付け: レッスンの順序は作成日で固定されます。(ヒント:レッスンを投稿する際に少し先を見据える必要があります。あるいは、Rails コンソールを使ってトピックの作成時間を遡らせて、正しい順序に強制することもできます)。
  • シラバス: 「インデックストピック」を指定するために Discourse Doc Categories プラグインを使用します。このインデックストピックはコースのシラバス/進捗トラッカーとして機能し、ユーザーがコースにアクセスした際にサイドバーに美しい目次を表示します。

不足している要素:真の進捗追跡

上記の設定の問題点は、新しい学生が参加した際、古いレッスントピックが「未読」として表示されないため、視覚的に進捗を追跡する方法がないことです。

これを解決するために、真の過去の既読ステータスを取得するために TopicUser データベーステーブルを直接クエリするバックエンドプラグインと、Discourse の標準サイドバーをリアルタイムの LMS 進捗トラッカーに変換するフロントエンドのテーマコンポーネントを構築しました。

1. メインサイドバーの進捗バッジ

このテーマコンポーネントは、標準的な青い通知ドットを、コースカテゴリ向けの [ 既読 / 総数 ] という進捗インジケーターに置き換えます。

2. レッスンの完了チェックマーク

ユーザーがコースをクリックすると、Docs プラグインがシラバスを表示します。私のテーマコンポーネントは、ユーザーが読み終えた特定のレッスンの隣に、成功を示すチェックマーク(fa-check)を挿入します。

3. コースの完了

ユーザーがカテゴリ内のすべてのトピックを読み終えると、サイドバーの進捗バッジが自動的に、満足感のある完了マーク(チェック)に変わります!

インストール方法

これは標準的な Discourse の通知キャッシュをバイパスする必要があるため、バックエンドプラグインとフロントエンドのテーマコンポーネントの両方をインストールする必要があります

ステップ 1:前提条件のインストール
公式の Discourse Doc Categories プラグインがインストールされ、有効になっていることを確認してください。私のプラグインは、インデックストピックが設定されているカテゴリのみを対象としています。

ステップ 2:バックエンド API プラグインのインストール
docker_manager の下に app.yml に以下を追加し、コンテナを再構築してください。これにより、既読ステータスのための超高速 API エンドポイントが提供されます。
:hammer_and_wrench: リポジトリリンク: https://github.com/zsviczian/discourse-course-progress

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/zsviczian/discourse-course-progress.git

ステップ 3:UI テーマコンポーネントのインストール
Web ブラウザから直接 管理 > カスタマイズ > テーマ > インストール > Git リポジトリから でインストールしてください。
:hammer_and_wrench: リポジトリリンク: https://github.com/zsviczian/discourse-course-progress-theme

これが、別個の LMS プラットフォームの機能過多なしに、コミュニティ主導のコースを構築しようとしている他の方々の役に立てば幸いです!実際に利用された場合は、お知らせください。

「いいね!」 3

フロントエンドのテーマコンポーネントのコードをプラグインに含めず、2 つの別々のものにしたのには理由があるのでしょうか?

ただ、コードを少し拝見しましたが、予想よりもはるかに簡単に実装できることがわかりました。素晴らしいですね!

「いいね!」 1

コース追跡の見た目の印象を好みに応じて変えたい人もいるかもしれないと考え、私の好みを他者に押し付けたくありませんでした。

テーマコンポーネントには、私のニーズには合っているが、他の人々には必ずしも合わない色、バッジ、および特定の要素が含まれています。

このプラグインは、Discourse のドキュメントで不足している小さな機能を実装するものです。それを中心に独自のテーマコンポーネントを構築し、私の実装を例やインスピレーションとしてのみ利用することもできます。

このソリューションを使い始めてからたった1日ですが、すでにコース全体の学生の進捗状況を確認するためのデータエクスプローラーのグラフを追加し、その上にカスタマイズを加えたいと考えています。実際にしばらく使用してから、それをプラグインに追加するかもしれません。

「いいね!」 1

管理者の場合、UI でトピックのタイムスタンプを変更できます。
「トピックアクション」メニューにあります。
残念ながら、トピック全体に対してのみ機能し、個別の投稿に対しては実行できません。

「いいね!」 1