Estensione dei blocchi dei messaggi di chat

Ciao a tutti,

Vorrei sviluppare un plugin per visualizzare le notifiche delle attività di GitLab/GitHub in Discourse Chat, o più in generale qualsiasi tipo di evento periodico.

Per ottenere un output più ricco, vorrei visualizzare le attività sotto forma di card e ho notato che i messaggi della chat dispongono di un campo JSON blocks che sembra utile a questo scopo. Purtroppo, al momento, i tipi di blocco non sembrano estensibili senza modificare le parti interne di Chat: lo schema, i serializzatori e il renderer frontend elencano tutti i tipi di blocco/elemento supportati.

Sarebbe possibile rendere blocks un punto di estensione per i plugin, oppure i plugin dovrebbero considerarlo un dettaglio implementativo interno?

Nello specifico, Discourse sarebbe aperto a una delle seguenti soluzioni:

  1. un tipo di blocco generico per eventi/card nel nucleo del software (core), oppure
  2. un’API di plugin di tipo registerChatBlockType?

Posso sempre ricorrere al rendering del Markdown e alla decorazione dei messaggi della chat

Non è attualmente in cima alla nostra roadmap, ma puoi descrivere che tipo di API pensi di aver bisogno?

Principalmente vorrei un’API che consenta a un plugin di:

  1. Registrare un nome per un tipo di blocco dei messaggi di chat, di proprietà del plugin stesso
  2. Opzionalmente, fornire un validatore JSON Schema per quel blocco
  3. Registrare un renderer per quel blocco

Tutto questo può essere implementato tramite patch, ma se esistesse un’API ufficiale, la stabilità e la sicurezza sarebbero migliori. Il mio caso d’uso riguarda le notifiche delle attività su Forge, ma immagino che esistano altre applicazioni (RSS come alternativa al plugin RSS, feed dei social media, ecc.).