チャットメッセージブロックの拡張

みなさん、こんにちは。

Discourse Chat で GitLab や GitHub のアクティビティ通知を表示する、あるいはより一般的にはあらゆる種類の定期的なイベントを表示するプラグインを開発したいと考えています。

よりリッチな出力を得るために、アクティビティをカード形式で表示したいのですが、チャットメッセージにはこの目的に有用そうな blocks という JSON フィールドがあることがわかりました。残念ながら現在、ブロックタイプはチャットの内部実装をパッチなしでは拡張できないようです。スキーマ、シリアライザー、フロントエンドレンダラーのすべてがサポートされているブロック/エレメントタイプを列挙しているためです。

blocks をプラグインの拡張ポイントとして機能させることは可能でしょうか? それとも、プラグインはこれを内部実装の詳細として扱うべきでしょうか?

具体的には、Discourse は以下のいずれかの提案を受け入れる姿勢でしょうか?

  1. コアに汎用的なイベント/カードブロックタイプを追加する
  2. registerChatBlockType 風のプラグイン API を提供する

マークダウンをレンダリングし、クライアント側で処理済みのチャットメッセージを装飾する手段に頼ることもできますが、この方向性が許容される範囲内だと考えられるなら、構造化されたブロックの方がよりクリーンなモデルだと考えられます。

「いいね!」 2