Ανάπτυξη στο Antimatter
Αυτός ο οδηγός απευθύνεται σε προγραμματιστές. Καλύπτει σενάρια και bots που χρησιμοποιούν το API, ενσωματώσεις βασισμένες σε webhooks και εντολές καθέτου, εφαρμογές (plugins) που προσθέτουν λειτουργίες στον διακομιστή και την εφαρμογή του web, καθώς και τη δημιουργία του Antimatter από πηγαίο κώδικα για συνεισφορά.
Τρόποι επέκτασης του Antimatter
Επιλέξτε το ελαφρύτερο εργαλείο που εκτελεί τη δουλειά. Τα τέσσερα πρώτα δεν απαιτούν πρόσβαση στον ίδιο τον διακομιστή· οι εφαρμογές εκτελούνται εντός του.
| Εργαλείο | Λειτουργία | Κατάλληλο για |
|---|---|---|
| REST API | Ό,τι κάνουν οι εφαρμογές: μηνύματα, κανάλια, χρήστες, αρχεία, ρυθμίσεις. Ένα WebSocket στέλνει συμβάντα καθώς συμβαίνουν. | Σενάρια, συγχρονισμός με άλλα συστήματα, προσαρμοσμένοι πελάτες. |
| Εισερχόμενα webhooks | Ένα μυστικό URL που δημοσιεύει μήνυμα σε κανάλι όταν κάτι το στέλνει JSON. | Ειδοποιήσεις, αποτελέσματα CI, παρακολούθηση, ειδοποιήσεις από άλλα εργαλεία. |
| Εξερχόμενα webhooks | Το Antimatter καλεί το URL σας όταν ένα μήνυμα σε ένα δημόσιο κανάλι ξεκινά με μια λέξη-κλειδί ενεργοποίησης ή όταν κάποιος επιλέγει τη δική σας ενέργεια από το μενού ενός μηνύματος, και δημοσιεύει την απάντησή σας. | Απλές αυτοματισμοί με βάση τη συνομιλία, στέλνοντας ένα μήνυμα σε ένα άλλο εργαλείο. |
| Εντολές καθέτου | Οι χρήστες πληκτρολογούν /something· το Antimatter καλεί το URL σας και τους δείχνει την απάντησή σας ή την δημοσιεύει στο κανάλι. | Αναζήτες, ενέργειες που ξεκινούν από τη συνομιλία. |
| Bots | Λογαριασμοί προορισμένοι για προγράμματα, με τα δικά τους διακριτικά (tokens), μια ετικέτα BOT (ΠΡΑΚΤΟΡΑΣ για πράκτορες AI) και διαδραστικά μηνύματα και παράθυρα διαλόγου. | Βοηθοί, ειδοποιητήρες, πράκτορες AI που εκτελείτε μόνοι σας, οτιδήποτε επικοινωνεί με ανθρώπους. |
| Εφαρμογές (plugins) | Κώδικας που εκτελείται εντός του διακομιστή (Go) και της εφαρμογής του web (React): hooks σε κάθε μήνυμα, νέα μενού, πάνελ, τύποι μηνυμάτων, σελίδες. | Λειτουργίες: ψηφοφορίες, σημειώσεις, ημερολόγια, ενσωματώσεις που απαιτούν το περιβάλλον χρήστη. |
Στο περιβάλλον, οι χρήστες αποκαλούν τα plugins «εφαρμογές». Ο οδηγός αυτός λέει «εφαρμογές (plugins)» όπου και οι δύο λέξεις βοηθούν, επειδή ο κώδικας, το API και η διαμόρφωση εξακολουθούν να λένε «plugin».
Συμβατότητα με Mattermost
Το Antimatter είναι fork του Mattermost. Ό,τι λειτουργεί με έναν διακομιστή Mattermost, λειτουργεί και με το Antimatter.
Τι είναι ίδιο
- Το REST API κάτω από
/api/v4, η ελέγχου της, το WebSocket της και το μορφή σφαλμάτων της. Ο διακομιστής αναφέρει έκδοση12.0.0, οπότε πελάτες και εφαρμογές που ελέγχουν την έκδοση του διακομιστή βλέπουν ένα πρόσφατο Mattermost. - Webhooks και εντολές καθέτου, συμπεριλαμβανομένων των φορτίων (payloads) συμβατών με το Slack.
- Το API πρόσθετων του διακομιστή και τα hooks: Το Antimatter τα διατηρεί ως έχουν. Ο κώδικας του διακομιστή δομείται με βάση την ίδια ενότητα Go,
github.com/mattermost/mattermost/server/public. Το Antimatter προσθέτει μόνο μεθόδους, για την υπηρεσία AI (δείτε Η υπηρεσία AI). - Το μητρώο plugins της web εφαρμογής: κάθε μέθοδος
register…του μητρώου του Mattermost υπάρχει και στις δύο web διεπαφές του Antimatter. - Βιβλιοθήκες πελάτη: ο Go client
model.Client4και ο TypeScript client@mattermost/client(βλ. Βιβλιοθήκες πελάτη). - Δέσμευματα (bundles) plugins: ένα
.tar.gzμε ένα manifestplugin.json. Τα plugins υπογεγραμμένα με το κλειδί του Mattermost εγκαθίστανται, όπως και αυτά που είναι υπογεγραμμένα με το κλειδί του Antimatter.
Τι διαφέρει
- Δύο web διεπαφές. Η νέα διεπαφή, Fusion, είναι η προεπιλογή· η κλασική διεπαφή του Mattermost παραμένει διαθέσιμη. Η Fusion αποδίδει (renders) τα περισσότερα στοιχεία των plugins, αλλά τοποθετεί ορισμένα από αυτά διαφορετικά και παραλείπει λίγα. Μια εφαρμογή μπορεί να διαπιστώσει ποια διεπαφή εκτελείται. Βλ. Υποστήριξη της διεπαφής Fusion.
- Επιπλέον API. Το Antimatter προσθέτει endpoints για τις δικές του λειτουργίες: χαρακτηριστικά κοινότητας, χρονικά όρια (timeouts), μηνύματα κορυφής, αιτήματα μηνυμάτων, παρακάμψεις καναλιών και κατηγοριών, εξαγωγή καναλιών, μετακίνηση νημάτων, συνδέσεις μοντέλων, ενέργειες μηνυμάτων και νέα πεδία στις κοινότητες. Δείτε Τι προσθέτει το Antimatter στο API.
- Επιπλέον χαρακτηριστικά μηνυμάτων. Τα συνημμένα των μηνυμάτων μπορούν να εμφανίζουν στάδια γραμμής παραγωγής (pipeline) και ένα μικρό διάγραμμα· τα μηνύματα (posts) μπορούν να είναι απαντήσεις εντός του κύριου ρεύματος (inline replies) ή αποκάλυψες (spoilers).
- Επιπλέον hooks της εφαρμογής web για εφαρμογές: ένα στοιχείο μενού "+" στη γραμμή σύνταξης, καρτέλες επιλογέα emoji, ένας πίνακας προβολής στο κανάλι, ένα υποσέλιδο κάτω από τα κανάλια της πλευρικής στήλης, μια καταχώρηση στις σελίδες ενσωματώσεων, οι προβολές προσθήκης και διαχείρισης του επιλογέα emoji, και ένας πλευρικός πίνακας που ανοίγει ξανά εκεί που βρισκόταν σε ένα νέο παράθυρο. Δείτε Hooks που διαθέτει μόνο το Antimatter.
- Χωρίς άδειες (licences). Κάθε χαρακτηριστικό είναι διαθέσιμο χωρίς κλειδί άδειας. Τα τελεία (endpoints) για άδεια, δοκιμαστική περίοδο και αναβάθμιση σε έκδοση enterprise έχουν αφαιρεθεί· το
GET /api/v4/license/clientπαραμένει για τους πελάτες που το ζητούν. Ορισμένες εφαρμογές που δημιουργήθηκαν για τις πληρωμένες εκδόσεις του Mattermost ελέγχουν την άδεια από μόνες τους και αρνούνται να εκτελεστούν. - Ονομασίες. Οι ομάδες (teams) ονομάζονται κοινότητες (communities) στη διεπαφή, αλλά το API και ο κώδικας εξακολουθούν να χρησιμοποιούν τον όρο
team. Οι μεταβλητές περιβάλλοντος χρησιμοποιούν το πρόθεμαAM_, το εργαλείο γραμμής εντολών είναιamctlκαι το αρχείο εκτέλεσης (binary) του server είναιantimatter.
Πού βρίσκεται ο κώδικας
Όλα είναι ανοιχτού κώδικα, στην οργάνωση AntimatterChat στο GitHub. Κάθε αποθετήριο λειτουργεί στον κλάδο main.
| Αποθετήριο | Περιεχόμενο |
|---|---|
| antimatter | Ο διακομιστής (Go, στο server/), και τα δύο web interfaces (webapp/fusion και webapp/channels), ο TypeScript client και το amctl. |
| antimatter-docker | Τα Docker images, με τις ενσωματωμένες εφαρμογές, και τα compose files. |
antimatter-plugin-* | Ένα αποθετήριο για κάθε ενσωματωμένη εφαρμογή: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents και metrics. |
| gifs-server | Η αυτοξενούμενη υπηρεσία GIF και sticker που χρησιμοποιείται από την εφαρμογή GIFs. |
| desktop-app, mobile-app, push-proxy | Οι εφαρμογές για desktop και mobile, και η υπηρεσία που μεσολαβεί για τις push ειδοποιήσεις στα τηλέφωνα. |
| antimatter.chat | Αυτός ο ιστότοπος και η τεκμηρίωσή του. |
| community | Ζητήματα και συζητήσεις για κάθε μέρος του Antimatter. |
Πριν ξεκινήσετε
- Προμηθευτείτε έναν δοκιμαστικό διακομιστή. Ο πιο γρήγορος τρόπος είναι μέσω της εικόνας Docker: δείτε Εγκατάσταση του Antimatter. Για να εργαστείτε στο ίδιο το Antimatter, δείτε Δημιουργία από πηγαίο κώδικα.
- Ελέγξτε τι επιτρέπει ο διακομιστής. Πολλές λειτουργίες ενσωμάτωσης είναι απενεργοποιημένες από προεπιλογή και απαιτούν διαχειριστή συστήματος: προσωπικά διακριτικά πρόσβασης, λογαριασμοί bot, αλλαγές ονόματος χρήστη και εικονιδίου, και ανέβασμα εφαρμογών. Κάθε σελίδα αναφέρει ποια ρύθμιση απαιτείται.
- Γνωρίζετε τη διεύθυνση URL του δικτυακού σας τόπου. Τα παραδείγματα χρησιμοποιούν
https://chat.example.com. Αντικαταστήστε το με τη διεύθυνση του δικού σας διακομιστή.
Σε αυτόν τον οδηγό
- Το REST API: πειστοποίηση, κύριοι πόροι, σελιδοποίηση, σφάλματα, όρια ρυθμού, το WebSocket, βιβλιοθήκες πελάτη και οι προσθήκες του Antimatter.
- Webhooks: εισερχόμενα και εξερχόμενα webhooks, φορτία, συνημμένα και κάρτες.
- Εντολές καθέτου: προσαρμοσμένες εντολές, το αίτημά τους και η απόκριση, αυτόματη συμπλήρωση.
- Bots και διαδραστικά μηνύματα: λογαριασμοί bots, εξωτερικοί πράκτορες, κουμπιά, μενού και παράθυρα διαλόγου.
- Γραφή εφαρμογών: η δομή του plugin, οι server hooks, το μητρώο web app, το Fusion, ρυθμίσεις, αποθήκευση, μεταφράσεις και συσκευασία.
- Δημιουργία από πηγαίο κώδικα: ο διακομιστής, οι web διεπαφές, η εικόνα Docker και οι εφαρμογές.
- Συνεισφορά: ζητήματα, pull requests, στυλ, μεταφράσεις, ασφάλεια και άδειες.