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-server | GIFs 앱에서 사용하는 자체 호스팅 GIF 및 스티커 서비스. |
| desktop-app, mobile-app, push-proxy | 데스크톱 및 모바일 앱, 그리고 휴대폰으로 푸시 알림을 전달하는 서비스. |
| antimatter.chat | 이 웹사이트와 그 문서. |
| community | Antimatter의 모든 부분에 대한 이슈와 토론. |
시작하기 전
- 테스트 서버를 준비합니다. 가장 빠른 방법은 Docker 이미지입니다. Antimatter 설치를 참고하세요. Antimatter 자체를 개발하려면 소스에서 빌드를 참고하세요.
- 서버가 허용하는 기능을 확인합니다. 여러 통합 기능이 기본적으로 비활성화되어 있으며 시스템 관리자가 필요합니다. 개인 액세스 토큰, 봇 계정, 사용자 이름 및 아이콘 재정의, 앱 업로드 등이 해당됩니다. 각 페이지에서 필요한 설정이 명시되어 있습니다.
- 사이트 URL을 파악합니다. 예제에서는
https://chat.example.com를 사용합니다. 서버의 주소로 교체하세요.
이 가이드에서
- REST API: 인증, 주요 리소스, 페이지네이션, 오류, 레이트 리밋, WebSocket, 클라이언트 라이브러리, Antimatter의 추가 기능.
- 웹훅: 수신 및 송신 웹훅, 페이로드, 첨부 파일 및 카드.
- 슬래시 명령: 사용자 정의 명령, 요청 및 응답, 자동 완성.
- 봇 및 대화형 메시지: 봇 계정, 버튼, 메뉴 및 다이얼로그.
- 앱 작성: 플러그인 구조, 서버 훅, 웹 앱 레지스트리, Fusion, 설정, 저장소, 번역 및 패키징.
- 소스에서 빌드: 서버, 웹 인터페이스, Docker 이미지 및 앱.
- 기여: 이슈, 풀 요청, 스타일, 번역, 보안 및 라이선스.