Tworzenie na bazie Antimatter

Ten przewodnik jest przeznaczony dla programistów. Opisuje skrypty i boty korzystające z API, integracje oparte na webhookach i poleceniach z ukośnikiem, aplikacje (wtyczki) dodające funkcje do serwera i aplikacji webowej, a także budowanie Antimatter z kodu źródłowego w celu współtworzenia projektu.

Sposoby rozszerzania Antimatter

Wybierz najlżejsze narzędzie, które spełni zadanie. Cztery pierwsze nie wymagają dostępu do samego serwera; aplikacje działają w jego wnętrzu.

NarzędzieOpisZastosowanie
REST APIWszystko, co robią aplikacje: wiadomości, kanały, użytkownicy, pliki, ustawienia. WebSocket przesyła zdarzenia w momencie ich wystąpienia.Skrypty, synchronizacja z innymi systemami, niestandardowe klienty.
Przychodzące webhooksTajny adres URL, który publikuje wiadomość w kanale, gdy coś wyśle do niego dane w formacie JSON.Alerty, wyniki CI, monitorowanie, powiadomienia z innych narzędzi.
Wychodzące webhooksAntimatter wywołuje Twój adres URL, gdy wiadomość w kanale publicznym zaczyna się od słowa wyzwalającego, lub gdy ktoś wybierze Twoje działanie w menu wiadomości, a następnie publikuje Twoją odpowiedź.Proste automatyzacje sterowane czatem, wysyłające wiadomość do innego narzędzia.
Polecenia z ukośnikiemUżytkownicy wpisują /something; Antimatter wywołuje Twój adres URL i wyświetla odpowiedź użytkownikom lub w kanale.Zapytania, akcje inicjowane z czatu.
BotyKonta przeznaczone dla programów, z własnymi tokenami, oznaczeniem BOT oraz interaktywnymi wiadomościami i oknami dialogowymi.Asystenci, powiadamiające, wszystko, co komunikuje się z użytkownikami.
Aplikacje (wtyczki)Kod działający wewnątrz serwera (Go) i w aplikacji webowej (React): haki na każdą wiadomość, nowe menu, panele, typy wiadomości, strony.Funkcje: ankiety, notatki, kalendarze, integracje wymagające interfejsu użytkownika.

W interfejsie użytkownicy nazywają wtyczki „aplikacjami”. W tym przewodniku używamy zapisu „aplikacje (wtyczki)” tam, gdzie oba słowa są pomocne, ponieważ kod, API i konfiguracja nadal używają terminu „wtyczka”.

Kompatybilność z Mattermost

Antimatter jest forkiem Mattermost. Większość rozwiązań działających z serwerem Mattermost działa również z Antimatter.

Co jest takie samo

  • REST API pod /api/v4, jego uwierzytelnianie, WebSocket i format błędów. Serwer zgłasza wersję 12.0.0, więc klienty i aplikacje sprawdzające wersję serwera widzą najnowszy Mattermost.
  • Webhooki i polecenia z ukośnikiem, w tym ich obciążenia zgodne ze Slackiem.
  • API i hooki pluginów serwerowych: Antimatter pozostawia je bez zmian. Kod serwerowy jest budowany na tym samym module Go, github.com/mattermost/mattermost/server/public. Antimatter dodaje jedynie metody dla swojej usługi AI (patrz Usługa AI).
  • Rejestr pluginów aplikacji webowej: każda metoda register… rejestru Mattermost istnieje w obu interfejsach webowych Antimatter.
  • Biblioteki klienckie: klient Go model.Client4 i klient TypeScript @mattermost/client (patrz Biblioteki klienckie).
  • Pakiety pluginów: plik .tar.gz z manifestem plugin.json. Instalowane są pluginy podpisane kluczem Mattermost, a także te podpisane kluczem Antimatter.

Co się różni

  • Dwa interfejsy webowe. Nowy interfejs, Fusion, jest domyślny; klasyczny interfejs Mattermost jest nadal dostępny. Fusion renderuje większość komponentów pluginów, ale niektóre z nich umieszcza w innym miejscu, a kilka pomija. Aplikacja może sprawdzić, który interfejs jest aktywny. Patrz Obsługa interfejsu Fusion.
  • Dodatkowe API. Antimatter dodaje punkty końcowe dla własnych funkcji: atrybuty społeczności, limity czasu, wiadomości na górze, żądania wiadomości, nadpisywanie kanałów i kategorii, eksport kanałów, przenoszenie wątków, połączenia z modelami, akcje wiadomości oraz nowe pola w społecznościach. Patrz Co Antimatter dodaje do API.
  • Dodatkowe funkcje wiadomości. Załączniki w wiadomościach mogą wyświetlać etapy linii produkcyjnej i mały wykres; wpisy mogą być odpowiedziami inline lub spoilerami.
  • Dodatkowe hooki aplikacji webowej dla aplikacji: element menu „+” w komponencie, zakładki w oknie wyboru emoji, panel w widoku kanału, stopka pod kanałami na pasku bocznym, wpis na stronach integracji, widoki dodawania i zarządzania w oknie wyboru emoji oraz panel boczny, który ponownie otwiera się w nowym oknie w tym samym miejscu. Patrz Hooki dostępne tylko w Antimatter.
  • Brak licencji. Każda funkcja jest dostępna bez klucza licencyjnego. Punkty końcowe licencji, wersji próbnej i aktualizacji do wersji enterprise zostały usunięte; GET /api/v4/license/client pozostaje dla klientów, którzy o to pytają. Niektóre aplikacje stworzone dla płatnych edycji Mattermost samodzielnie sprawdzają licencję i odmawiają działania.
  • Nazwy. W interfejsie zespoły nazywane są społecznościami, ale API i kod nadal używają słowa team. Zmienne środowiskowe używają prefiksu AM_, narzędzie wiersza poleceń to amctl, a binaria serwera to antimatter.

Gdzie znajduje się kod

Wszystko jest dostępne jako open source w organizacji AntimatterChat na GitHubie. Każdy repozytorium działa na gałęzi main.

RepozytoriumZawartość
antimatterSerwer (Go, w server/), oba interfejsy webowe (webapp/fusion i webapp/channels), klient TypeScript oraz amctl.
antimatter-dockerObrazy Docker z wbudowanymi aplikacjami oraz pliki compose.
antimatter-plugin-*Po jednym repozytorium na każdą wbudowaną aplikację: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents oraz metrics.
gifs-serverSamodzielnie hostowana usługa GIF i naklejek używana przez aplikację GIFs.
desktop-app, mobile-app, push-proxyAplikacje desktopowe i mobilne oraz usługa przesyłająca powiadomienia push do telefonów.
antimatter.chatTa strona internetowa i jej dokumentacja.
communityZgłoszenia problemów i dyskusje dotyczące wszystkich części Antimatter.

Zanim zaczniesz

  • Pobierz serwer testowy. Najszybszy sposób to obraz Docker: zobacz Instalowanie Antimatter. Aby pracować nad samym Antimatter, zobacz Budowanie ze źródła.
  • Sprawdź, co dozwala serwer. Kilka funkcji integracyjnych jest domyślnie wyłączona i wymaga administratora systemu: osobiste tokeny dostępu, konta botów, nadpisywanie nazw użytkowników i ikon oraz przesyłanie aplikacji. Każda strona podaje, jakie ustawienie jest wymagane.
  • Znajomość adresu URL witryny. Przykłady używają https://chat.example.com. Zamień go na adres swojego serwera.

W tym przewodniku

  • Interfejs REST API: uwierzytelnianie, główne zasoby, paginacja, błędy, limity żądań, WebSocket, biblioteki klienckie oraz rozszerzenia Antimatter.
  • Webhooki: webhooki przychodzące i wychodzące, obciążenia, załączniki i karty.
  • Polecenia z ukośnikiem: niestandardowe polecenia, ich żądania i odpowiedzi, autouzupełnianie.
  • Boty i interaktywne wiadomości: konta botów, przyciski, menu i okna dialogowe.
  • Pisanie aplikacji: struktura wtyczki, hooki serwera, rejestr aplikacji webowych, Fusion, ustawienia, przechowywanie danych, tłumaczenia i pakowanie.
  • Budowanie ze źródła: serwer, interfejsy webowe, obraz Docker i aplikacje.
  • Wkład w projekt: zgłoszenia, pull requesty, styl, tłumaczenia, bezpieczeństwo i licencje.
Pytania są mile widziane w dyskusjach społeczności. Błędy zgłaszaj w zgłoszeniach społeczności.