Bygning på Antimatter

Denne guide er til udviklere. Den dækker scripts og bots, der bruger API’et, integrationer bygget på webhooks og skråstregskommandoer, apps (plugins), der tilføjer funktioner til serveren og webappen, samt bygning af Antimatter fra kildekode for at bidrage til det.

Måder at udvide Antimatter på

Vælg det letteste værktøj, der løser opgaven. De første fire kræver ingen adgang til selve serveren; apps kører inde i den.

VærktøjHvad den gørGodt til
REST APIAlt det, apps gør: beskeder, kanaler, personer, filer, indstillinger. En WebSocket sender hændelser, efterhånden som de sker.Scripts, synkronisering med andre systemer, egne klienter.
Indgående webhooksEn hemmelig URL, der poster en besked til en kanal, når noget sender JSON til den.Advarsler, CI-resultater, overvågning, notifikationer fra andre værktøjer.
Udgående webhooksAntimatter kalder din URL, når en besked i en offentlig kanal starter med et triggerord, eller når nogen vælger din handling i en beskedmenu, og derefter poster dit svar.Enkle automatiseringer drevet af chat, der sender en besked til et andet værktøj.
SkråstregskommandoerFolk indtaster /something; Antimatter kalder din URL og viser dit svar til dem eller til kanalen.Opslag, handlinger startet fra chatten.
BotsKonti oprettet til programmer, med egne tokens, et BOT-mærke (AGENT for AI-agenter) samt interaktive beskeder og dialoger.Assistenter, notifikationer, AI-agenter du kører selv – alt, der kommunikerer med brugere.
Apps (plugins)Kode, der kører inde i serveren (Go) og i webappen (React): hooks på hver besked, nye menuer, paneler, beskedtyper, sider.Funktioner: afstemninger, notater, kalendere, integrationer, der kræver brugergrænsefladen.

I grænsefladen kalder folk plugins for "apps". Denne guide skriver "apps (plugins)" der, hvor begge ord hjælper, fordi koden, API’et og konfigurationen stadig siger "plugin".

Kompatibilitet med Mattermost

Antimatter er en fork af Mattermost. Det meste, der virker med en Mattermost-server, virker også med Antimatter.

Hvad er det samme

  • REST API under /api/v4, dens autenticering, dens WebSocket og dens fejlformat. Serveren rapporterer version 12.0.0, så klienter og apps, der tjekker serverversionen, ser en nyere Mattermost.
  • Webhooks og skråstregskommandoer, herunder deres Slack-kompatible payloads.
  • Serverplugin-API og hooks: Antimatter bevarer dem, som de er. Serverkode bygges mod samme Go-modul, github.com/mattermost/mattermost/server/public. Antimatter tilføjer kun metoder til sin AI-tjeneste (se AI-tjenesten).
  • Web app-plugin-registret: alle register…-metoder i Mattermosts registret findes i begge af Antimatters webgrænseflader.
  • Klientbiblioteker: Go-klienten model.Client4 og TypeScript-klienten @mattermost/client (se Klientbiblioteker).
  • Plugin-bundler: en .tar.gz med et plugin.json-manifest. Plugins signeret med Mattermosts nøgle installeres, ligesom dem signeret med Antimatters.

Hvad der er anderledes

  • To webgrænseflader. Den nye grænseflade, Fusion, er standard; den klassiske Mattermost-grænseflade er stadig tilgængelig. Fusion render de fleste plugin-komponenter, men placerer nogle af dem anderledes og udelader et par. En app kan se, hvilken grænseflade der kører. Se Understøttelse af Fusion-grænsefladen.
  • Ekstra API. Antimatter tilføjer endpoints til sine egne funktioner: communityattributter, timeouts, beskeder øverst, beskedanmodninger, kanaler og kategorioverrides, kanaleksport, flytning af tråde, modelforbindelser, beskedhandlinger og nye felter på communities. Se Hvad Antimatter tilføjer til API'et.
  • Ekstra beskedfunktioner. Vedhæftninger til beskeder kan vise pipeline-trin og en lille graf; indlæg kan være inline-svar eller spoilers.
  • Ekstra webapp-hooks til apps: et "+"-menupunkt i composeren, emoji-picker-faner, et panel i kanalvisningen, en fodlinje under kanaler i sidebjælken, et indtast på integrationssiderne, emoji-pickers tilføj- og administrér-visninger, og et sidepanel, der genåbnes der, hvor det var i et nyt vindue. Se Hooks, som kun Antimatter har.
  • Ingen licenser. Alle funktioner er tilgængelige uden en licensnøgle. Licens-, prøve- og enterprise-opgraderings-endpoints er fjernet; GET /api/v4/license/client er stadig tilgængelig for klienter, der beder om det. Nogle apps bygget til Mattermosts betalte udgaver tjekker selv for en licens og nægter at køre.
  • Navne. Teams kaldes communities i grænsefladen, men API'et og koden siger stadig team. Miljøvariabler bruger AM_-præfikset, kommandolinjeværktøjet er amctl, og serverbinæren er antimatter.

Hvor koden befinder sig

Alt er open source i organisationen AntimatterChat på GitHub. Hvert repository arbejder på sin main-gren.

RepositoryIndhold
antimatterServeren (Go, i server/), begge webgrænseflader (webapp/fusion og webapp/channels), TypeScript-klienten og amctl.
antimatter-dockerDocker-billederne, med de medfølgende apps, og compose-filerne.
antimatter-plugin-*Ét repository per medfølgende app: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents og metrics.
gifs-serverDen selvhostede GIF- og sticker-tjeneste, der bruges af GIF-appen.
desktop-app, mobile-app, push-proxyDesktop- og mobil-appene samt tjenesten, der videresender push-notifikationer til telefoner.
antimatter.chatDenne hjemmeside og dens dokumentation.
communityIssues og diskussioner for alle dele af Antimatter.

Før du går i gang

  • Få en testserver. Den hurtigste metode er Docker-billedet: se Installation af Antimatter. Hvis du vil arbejde med selve Antimatter, se Bygning fra kildekode.
  • Tjek, hvad serveren tillader. Flere integrationsfunktioner er deaktiveret som standard og kræver en systemadministrator: personlige adgangstokens, bot-konti, overskrivning af brugernavne og ikoner samt upload af apps. Hver side angiver, hvilken indstilling der kræves.
  • Kend din site-URL. Eksemplerne bruger https://chat.example.com. Erstat den med din servers adresse.

I denne guide

  • REST-API: autentificering, hovedressourcer, paginering, fejl, rate limits, WebSocket, klientbiblioteker og Antimatters udvidelser.
  • Webhooks: indgående og udgående webhooks, payloads, vedhæftninger og kort.
  • Skråstregskommandoer: brugerdefinerede kommandoer, deres anmodninger og svar, autofuldførelse.
  • Bots og interaktive beskeder: bot-konti, eksterne agenter, knapper, menuer og dialoger.
  • Skrivning af apps: plugin-strukturen, serverhooks, webapp-registret, Fusion, indstillinger, lager, oversættelser og pakning.
  • Bygning fra kildekode: serveren, webgrænsefladerne, Docker-billedet og apps.
  • Bidrag: issues, pull requests, stil, oversættelser, sikkerhed og licenser.
Spørgsmål er velkomne i fællesskabsdiskussionerne. Rapportér fejl i fællesskabsissues.