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.

StrumentoFunzioneIdeale per
REST APITutto 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 ingressoUn URL segreto che pubblica un messaggio in un canale quando qualcosa invia JSON.Avvisi, risultati CI, monitoraggio, notifiche da altri strumenti.
Webhook in uscitaAntimatter 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 barraLe persone digitano /something; Antimatter chiama il tuo URL e mostra la tua risposta a loro o al canale.Ricerche, azioni avviate dalla chat.
BotAccount 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 versione 12.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.Client4 e il client TypeScript @mattermost/client (vedi Librerie client).
  • Bundle dei plugin: un file .tar.gz con un manifesto plugin.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/client rimane 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 prefisso AM_, lo strumento da riga di comando è amctl e il binario del server è antimatter.

Dove si trova il codice

Tutto è open source, nell'organizzazione AntimatterChat su GitHub. Ogni repository opera sul ramo main.

RepositoryContenuto
antimatterIl server (in Go, in server/), entrambe le interfacce web (webapp/fusion e webapp/channels), il client TypeScript e amctl.
antimatter-dockerLe 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-serverIl servizio self-hosted per GIF e sticker utilizzato dall'app GIFs.
desktop-app, mobile-app, push-proxyLe app desktop e mobile, e il servizio che inoltra le notifiche push ai telefoni.
antimatter.chatQuesto sito web e la sua documentazione.
communityIssue 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.
Le domande sono benvenute nelle discussioni della community. Segnala i bug nelle issue della community.