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.
| Hulpmiddel | Wat het doet | Geschikt voor |
|---|---|---|
| REST API | Alles wat apps doen: berichten, kanalen, personen, bestanden, instellingen. Een WebSocket stuurt gebeurtenissen terwijl ze plaatsvinden. | Scripts, synchronisatie met andere systemen, aangepaste clients. |
| Inkomende webhooks | Een beveiligde URL die een bericht naar een kanaal post wanneer er JSON wordt verstuurd. | Alerts, CI-resultaten, monitoring, meldingen van andere tools. |
| Uitgaande webhooks | Antimatter 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-opdrachten | Mensen typen /something; Antimatter belt uw URL en toont uw antwoord aan hen of aan het kanaal. | Opzoeken, acties die vanuit de chat worden gestart. |
| Bots | Accounts 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 versie12.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.Client4en de TypeScript-client@mattermost/client(zie Clientbibliotheken). - Pluginbundles: een
.tar.gzmet eenplugin.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/clientblijft 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 voorvoegselAM_, het command-line-gereedschap isamctlen het serverbinair isantimatter.
Waar de code staat
Alles is open source, in de AntimatterChat-organisatie op GitHub. Elke repository werkt op de main-branch.
| Repository | Inhoud |
|---|---|
| antimatter | De server (Go, in server/), beide webinterfaces (webapp/fusion en webapp/channels), de TypeScript-client en amctl. |
| antimatter-docker | De 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-server | De zelfgehoste GIF- en stickerdienst die door de GIFs-app wordt gebruikt. |
| desktop-app, mobile-app, push-proxy | De desktop- en mobiele apps, en de dienst die pushmeldingen naar telefoons doorstuurt. |
| antimatter.chat | Deze website en de bijbehorende documentatie. |
| community | Issues 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.