Bygga på Antimatter

Den här guiden är för utvecklare. Den behandlar skript och bots som använder API:et, integrationer byggda på webhooks och snedstreckskommandon, appar (plugins) som lägger till funktioner på servern och i webbappen, samt hur man bygger Antimatter från källkoda för att bidra till det.

Sätt att utöka Antimatter

Välj det lättaste verktyget som klarar jobbet. De fyra första kräver ingen åtkomst till själva servern; appar körs inuti den.

VerktygVad den görBra för
REST APIAllt som apparna gör: meddelanden, kanaler, personer, filer, inställningar. En WebSocket skickar händelser när de inträffar.Skript, synkronisering med andra system, anpassade klienter.
Inkommande webhooksEn hemlig URL som postar ett meddelande i en kanal när något skickar JSON till den.Aviseringar, CI-resultat, övervakning, aviseringar från andra verktyg.
Utgående webhooksAntimatter anropar din URL när ett meddelande i en publik kanal börjar med ett utlösande ord, eller när någon väljer din åtgärd i ett meddelandes meny, och publicerar ditt svar.Enkla automatiseringar drivna av chatt, som skickar ett meddelande till ett annat verktyg.
SnedstreckskommandonNär någon skriver /something ringer Antimatter din URL och visar ditt svar för personen eller kanalen.Uppslagsförfrågningar, åtgärder som startas från chatten.
BotsKonton skapade för program, med egna token, en BOT-tagg samt interaktiva meddelanden och dialogrutor.Assistenter, aviseringar, allt som kommunicerar med människor.
Appar (plugins)Kod som körs inuti servern (Go) och i webbappen (React): krokar för varje meddelande, nya menyer, paneler, meddelandetyper, sidor.Funktioner: omröstningar, anteckningar, kalendrar, integrationer som kräver användargränssnittet.

I gränssnittet kallar människor plugins för "appar". Denna guide säger "appar (plugins)" där båda orden hjälper, eftersom koden, API:et och konfigurationen fortfarande säger "plugin".

Kompatibilitet med Mattermost

Antimatter är en fork av Mattermost. Det mesta som fungerar med en Mattermost-server fungerar också med Antimatter.

Vad som är detsamma

  • REST API:et under /api/v4, dess autentisering, dess WebSocket och dess felformat. Servern rapporterar version 12.0.0, så klienter och appar som kontrollerar serverversionen ser en nyare Mattermost.
  • Webhooks och snedstreckskommandon, inklusive deras Slack-kompatibla payloads.
  • Serverns plugin-API och hooks: Antimatter behåller dem som de är. Serverkoden byggs mot samma Go-modul, github.com/mattermost/mattermost/server/public. Antimatter lägger bara till metoder för sin AI-tjänst (se AI-tjänsten).
  • Webappens plugin-register: varje register…-metod i Mattermosts register finns i båda Antimatters webbgränssnitt.
  • Klientbibliotek: Go-klienten model.Client4 och TypeScript-klienten @mattermost/client (se Klientbibliotek).
  • Pluginpaket: en .tar.gz med ett plugin.json-manifest. Plugins signerade med Mattermosts nyckel installeras, liksom de som är signerade med Antimatters.

Vad som är annorlunda

  • Två webbgränssnitt. Det nya gränssnittet, Fusion, är standard; det klassiska Mattermost-gränssnittet är fortfarande tillgängligt. Fusion renderar de flesta plugin-komponenter, men placerar vissa av dem annorlunda och utesluter några. En app kan avgöra vilket gränssnitt som är aktivt. Se Stöd för Fusion-gränssnittet.
  • Extra API. Antimatter lägger till slutpunkter för egna funktioner: community-attribut, tidsgränser, meddelanden ovanpå, meddelandeförfrågningar, åsidosättningar av kanaler och kategorier, export av kanaler, flytt av trådar, modellanslutningar, meddelandeåtgärder och nya fält för communityer. Se Vad Antimatter lägger till i API:t.
  • Extra meddelandefunktioner. Meddelandebilagor kan visa pipeline-steg och en liten graf; inlägg kan vara inlinade svar eller spoilers.
  • Extra web app hooks för appar: ett "+"-menyobjekt i kompositorn, flikar i emojiväljaren, ett panel i kanalvyn, en sidfot under kanaler i sidofältet, ett objekt på integrationsssidorna, lägg till- och hanteravyn i emojiväljaren, och en sidopanel som återöppnas där den var i ett nytt fönster. Se Hooks som bara Antimatter har.
  • Inga licenser. All funktion är tillgänglig utan licensnyckel. Slutpunkterna för licens, provperiod och uppgradering till enterprise är borta; GET /api/v4/license/client finns kvar för klienter som frågar. Vissa appar byggda för Mattermosts betalda utgåvor kontrollerar själva efter en licens och vägrar att köra.
  • Namn. Teams kallas communities i gränssnittet, men API:et och koden säger fortfarande team. Miljövariabler använder prefixet AM_, kommandoradsverktyget är amctl och serverbinären är antimatter.

Var koden finns

Allt är öppen källkod, i organisationen AntimatterChat på GitHub. Varje repository arbetar på sin main-gren.

RepositoryInnehåll
antimatterServern (Go, i server/), båda webbgränssnitten (webapp/fusion och webapp/channels), TypeScript-klienten och amctl.
antimatter-dockerDocker-bilderna, med de medföljande apparna, samt compose-filer.
antimatter-plugin-*Ett repository per medföljande app: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents och metrics.
gifs-serverDen självhostade GIF- och klistermärkesservicen som används av appen GIFs.
desktop-app, mobile-app, push-proxyDesktop- och mobilapparna, samt servicen som vidarebefordrar push-aviseringar till telefoner.
antimatter.chatDenna webbplats och dess dokumentation.
communityProblem och diskussioner för alla delar av Antimatter.

Innan du börjar

  • Hämta en testserver. Det snabbaste sättet är Docker-bilden: se Installera Antimatter. För att arbeta med själva Antimatter, se Bygga från källkoden.
  • Kontrollera vad servern tillåter. Vissa integrationsfunktioner är inaktiverade som standard och kräver en systemadministratör: personliga åtkomsttoken, bot-konton, åsidosättningar av användarnamn och ikoner, samt uppladdning av appar. Varje sida anger vilken inställning som krävs.
  • Känn din webbadress. Exemplen använder https://chat.example.com. Ersätt den med din servers adress.

I den här guiden

  • REST-API:t: autentisering, huvudresurser, paginering, fel, hastighetsbegränsningar, WebSocket, klientbibliotek och Antimatters tillägg.
  • Webhooks: inkommande och utgående webhooks, payloads, bilagor och kort.
  • Snedstreckskommandon: anpassade kommandon, deras begäranden och svar, autofullständning.
  • Bots och interaktiva meddelanden: bot-konton, knappar, menyer och dialogrutor.
  • Skriva appar: plugin-layouten, serverhooks, webapp-registret, Fusion, inställningar, lagring, översättningar och paketning.
  • Bygga från källkoden: servern, webbgränssnitten, Docker-bilden och apparna.
  • Bidra: problem, pull requests, stil, översättningar, säkerhet och licenser.
Frågor är välkomna i communitydiskussionerna. Rapportera buggar i communityproblemen.