Bouwen op Antimatter

Deze gids is bedoeld voor ontwikkelaars. Hij behandelt scripts en bots die de API gebruiken, integraties gebouwd op webhooks en slash-opdrachten, apps (plugins) die functionaliteit toevoegen aan de server en de webapp, en het bouwen van Antimatter vanaf broncode om eraan bij te dragen.

Manieren om Antimatter uit te breiden

Kies het lichtste hulpmiddel dat het werk doet. De eerste vier vereisen geen toegang tot de server zelf; apps worden erin uitgevoerd.

HulpmiddelWat het doetGeschikt voor
REST APIAlles wat apps doen: berichten, kanalen, personen, bestanden, instellingen. Een WebSocket stuurt gebeurtenissen terwijl ze plaatsvinden.Scripts, synchronisatie met andere systemen, aangepaste clients.
Inkomende webhooksEen beveiligde URL die een bericht naar een kanaal post wanneer er JSON wordt verstuurd.Alerts, CI-resultaten, monitoring, meldingen van andere tools.
Uitgaande webhooksAntimatter roept uw URL aan wanneer een bericht in een publiek kanaal begint met een triggerwoord, of wanneer iemand uw actie kiest in het menu van een bericht, en post uw antwoord.Eenvoudige chatgestuurde automatiseringen die een bericht naar een ander hulpmiddel sturen.
Slash-opdrachtenMensen typen /something; Antimatter belt uw URL en toont uw antwoord aan hen of aan het kanaal.Opzoeken, acties die vanuit de chat worden gestart.
BotsAccounts voor programma's, met hun eigen tokens, een BOT-label, en interactieve berichten en dialoogvensters.Assistenten, melders, alles dat met mensen communiceert.
Apps (plugins)Code die in de server (Go) en in de webapp (React) wordt uitgevoerd: hooks voor elk bericht, nieuwe menu's, panelen, berichttypes, pagina's.Functionaliteit: peilingen, notities, agenda's, integraties die de gebruikersinterface nodig hebben.

In de interface noemen mensen plugins "apps". Deze gids zegt "apps (plugins)" waar beide woorden helpen, omdat de code, de API en de configuratie nog steeds "plugin" zeggen.

Compatibiliteit met Mattermost

Antimatter is een fork van Mattermost. Het grootste deel van wat werkt met een Mattermost-server werkt ook met Antimatter.

Wat hetzelfde is

  • De REST API onder /api/v4, de authenticatie, de WebSocket en het foutformaat. De server meldt versie 12.0.0, zodat clients en apps die de serverversie controleren een recente Mattermost zien.
  • Webhooks en slash-opdrachten, inclusief hun met Slack-compatibele payloads.
  • De serverplugin-API en hooks: Antimatter laat deze ongewijzigd. Servercode wordt gebouwd op dezelfde Go-module, github.com/mattermost/mattermost/server/public. Antimatter voegt alleen methoden toe voor zijn AI-service (zie De AI-service).
  • Het webapp-pluginregister: elke register…-methode van het register van Mattermost is aanwezig in beide webinterfaces van Antimatter.
  • Clientbibliotheken: de Go-client model.Client4 en de TypeScript-client @mattermost/client (zie Clientbibliotheken).
  • Pluginbundles: een .tar.gz met een plugin.json-manifest. Plugins die zijn ondertekend met de sleutel van Mattermost kunnen worden geïnstalleerd, net als die met de sleutel van Antimatter.

Wat anders is

  • Twee webinterfaces. Het nieuwe interface, Fusion, is de standaard; het klassieke Mattermost-interface is nog steeds beschikbaar. Fusion rendert de meeste plugincomponenten, maar plaatst sommige anders en laat er een paar weg. Een app kan zien welk interface actief is. Zie Ondersteuning voor het Fusion-interface.
  • Extra API. Antimatter voegt eindpunten toe voor zijn eigen functies: community-attributen, time-outs, berichten bovenaan, berichtaanvragen, kanaal- en categorie-overrides, kanaal-export, verplaatsen van draadjes, modelverbindingen, berichtacties en nieuwe velden voor communities. Zie Wat Antimatter aan de API toevoegt.
  • Extra berichtfuncties. Bijlagen bij berichten kunnen pijliniestadia en een klein diagram tonen; berichten kunnen inline antwoorden of spoilers zijn.
  • Extra webapp-hooks voor apps: een "+"-menu-item in de invoer, tabs in de emoji-kiezer, een paneel in de kanaalweergave, een voettekst onder de kanalen in de zijbalk, een item op de integratiepagina's, de toevoeg- en beheerweergaven van de emoji-kiezer en een zijpaneel dat zich heropent op de plek waar het was in een nieuw venster. Zie Hooks die alleen Antimatter heeft.
  • Geen licenties. Elke functie is beschikbaar zonder licentiesleutel. De eindpunten voor licentie, proefperiode en enterprise-upgrade zijn verdwenen; GET /api/v4/license/client blijft bestaan voor clients die het vragen. Sommige apps die zijn gebouwd voor de betaalde edities van Mattermost controleren zelf op een licentie en weigeren dan te draaien.
  • Namen. Teams worden in het interface communities genoemd, maar de API en de code zeggen nog steeds team. Omgevingsvariabelen gebruiken het voorvoegsel AM_, het command-line-gereedschap is amctl en het serverbinair is antimatter.

Waar de code staat

Alles is open source, in de AntimatterChat-organisatie op GitHub. Elke repository werkt op de main-branch.

RepositoryInhoud
antimatterDe server (Go, in server/), beide webinterfaces (webapp/fusion en webapp/channels), de TypeScript-client en amctl.
antimatter-dockerDe Docker-images, met de ingebouwde apps, en de compose-bestanden.
antimatter-plugin-*Eén repository per ingebouwde app: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents en metrics.
gifs-serverDe zelfgehoste GIF- en stickerdienst die door de GIFs-app wordt gebruikt.
desktop-app, mobile-app, push-proxyDe desktop- en mobiele apps, en de dienst die pushmeldingen naar telefoons doorstuurt.
antimatter.chatDeze website en de bijbehorende documentatie.
communityIssues en discussies voor elk onderdeel van Antimatter.

Voordat u begint

  • Haal een testserver op. De snelste manier is het Docker-image: zie Antimatter installeren. Om zelf aan Antimatter te werken, zie Bouwen vanuit de broncode.
  • Controleer wat de server toelaat. Verschillende integratiefuncties zijn standaard uitgeschakeld en vereisen een systeembeheerder: persoonlijke toegangstokens, bot-accounts, het overschrijven van gebruikersnamen en pictogrammen, en het uploaden van apps. Elke pagina vermeldt welke instelling nodig is.
  • Ken de URL van uw site. De voorbeelden gebruiken https://chat.example.com. Vervang dit door het adres van uw server.

In deze gids

  • De REST API: authenticatie, belangrijkste bronnen, paginering, fouten, limieten, de WebSocket, clientbibliotheken en de toevoegingen van Antimatter.
  • Webhooks: inkomende en uitgaande webhooks, payloads, bijlagen en kaarten.
  • Slash-opdrachten: aangepaste opdrachten, hun verzoek en antwoord, automatische aanvulling.
  • Bots en interactieve berichten: bot-accounts, knoppen, menu’s en dialoogvensters.
  • Apps schrijven: de plug-instructuur, serverhooks, het webapp-register, Fusion, instellingen, opslag, vertalingen en verpakking.
  • Bouwen vanuit de broncode: de server, de webinterfaces, het Docker-image en de apps.
  • Bijdragen leveren: issues, pull requests, stijl, vertalingen, beveiliging en licenties.
Vragen zijn welkom in de communitydiscussies. Meld bugs in de communityissues.