Antimatter 기반 개발

이 가이드는 개발자를 위한 것입니다. API를 사용하는 스크립트와 봇, 웹훅과 슬래시 명령을 기반으로 구축된 통합, 서버와 웹 앱에 기능을 추가하는 앱(플러그인), 그리고 소스에서 Antimatter를 빌드하여 기여하는 방법을 다룹니다.

Antimatter 확장 방법

작업을 수행할 수 있는 가장 가벼운 도구를 선택하세요. 처음 네 가지는 서버 자체에 대한 접근이 필요하지 않으며, 앱은 서버 내부에서 실행됩니다.

도구기능적합한 용도
REST API앱이 수행하는 모든 것: 메시지, 채널, 사용자, 파일, 설정. WebSocket은 이벤트가 발생하면 즉시 전송합니다.스크립트, 다른 시스템과의 동기화, 맞춤형 클라이언트.
수신 웹훅JSON을 전송하면 채널에 메시지를 게시하는 비밀 URL.경고, CI 결과, 모니터링, 다른 도구로부터의 알림.
발신 웹훅Antimatter는 공개 채널의 메시지가 트리거 단어로 시작하거나, 누군가 메시지 메뉴에서 해당 작업을 선택할 때 URL을 호출하여 응답을 게시합니다.다른 도구로 메시지를 전송하는 간단한 채팅 기반 자동화입니다.
슬래시 명령사용자가 /something을 입력하면, Antimatter가 사용자의 URL을 호출하고 사용자의 답변을 해당 사용자에게 또는 채널에 표시합니다.검색, 채팅에서 시작되는 작업.
봇프로그램을 위해 생성된 계정, 고유한 토큰, BOT 태그, 대화형 메시지와 다이얼로그를 지원합니다.어시스턴트, 알림, 사람들과 대화하는 모든 것.
앱(플러그인)서버(Go)와 웹 앱(React) 내부에서 실행되는 코드: 모든 메시지에 대한 훅, 새 메뉴, 패널, 메시지 유형, 페이지.기능: 투표, 메모, 캘린더, 사용자 인터페이스가 필요한 통합.

인터페이스에서 사람들은 플러그인을 "앱"이라고 부릅니다. 코드, API 및 설정이 여전히 "플러그인"이라고 하므로, 이 가이드에서는 두 용어가 모두 도움이 되는 곳에 "앱(플러그인)"이라고 표기합니다.

Mattermost와의 호환성

Antimatter는 Mattermost의 포크입니다. Mattermost 서버에서 작동하는 대부분의 기능이 Antimatter에서도 작동합니다.

동일한 부분

  • /api/v4 아래에 있는 REST API, 인증, WebSocket 및 오류 형식. 서버는 버전 12.0.0을 보고하므로, 서버 버전을 확인하는 클라이언트와 앱은 최신 Mattermost를 인식합니다.
  • 웹훅과 슬래시 명령을 포함하며, Slack 호환 페이로드를 지원합니다.
  • 서버 플러그인 API 및 훅: Antimatter는 이를 그대로 유지합니다. 서버 코드는 동일한 Go 모듈인 github.com/mattermost/mattermost/server/public을 기반으로 빌드됩니다. Antimatter는 AI 서비스(참조: AI 서비스)를 위해 메서드만 추가합니다.
  • 웹 앱 플러그인 레지스트리: Mattermost 레지스트리의 모든 register… 메서드가 Antimatter의 두 가지 웹 인터페이스 모두에 존재합니다.
  • 클라이언트 라이브러리: Go 클라이언트 model.Client4와 TypeScript 클라이언트 @mattermost/client(클라이언트 라이브러리 참고).
  • 플러그인 번들: plugin.json 매니페스트가 포함된 .tar.gz 파일입니다. Mattermost 키로 서명된 플러그인도, Antimatter 키로 서명된 플러그인도 설치할 수 있습니다.

다른 점

  • 두 가지 웹 인터페이스. 새로운 인터페이스인 Fusion이 기본값이며, 기존 Mattermost 인터페이스도 여전히 사용할 수 있습니다. Fusion은 대부분의 플러그인 컴포넌트를 렌더링하지만, 일부는 다른 위치에 배치하거나 제외합니다. 앱은 현재 실행 중인 인터페이스를 구별할 수 있습니다. Fusion 인터페이스 지원을 참고하세요.
  • 추가 API. Antimatter는 자체 기능을 위한 엔드포인트를 추가합니다: 커뮤니티 속성, 타임아웃, 상단 메시지, 메시지 요청, 채널 및 카테고리 오버라이드, 채널 내보내기, 글타래 이동, 모델 연결, 메시지 작업, 커뮤니티의 새 필드. Antimatter가 API에 추가하는 내용을 참조하세요.
  • 추가 메시지 기능. 메시지 첨부 파일은 파이프라인 단계와 작은 차트를 표시할 수 있으며, 게시물은 인라인 답글이나 스포일러로 사용할 수 있습니다.
  • 앱용 추가 웹 앱 훅: 작성기 "+" 메뉴 항목, 이모지 피커 탭, 채널 뷰의 패널, 사이드바 채널 아래에 있는 푸터, 통합 페이지의 항목, 이모지 피커의 추가 및 관리 뷰, 새 창에서 이전 위치로 다시 열리는 사이드 패널. Antimatter에만 있는 훅을 참조하세요.
  • 라이선스 없음. 모든 기능이 라이선스 키 없이 사용할 수 있습니다. 라이선스, 트라이얼 및 엔터프라이즈 업그레이드 엔드포인트는 제거되었습니다. 요청하는 클라이언트를 위해 GET /api/v4/license/client는 유지됩니다. Mattermost 유료 에디션용으로 개발된 일부 앱은 자체적으로 라이선스를 확인하고 실행을 거부합니다.
  • 이름. 인터페이스에서는 팀을 커뮤니티라고 부르지만, API와 코드에서는 여전히 team이라고 합니다. 환경 변수는 AM_ 접두사를 사용하며, 명령줄 도구는 amctl, 서버 바이너리는 antimatter입니다.

코드의 위치

모든 것이 오픈소스이며, GitHub의 AntimatterChat 조직에서 공개되어 있습니다. 모든 저장소는 main 브랜치에서 작업됩니다.

저장소포함 내용
antimatter서버(Go, server/), 두 가지 웹 인터페이스(webapp/fusion와 webapp/channels), TypeScript 클라이언트 및 amctl.
antimatter-docker번들된 앱과 compose 파일이 포함된 Docker 이미지.
antimatter-plugin-*각 번들 앱마다 하나의 저장소: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents 및 metrics.
gifs-serverGIFs 앱에서 사용하는 자체 호스팅 GIF 및 스티커 서비스.
desktop-app, mobile-app, push-proxy데스크톱 및 모바일 앱, 그리고 휴대폰으로 푸시 알림을 전달하는 서비스.
antimatter.chat이 웹사이트와 그 문서.
communityAntimatter의 모든 부분에 대한 이슈와 토론.

시작하기 전

  • 테스트 서버를 준비합니다. 가장 빠른 방법은 Docker 이미지입니다. Antimatter 설치를 참고하세요. Antimatter 자체를 개발하려면 소스에서 빌드를 참고하세요.
  • 서버가 허용하는 기능을 확인합니다. 여러 통합 기능이 기본적으로 비활성화되어 있으며 시스템 관리자가 필요합니다. 개인 액세스 토큰, 봇 계정, 사용자 이름 및 아이콘 재정의, 앱 업로드 등이 해당됩니다. 각 페이지에서 필요한 설정이 명시되어 있습니다.
  • 사이트 URL을 파악합니다. 예제에서는 https://chat.example.com를 사용합니다. 서버의 주소로 교체하세요.

이 가이드에서

  • REST API: 인증, 주요 리소스, 페이지네이션, 오류, 레이트 리밋, WebSocket, 클라이언트 라이브러리, Antimatter의 추가 기능.
  • 웹훅: 수신 및 송신 웹훅, 페이로드, 첨부 파일 및 카드.
  • 슬래시 명령: 사용자 정의 명령, 요청 및 응답, 자동 완성.
  • 봇 및 대화형 메시지: 봇 계정, 버튼, 메뉴 및 다이얼로그.
  • 앱 작성: 플러그인 구조, 서버 훅, 웹 앱 레지스트리, Fusion, 설정, 저장소, 번역 및 패키징.
  • 소스에서 빌드: 서버, 웹 인터페이스, Docker 이미지 및 앱.
  • 기여: 이슈, 풀 요청, 스타일, 번역, 보안 및 라이선스.
질문은 커뮤니티 토론에서 환영합니다. 버그는 커뮤니티 이슈에 보고하세요.