扩展聊天消息块

大家好,

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

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

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

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

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

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

2 个赞