扩展聊天消息块

大家好,

我想开发一个插件,用于在 Discourse Chat 中显示 GitLab/GitHub 的活动通知,或者更广泛地说,任何类型的常规事件。

为了获得更丰富的输出效果,我希望将活动显示为卡片。我注意到聊天消息有一个 blocks JSON 字段,看起来非常适合此用途。不幸的是,目前块类型似乎无法在不修补 Chat 内部代码的情况下进行扩展:模式定义、序列化器和前端渲染器都列出了支持的块/元素类型。

是否有可能将 blocks 作为插件扩展点?还是说插件应将其视为内部实现细节?

具体来说,Discourse 是否愿意接受以下任一方案:

  1. 在核心代码中添加一个通用的事件/卡片块类型,或者
  2. 提供一个类似 registerChatBlockType 的插件 API?

如果这条路径被认为可行,我可以退而求其次,通过渲染 Markdown 并在客户端装饰已处理的聊天消息来实现。但如果采用结构化块,这似乎是更优雅的模型。

这目前不在我们的路线图重点上,但你能描述一下你认为需要什么样的 API 吗?

我主要希望有一个 API 允许插件执行以下操作:

  1. 注册一个聊天消息块类型名称,并指定该插件为所有者
  2. 可选地,为该块提供 JSON Schema 验证器
  3. 注册该块的渲染器

这些功能都可以通过补丁实现,但如果有官方 API,稳定性和安全性会更好。我的用例是 Forge 活动通知,但我认为还有其他应用场景(例如,用 RSS 替代现有的 RSS 插件、社交媒体动态等)。