Sviluppo su Antimatter
Questa guida è destinata agli sviluppatori. Copre script e bot che utilizzano l'API, integrazioni basate su webhook e comandi con barra, app (plugin) che aggiungono funzionalità al server e all'app web, e la compilazione di Antimatter da sorgente per contribuire al progetto.
Metodi per estendere Antimatter
Scegli lo strumento più leggero che svolga il compito. I primi quattro non richiedono accesso al server stesso; le app vengono eseguite all'interno di esso.
| Strumento | Funzione | Ideale per |
|---|---|---|
| REST API | Tutto ciò che le app fanno: messaggi, canali, utenti, file, impostazioni. Un WebSocket invia eventi man mano che si verificano. | Script, sincronizzazione con altri sistemi, client personalizzati. |
| Webhook in ingresso | Un URL segreto che pubblica un messaggio in un canale quando qualcosa invia JSON. | Avvisi, risultati CI, monitoraggio, notifiche da altri strumenti. |
| Webhook in uscita | Antimatter invia una richiesta al tuo URL quando un messaggio in un canale pubblico inizia con una parola di attivazione, o quando qualcuno seleziona la tua azione nel menu di un messaggio, e pubblica la tua risposta. | Automazioni semplici basate sulla chat, che inviano un messaggio a un altro strumento. |
| Comandi con barra | Le persone digitano /something; Antimatter chiama il tuo URL e mostra la tua risposta a loro o al canale. | Ricerche, azioni avviate dalla chat. |
| Bot | Account creati per i programmi, con i propri token, un tag BOT, e messaggi e dialoghi interattivi. | Assistenti, notifica, qualsiasi cosa che comunichi con le persone. |
| App (plugin) | Codice che viene eseguito all'interno del server (Go) e nell'app web (React): hook su ogni messaggio, nuovi menu, pannelli, tipi di messaggio, pagine. | Funzionalità: sondaggi, note, calendari, integrazioni che richiedono l'interfaccia utente. |
Nell'interfaccia, gli utenti chiamano i plugin "app". Questa guida usa "app (plugin)" dove entrambe le parole sono utili, perché il codice, l'API e la configurazione continuano a dire "plugin".
Compatibilità con Mattermost
Antimatter è un fork di Mattermost. La maggior parte di ciò che funziona con un server Mattermost funziona anche con Antimatter.
Cosa è identico
- La REST API sotto
/api/v4, la sua autenticazione, il suo WebSocket e il suo formato di errore. Il server riporta la versione12.0.0, quindi i client e le app che verificano la versione del server vedono una versione recente di Mattermost. - Webhook e comandi con barra, inclusi i relativi payload compatibili con Slack.
- L'API e gli hook del plugin del server: Antimatter li mantiene invariati. Il codice del server viene compilato contro lo stesso modulo Go,
github.com/mattermost/mattermost/server/public. Antimatter aggiunge solo metodi per il suo servizio AI (vedi Il servizio AI). - Il registro dei plugin per l'app web: tutti i metodi
register…del registro di Mattermost sono presenti in entrambi gli interfacce web di Antimatter. - Librerie client: il client Go
model.Client4e il client TypeScript@mattermost/client(vedi Librerie client). - Bundle dei plugin: un file
.tar.gzcon un manifestoplugin.json. I plugin firmati con la chiave di Mattermost vengono installati, così come quelli firmati con la chiave di Antimatter.
Cosa è diverso
- Due interfacce web. La nuova interfaccia, Fusion, è quella predefinita; l'interfaccia classica di Mattermost è ancora disponibile. Fusion renderizza la maggior parte dei componenti dei plugin, ma ne posiziona alcuni in modo diverso e ne esclude alcuni. Un'app può rilevare quale interfaccia è in esecuzione. Vedi Supporto per l'interfaccia Fusion.
- API aggiuntiva. Antimatter aggiunge endpoint per le sue funzionalità: attributi della community, timeout, messaggi in cima, richieste di messaggio, sovrascritture di canale e categoria, esportazione del canale, spostamento dei thread, connessioni ai modelli, azioni sui messaggi e nuovi campi sulle community. Vedi Cosa Antimatter aggiunge all'API.
- Funzionalità aggiuntive dei messaggi. Gli allegati dei messaggi possono mostrare le fasi di una pipeline e un piccolo grafico; i post possono essere risposte inline o spoiler.
- Hook aggiuntivi per l'app web per le app: un elemento nel menu "+" del compositore, schede nel selettore di emoji, un pannello nella vista del canale, un piè di pagina sotto i canali nella barra laterale, una voce nelle pagine di integrazione, le viste di aggiunta e gestione del selettore di emoji, e un pannello laterale che si riapre nella posizione in cui si trovava in una nuova finestra. Vedi Hook presenti solo in Antimatter.
- Nessuna licenza. Ogni funzionalità è disponibile senza una chiave di licenza. Gli endpoint per licenza, prova e aggiornamento a Enterprise sono stati rimossi;
GET /api/v4/license/clientrimane per i client che lo richiedono. Alcune app create per le edizioni a pagamento di Mattermost verificano la licenza autonomamente e si rifiutano di essere eseguite. - Nomi. I team sono chiamati community nell'interfaccia, ma l'API e il codice continuano a usare il termine
team. Le variabili d'ambiente usano il prefissoAM_, lo strumento da riga di comando èamctle il binario del server èantimatter.
Dove si trova il codice
Tutto è open source, nell'organizzazione AntimatterChat su GitHub. Ogni repository opera sul ramo main.
| Repository | Contenuto |
|---|---|
| antimatter | Il server (in Go, in server/), entrambe le interfacce web (webapp/fusion e webapp/channels), il client TypeScript e amctl. |
| antimatter-docker | Le immagini Docker, con le app integrate, e i file compose. |
antimatter-plugin-* | Un repository per ogni app integrata: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents e metrics. |
| gifs-server | Il servizio self-hosted per GIF e sticker utilizzato dall'app GIFs. |
| desktop-app, mobile-app, push-proxy | Le app desktop e mobile, e il servizio che inoltra le notifiche push ai telefoni. |
| antimatter.chat | Questo sito web e la sua documentazione. |
| community | Issue e discussioni per ogni parte di Antimatter. |
Prima di iniziare
- Prepara un server di test. Il metodo più rapido è l'immagine Docker: consulta Installazione di Antimatter. Per lavorare su Antimatter stesso, consulta Compilazione da sorgente.
- Verifica le autorizzazioni del server. Diverse funzionalità di integrazione sono disabilitate di default e richiedono un amministratore di sistema: token di accesso personali, account bot, override di nome utente e icona, e caricamento delle app. Ogni pagina indica quale impostazione è necessaria.
- Conosci l'URL del tuo sito. Gli esempi utilizzano
https://chat.example.com. Sostituiscilo con l'indirizzo del tuo server.
In questa guida
- API REST: autenticazione, risorse principali, paginazione, errori, limiti di frequenza, WebSocket, librerie client e le estensioni di Antimatter.
- Webhook: webhook in entrata e in uscita, payload, allegati e schede.
- Comandi con barra: comandi personalizzati, la loro richiesta e risposta, completamento automatico.
- Bot e messaggi interattivi: account bot, pulsanti, menu e dialoghi.
- Scrittura di app: struttura dei plugin, hook del server, registro delle app web, Fusion, impostazioni, archiviazione, traduzioni e packaging.
- Compilazione da sorgente: il server, le interfacce web, l'immagine Docker e le app.
- Contributi: issue, pull request, stile, traduzioni, sicurezza e licenze.