Extension des blocs de messages de chat

Bonjour à tous,

Je souhaite développer un plugin pour afficher les notifications d’activité GitLab/GitHub dans Discourse Chat, ou plus largement tout type d’événements réguliers.

Pour obtenir un rendu plus riche, j’aimerais afficher l’activité sous forme de carte. J’ai remarqué que les messages du chat possèdent un champ JSON blocks qui semble utile à cet effet. Malheureusement, à l’heure actuelle, les types de blocs ne semblent pas extensibles sans modifier le code interne de Chat : le schéma, les sérialiseurs et le rendu frontend énumèrent tous les types de blocs/éléments pris en charge.

Serait-il possible de faire de blocks un point d’extension pour les plugins, ou les plugins devraient-ils le considérer comme un détail d’implémentation interne ?

Concrètement, Discourse serait-il ouvert à l’une des solutions suivantes :

  1. un type de bloc générique pour les événements/cartes dans le noyau (core), ou
  2. une API plugin de type registerChatBlockType ?

Je peux revenir à un rendu en Markdown et décorer les messages du chat « cuits » côté client, mais les blocs structurés semblent être un modèle plus propre si cette approche est considérée comme acceptable.

Ce n’est pas prioritaire dans notre feuille de route pour le moment, mais pouvez-vous décrire le type d’API dont vous pensez avoir besoin ?

Je souhaiterais principalement disposer d’une API permettant à un plugin de :

  1. Enregistrer un nom de type de bloc de message de chat, appartenant à ce plugin
  2. Fournir éventuellement un validateur de schéma JSON pour ce bloc
  3. Enregistrer un rendu pour ce bloc

Tout cela peut être implémenté via des patches, mais s’il existe une API officielle, la stabilité et la sécurité seraient meilleures. Mon cas d’usage concerne les notifications d’activité sur Forge, mais je suppose qu’il existerait d’autres applications (par exemple, un flux RSS en alternative au plugin RSS, des fils d’actualité des réseaux sociaux, etc.).