채팅 메시지 차단 기간 연장

모두 안녕하세요,

Discourse Chat에서 GitLab/GitHub 활동 알림을 표시하거나, 더 넓게는 정기적인 이벤트들을 표시하는 플러그인을 개발하고 싶습니다.

더 풍부한 출력을 위해 활동을 카드 형태로 표시하고 싶은데, 채팅 메시지에 이 용도에 유용해 보이는 blocks JSON 필드가 있다는 것을 확인했습니다. 불행히도 현재 블록 유형은 Chat 내부 구현을 패치하지 않고는 확장할 수 없는 것 같습니다. 스키마, 직렬화기(serilaizers), 프론트엔드 렌더러 모두 지원되는 블록/요소 유형을 나열하고 있기 때문입니다.

blocks를 플러그인 확장 지점(extension point)으로 만들 수 있을까요, 아니면 플러그인에서는 이를 내부 구현 세부 사항으로 취급해야 하나요?

구체적으로, Discourse가 다음 중 하나를 수용할 의향이 있을까요:

  1. 코어에 범용 이벤트/카드 블록 유형을 추가하거나,
  2. registerChatBlockType 스타일의 플러그인 API를 제공하거나?

이 방향이 허용된다고 판단된다면 구조화된 블록이 더 깔끔한 모델인 것 같지만, 그렇지 않을 경우 마크다운을 렌더링하고 클라이언트 사이드에서 조리된(cooked) 채팅 메시지를 꾸미는 방식으로 대체할 수 있습니다.

지금은 로드맵에 우선순위가 높지 않지만, 어떤 종류의 API가 필요하다고 생각하시나요?

주로 플러그인이 다음을 수행할 수 있도록 허용하는 API를 원합니다:

  1. 해당 플러그인이 소유한 채팅 메시지 블록 유형 이름을 등록합니다.
  2. 해당 블록에 대한 JSON 스키마 검증기를 선택적으로 제공합니다.
  3. 해당 블록에 대한 렌더러를 등록합니다.

이 모든 것은 패치로 구현할 수 있지만, 공식 API가 있다면 안정성과 안전성이 더 높아질 것입니다. 제 사용 사례는 Forge 활동 알림이지만, 다른 용도(RSS 플러그인의 대안으로 RSS, 소셜 미디어 피드 등)도 존재할 것으로 생각합니다.