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.
| Werkzeug | Funktion | Geeignet für |
|---|---|---|
| REST-API | Alles, 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 Webhooks | Eine geheime URL, die eine Nachricht in einen Kanal sendet, wenn etwas JSON daran sendet. | Warnungen, CI-Ergebnisse, Überwachung, Benachrichtigungen von anderen Tools. |
| Ausgehende Webhooks | Antimatter 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-Befehle | Personen tippen /something; Antimatter ruft Ihre URL auf und zeigt Ihre Antwort ihnen oder dem Kanal an. | Abfragen, Aktionen, die aus dem Chat gestartet werden. |
| Bots | Konten 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 Version12.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.Client4und der TypeScript-Client@mattermost/client(siehe Client-Bibliotheken). - Plugin-Bundles: Eine
.tar.gz-Datei mit einemplugin.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/clientbleibt 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äfixAM_, das Befehlszeilen-Tool istamctlund das Server-Binary istantimatter.
Wo der Code liegt
Alles ist Open Source und in der AntimatterChat-Organisation auf GitHub zu finden. Jedes Repository arbeitet auf seinem main-Branch.
| Repository | Inhalt |
|---|---|
| antimatter | Der Server (Go, in server/), beide Web-Oberflächen (webapp/fusion und webapp/channels), der TypeScript-Client und amctl. |
| antimatter-docker | Die 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-server | Der selbst gehostete GIF- und Sticker-Dienst, der von der GIF-App verwendet wird. |
| desktop-app, mobile-app, push-proxy | Die Desktop- und Mobile-Apps sowie der Dienst, der Push-Benachrichtigungen an Telefone weiterleitet. |
| antimatter.chat | Diese Website und ihre Dokumentation. |
| community | Issues 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.comverwendet. 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.