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ędzie | Opis | Zastosowanie |
|---|---|---|
| REST API | Wszystko, 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 webhooks | Tajny 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 webhooks | Antimatter 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śnikiem | Użytkownicy wpisują /something; Antimatter wywołuje Twój adres URL i wyświetla odpowiedź użytkownikom lub w kanale. | Zapytania, akcje inicjowane z czatu. |
| Boty | Konta 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.Client4i klient TypeScript@mattermost/client(patrz Biblioteki klienckie). - Pakiety pluginów: plik
.tar.gzz manifestemplugin.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/clientpozostaje 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ą prefiksuAM_, narzędzie wiersza poleceń toamctl, a binaria serwera toantimatter.
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.
| Repozytorium | Zawartość |
|---|---|
| antimatter | Serwer (Go, w server/), oba interfejsy webowe (webapp/fusion i webapp/channels), klient TypeScript oraz amctl. |
| antimatter-docker | Obrazy 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-server | Samodzielnie hostowana usługa GIF i naklejek używana przez aplikację GIFs. |
| desktop-app, mobile-app, push-proxy | Aplikacje desktopowe i mobilne oraz usługa przesyłająca powiadomienia push do telefonów. |
| antimatter.chat | Ta strona internetowa i jej dokumentacja. |
| community | Zgł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.