Auf Antimatter aufbauen

Diese Anleitung richtet sich an Entwickler. Sie behandelt Skripte und Bots, die die API nutzen, Integrationen auf Basis von Webhooks und Slash-Befehlen, Apps (Plugins), die dem Server und der Web-App neue Funktionen hinzufügen, sowie das Kompilieren von Antimatter aus dem Quellcode, um zum Projekt beizutragen.

Möglichkeiten, Antimatter zu erweitern

Wählen Sie das leichteste Werkzeug, das den Job erledigt. Die ersten vier benötigen keinen Zugriff auf den Server selbst; Apps laufen innerhalb des Servers.

WerkzeugFunktionGeeignet für
REST-APIAlles, was die Apps tun: Nachrichten, Kanäle, Personen, Dateien, Einstellungen. Ein WebSocket sendet Ereignisse, wenn sie eintreten.Skripte, Synchronisation mit anderen Systemen, eigene Clients.
Eingehende WebhooksEine geheime URL, die eine Nachricht in einen Kanal sendet, wenn etwas JSON daran sendet.Warnungen, CI-Ergebnisse, Überwachung, Benachrichtigungen von anderen Tools.
Ausgehende WebhooksAntimatter ruft Ihre URL auf, wenn eine Nachricht in einem öffentlichen Kanal mit einem Triggerwort beginnt oder jemand Ihre Aktion im Menü einer Nachricht auswählt, und postet Ihre Antwort.Einfache, chatgesteuerte Automatisierungen, die eine Nachricht an ein anderes Tool senden.
Slash-BefehlePersonen tippen /something; Antimatter ruft Ihre URL auf und zeigt Ihre Antwort ihnen oder dem Kanal an.Abfragen, Aktionen, die aus dem Chat gestartet werden.
BotsKonten für Programme mit eigenen Tokens, einem BOT-Kennzeichen (AGENT für KI-Agenten) sowie interaktiven Nachrichten und Dialogen.Assistenten, Benachrichtiger, selbst ausgeführte KI-Agenten – alles, was mit Menschen kommuniziert.
Apps (Plugins)Code, der im Server (Go) und in der Web-App (React) ausgeführt wird: Hooks für jede Nachricht, neue Menüs, Panels, Nachrichtentypen, Seiten.Funktionen: Umfragen, Notizen, Kalender, Integrationen, die die Benutzeroberfläche benötigen.

In der Benutzeroberfläche nennen die Benutzer Plugins „Apps“. Diese Anleitung verwendet „Apps (Plugins)“, wenn beide Begriffe hilfreich sind, da der Code, die API und die Konfiguration weiterhin „Plugin“ sagen.

Kompatibilität mit Mattermost

Antimatter ist eine Gabelung (Fork) von Mattermost. Das meiste, was mit einem Mattermost-Server funktioniert, funktioniert auch mit Antimatter.

Was ist gleich

  • Die REST-API unter /api/v4, ihre Authentifizierung, ihr WebSocket und ihr Fehlerformat. Der Server meldet die Version 12.0.0, sodass Clients und Apps, die die Serverversion prüfen, einen aktuellen Mattermost sehen.
  • Webhooks und Slash-Befehle, einschließlich ihrer Slack-kompatiblen Payloads.
  • Die Server-Plugin-API und Hooks: Antimatter belässt diese unverändert. Servercode wird gegen dasselbe Go-Modul erstellt, github.com/mattermost/mattermost/server/public. Antimatter fügt nur Methoden für seinen KI-Dienst hinzu (siehe Der KI-Dienst).
  • Das Web-App-Plugin-Registry: Jede register…-Methode des Mattermost-Registrierungsverzeichnisses existiert in beiden Web-Schnittstellen von Antimatter.
  • Client-Bibliotheken: Der Go-Client model.Client4 und der TypeScript-Client @mattermost/client (siehe Client-Bibliotheken).
  • Plugin-Bundles: Eine .tar.gz-Datei mit einem plugin.json-Manifest. Plugins, die mit dem Mattermost-Schlüssel signiert sind, werden installiert, ebenso wie solche, die mit dem Antimatter-Schlüssel signiert sind.

Was sich unterscheidet

  • Zwei Web-Schnittstellen. Die neue Schnittstelle, Fusion, ist die Standardauswahl; die klassische Mattermost-Schnittstelle ist weiterhin verfügbar. Fusion rendert die meisten Plugin-Komponenten, platziert einige jedoch anders und lässt einige aus. Eine App kann erkennen, welche Schnittstelle ausgeführt wird. Siehe Unterstützung der Fusion-Schnittstelle.
  • Zusätzliche API. Antimatter fügt Endpunkte für seine eigenen Funktionen hinzu: Community-Attribute, Timeouts, Nachrichten oben, Nachrichten-Anfragen, Kanal- und Kategorie-Überschreibungen, Kanalexport, Verschieben von Threads, Modellverbindungen, Nachrichtenaktionen und neue Felder für Communities. Siehe Was Antimatter zur API hinzufügt.
  • Zusätzliche Nachrichtenfunktionen. Nachrichtenanhangs können Pipeline-Stufen und ein kleines Diagramm anzeigen; Beiträge können Inline-Antworten oder Spoiler sein.
  • Zusätzliche Web-App-Hooks für Apps: ein „+“-Menüelement in der Eingabezeile, Emoji-Auswahl-Tabs, ein Panel in der Kanalansicht, eine Fußzeile unter den Kanälen in der Seitenleiste, ein Eintrag auf den Integrationsseiten, die Ansichten zum Hinzufügen und Verwalten im Emoji-Auswahlmenü und ein Seitenpanel, das in einem neuen Fenster an der gleichen Position wieder geöffnet wird. Siehe Hooks, die nur Antimatter hat.
  • Keine Lizenzen. Jede Funktion ist ohne Lizenzschlüssel verfügbar. Die Endpunkte für Lizenz, Testversion und Enterprise-Upgrade sind entfernt; GET /api/v4/license/client bleibt für Clients, die danach fragen. Einige Apps, die für die kostenpflichtigen Editionen von Mattermost entwickelt wurden, prüfen selbst nach einer Lizenz und verweigern die Ausführung.
  • Namen. Teams werden in der Schnittstelle als Communities bezeichnet, aber die API und der Code sagen immer noch team. Umgebungsvariablen verwenden das Präfix AM_, das Befehlszeilen-Tool ist amctl und das Server-Binary ist antimatter.

Wo der Code liegt

Alles ist Open Source und in der AntimatterChat-Organisation auf GitHub zu finden. Jedes Repository arbeitet auf seinem main-Branch.

RepositoryInhalt
antimatterDer Server (Go, in server/), beide Web-Oberflächen (webapp/fusion und webapp/channels), der TypeScript-Client und amctl.
antimatter-dockerDie Docker-Images mit den mitgelieferten Apps sowie die Compose-Dateien.
antimatter-plugin-*Ein Repository pro mitgelieferter App: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents und metrics.
gifs-serverDer selbst gehostete GIF- und Sticker-Dienst, der von der GIF-App verwendet wird.
desktop-app, mobile-app, push-proxyDie Desktop- und Mobile-Apps sowie der Dienst, der Push-Benachrichtigungen an Telefone weiterleitet.
antimatter.chatDiese Website und ihre Dokumentation.
communityIssues und Diskussionen für alle Teile von Antimatter.

Bevor Sie beginnen

  • Testserver einrichten. Am schnellsten geht das mit dem Docker-Image: siehe Antimatter installieren. Um an Antimatter selbst zu arbeiten, siehe Aus dem Quellcode bauen.
  • Prüfen, was der Server erlaubt. Mehrere Integrationsfunktionen sind standardmäßig deaktiviert und erfordern einen Systemadministrator: persönliche Zugriffstokens, Bot-Konten, Überschreiben von Benutzernamen und Icons sowie das Hochladen von Apps. Auf jeder Seite ist angegeben, welche Einstellung erforderlich ist.
  • Die eigene Site-URL kennen. In den Beispielen wird https://chat.example.com verwendet. Ersetzen Sie dies durch die Adresse Ihres Servers.

In diesem Leitfaden

  • Die REST-API: Authentifizierung, Hauptressourcen, Paginierung, Fehler, Ratenlimits, WebSocket, Client-Bibliotheken und die Erweiterungen von Antimatter.
  • Webhooks: eingehende und ausgehende Webhooks, Payloads, Anhänge und Karten.
  • Slash-Befehle: benutzerdefinierte Befehle, deren Anfrage und Antwort, Autovervollständigung.
  • Bots und interaktive Nachrichten: Bot-Konten, externe Agenten, Schaltflächen, Menüs und Dialoge.
  • Apps schreiben: das Plugin-Layout, Server-Hooks, das Web-App-Register, Fusion, Einstellungen, Speicher, Übersetzungen und Packaging.
  • Aus dem Quellcode bauen: der Server, die Web-Oberflächen, das Docker-Image und die Apps.
  • Beitragen: Issues, Pull Requests, Stil, Übersetzungen, Sicherheit und Lizenzen.
Fragen sind in den Community-Diskussionen willkommen. Melden Sie Fehler in den Community-Issues.