Discourse 作为学习管理系统 / Discourse 与学习管理系统的集成

当然,感谢您的关注。

我们目前有一个社区,汇集了希望自我提升的大学年龄的年轻人。在这里,我们主要举办科学和哲学的模块、每周会议,并鼓励人们做演示。我还试图为这个社区开设一个论坛,以便人们可以进行更舒适、更长期的讨论和聊天。目前它是社区私有的,但我们计划将来将其开放给整个互联网。

目前,大部分信息流,如每日阅读、演示细节、会议细节等,都通过 WhatsApp 进行。使用论坛的参与者比例仍然很低。我们希望通过将我们在 WhatsApp 上进行的事情转移到论坛上来建立一个更有效的功能,并确保更多人进入论坛。

  1. 在用作手机上的渐进式 Web 应用时,是否有办法向人们发送通知?
  2. 我们能否创建一个系统,让我们可以检查参与者是否完成了每日阅读并奖励或提醒他们?(我问了 ChatGPT,它说可以通过创建 Discourse 自动化插件的新场景来完成,但没有创建新场景的选项)
  3. 我们能否创建一个认证系统,根据参与者在模块中的每周会议出勤情况授予他们文凭?

这些是我几天来一直在寻找的功能。如果您认为类似的系统中有实用的功能,我愿意听取您的意见。

2 个赞

我使用了一个徽章系统来布置作业。学生会创建一个带有作业标签的主题,如果我 :heart: 了它,他们就会获得一个徽章(带有徽章 SQL)。我编写了一个脚本,该脚本可以读取学校学习管理系统 (LMS) 的 CSV 文件并进行更新,以便可以将其重新上传到学校 LMS。

6 个赞

是的,绝对支持 PWA。

你能详细说明一下吗?您是否尝试通过管理仪表板添加新自动化?

正如 Jay 所说,徽章是做到这一点的好方法。

3 个赞

我刚又看了一下,我必须在 Discourse 设置中启用通知。谢谢。

ChatGPT 有点误导了我,我现在明白了,但它告诉我的方法似乎不起作用。

感谢您的回答。

正如我所说,我是否可以使用 BadgeSQL 来奖励那些在每日阅读帖子中留下表情符号的用户?我应该通过授予他们徽章来做到这一点吗,排行榜系统是否需要更大的努力?如果您能提供 BadgeSQL 的指南或起点,我将非常高兴。

1 个赞

可以。

在我做这件事的时候,排行榜插件还不存在,而且我对此(或者任何事情?)并没有做太多。

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

如果徽章对您有用,那么一个插件(或者也许是调用 API 的东西?)来自动化创建带有相关 SQL 的徽章将是一个好主意。

如果这是每日的,那么可能有某种方法可以让徽章 SQL 授予昨天的徽章;或者只有一个徽章可以多次授予,并每天授予一个徽章,只要他们在帖子中发布表情符号。

2 个赞

和这个帖子中的许多朋友一样,我一直在寻找一种轻量级的方法,将 Discourse 原生用作学习管理系统(LMS)。我发现专门的 LMS 平台过于臃肿,但 Discourse 默认的“通知衰减”机制(即旧话题对新用户不再显示为“未读”)使得跟踪课程进度变得困难。

为了解决我自己的痛点,我构建了一个简单的解决方案,结合了分类设置、一个小型后端插件和一个主题组件。

以下是我的设置方法,以及你可以用来复现的开源代码!

基本概念:将 Discourse 作为 LMS

为了实现这一目标,我结合了 Discourse 的标准功能和官方 Discourse Doc Categories 插件

  • 课程 = 分类:每个课程拥有独立的分类。
  • 课时 = 话题:每个课时是该分类下的一个话题。
  • 权限:成员可以回复课时(提问),但只有工作人员可以创建新话题。
  • 排序:课时顺序由创建日期固定。(提示:发布课时时需要稍微提前规划,或者你可以使用 Rails 控制台快速将话题创建时间回溯,以强制正确的排序)。
  • 教学大纲:我使用 Discourse Doc Categories 插件指定一个“索引话题”。该索引话题充当课程大纲/进度追踪器,当用户进入课程时,会在侧边栏渲染出精美的目录结构。

缺失的一环:真正的进度追踪

上述设置的问题在于,当新学生加入时,旧的课时话题不会显示为“未读”,因此他们无法直观地追踪自己的进度。

为了解决这个问题,我构建了一个后端插件,直接查询 TopicUser 数据库表以获取真实的历史阅读状态,并配合一个前端主题组件,将标准的 Discourse 侧边栏转变为实时的 LMS 进度追踪器。

1. 主侧边栏进度徽章

该主题组件将标准的蓝色通知圆点替换为课程分类的 [已读 / 总数] 进度指示器。

2. 课时完成勾选标记

当用户点击进入课程时,Doc 插件会渲染教学大纲。我的主题组件会在用户已阅读完毕的特定课时旁注入成功勾选标记(fa-check)。

3. 课程完成

一旦用户阅读了该分类下的所有话题,侧边栏的进度徽章会自动变为令人满意的完成勾选!

如何安装

由于这需要绕过 Discourse 的标准通知缓存,你必须同时安装后端插件和前端主题组件。

步骤 1:安装前置依赖
确保已安装并激活官方 Discourse Doc Categories 插件。我的插件专门针对配置了索引话题的分类。

步骤 2:安装后端 API 插件
app.yml 中的 docker_manager 下方添加以下内容,并重建你的容器。这将提供用于读取状态的极速 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 主题组件
直接在网页浏览器中通过 管理 > 自定义 > 主题 > 安装 > 从 Git 仓库 进行安装。
:hammer_and_wrench: 仓库链接: https://github.com/zsviczian/discourse-course-progress-theme

希望这能帮助其他试图在不依赖独立 LMS 平台臃肿功能的情况下构建社区驱动课程的人!如果你最终使用了它,请告诉我。

3 个赞

为什么你没有将前端主题组件的代码包含在插件中,而是分成了两个独立的文件?

不过,我快速浏览了你的代码,发现实现这一点比我想象的要简单得多。太棒了!

2 个赞

我考虑到人们可能希望自己的课程追踪功能拥有不同的外观和感觉,因此不想将我的个人偏好强加于人。

该主题组件包含了颜色、徽章以及符合我需求的具体细节,但这些未必适用于其他人。

该插件实现了 Discourse 文档中缺失的一个小功能。你可以围绕它构建自己的主题组件,仅将我的实现作为示例或灵感来源。

自从使用这个解决方案(仅一天!)以来,我已经在考虑是否可以添加一些数据探索图表,以查看学生在课程方面的整体进度,然后再在此基础上进行自定义。等我实际使用一段时间后,可能会将这些功能添加到插件中。

1 个赞

如果您是管理员,可以在 UI 中更改主题时间戳。
它位于“主题操作”菜单中。
遗憾的是,这仅适用于主题,无法针对单个帖子进行操作。

1 个赞