Antimatter Üzerinde Geliştirme
Bu kılavuz geliştiriciler içindir. API kullanan betik ve botları, webhooks ve slash komutları üzerine kurulan entegrasyonları, sunucuya ve web uygulamasına özellik ekleyen uygulamaları (eklentileri) ve Antimatter'ı kaynaktan derleyerek ona katkıda bulunmayı kapsar.
Antimatter'ı genişletme yolları
İşi gören en hafif aracı seçin. İlk dört seçenek sunucuya doğrudan erişim gerektirmez; uygulamalar ise sunucunun içinde çalışır.
| Araç | Ne işe yarar | Uygun olduğu alanlar |
|---|---|---|
| REST API | Uygulamaların yaptığı her şey: iletiler, kanallar, kişiler, dosyalar, ayarlar. WebSocket, olaylar gerçekleştiğinde bunları gönderir. | Betikler, diğer sistemlerle senkronizasyon, özel istemciler. |
| Gelen webhooks | Bir şey JSON gönderdiğinde bir kanala ileti gönderen gizli bir URL. | Uyarılar, CI sonuçları, izleme, diğer araçlardan gelen bildirimler. |
| Giden webhooks | Antimatter, herkese açık bir kanaldaki bir ileti tetikleyici bir kelimeyle başladığında veya birinin bir iletinin menüsünde eyleminizi seçtiğinde URL'nizi çağırır ve yanıtınızı gönderir. | Basit sohbet tabanlı otomasyonlar, başka bir araca iletme gönderme. |
| Slash komutları | Kişiler /something yazar; Antimatter URL'inizi çağırır ve yanıtınızı onlara veya kanala gösterir. | Aramalar, sohbetten başlatılan işlemler. |
| Botlar | Programlar için oluşturulan, kendi jetonlarına, BOT etiketine ve etkileşimli iletiler ile diyaloglara sahip hesaplar. | Asistanlar, bildirimciler, insanlarla konuşan her şey. |
| Uygulamalar (eklentiler) | Sunucuda (Go) ve web uygulamasında (React) çalışan kod: her iletide kanca (hook), yeni menüler, paneller, ileti türleri, sayfalar. | Özellikler: anketler, notlar, takvimler, kullanıcı arayüzüne ihtiyaç duyan entegrasyonlar. |
Arayüzde kişiler eklentilere "uygulama" der. Bu kılavuz, kodun, API'nin ve yapılandırmanın hâlâ "plugin" (eklenti) demesi nedeniyle, her iki kelimenin de yardımcı olduğu yerlerde "uygulamalar (eklentiler)" ifadesini kullanır.
Mattermost ile uyumluluk
Antimatter, Mattermost'un bir çatallanmasıdır (fork). Mattermost sunucusuyla çalışan çoğu şey Antimatter ile de çalışır.
Ne aynıdır
- REST API
/api/v4altında, kimlik doğrulaması, WebSocket'i ve hata biçimi. Sunucu sürümünü12.0.0olarak bildirir, bu nedenle sunucu sürümünü denetleyen istemciler ve uygulamalar güncel bir Mattermost görür. - Webhook'ler ve slash komutları, Slack ile uyumlu yükleri (payload) dahil.
- Sunucu eklenti API'si ve kancaları: Antimatter bunları olduğu gibi korur. Sunucu kodu aynı Go modülüne,
github.com/mattermost/mattermost/server/publickarşı geliştirilir. Antimatter yalnızca AI hizmeti için (bkz. AI hizmeti) yöntemler ekler. - Web uygulaması eklenti kayıt defteri (registry): Mattermost'un kayıt defterindeki her
register…metodu, Antimatter'ın her iki web arayüzünde de mevcuttur. - İstemci kütüphaneleri: Go istemcisi
model.Client4ve TypeScript istemcisi@mattermost/client(bkz. İstemci kütüphaneleri). - Eklenti paketleri:
plugin.jsonbetik dosyası (manifest) içeren bir.tar.gz. Mattermost'un anahtarıyla imzalanan eklentiler, Antimatter'ın anahtarıyla imzalananlar gibi kurulabilir.
Farklı olanlar
- İki web arayüzü. Yeni arayüz olan Fusion varsayılandır; klasik Mattermost arayüzü hâlâ kullanılabilir. Fusion, eklenti bileşenlerinin çoğunu çizer, ancak bazıları farklı konumlara yerleştirilir ve birkaçı hariç tutulur. Bir uygulama, hangi arayüzün çalıştığını tespit edebilir. Bkz. Fusion arayüzünü destekleme.
- Ek API. Antimatter kendi özellikleri için uç noktalar ekler: topluluk nitelikleri, zaman aşımları, üstteki iletiler, iletme istekleri, kanal ve kategori geçersiz kılma, kanal dışa aktarma, konuları taşıma, model bağlantıları, iletme eylemleri ve topluluklardaki yeni alanlar. Bkz. Antimatter'ın API'ye ekledikleri.
- Ek mesaj özellikleri. Mesaj ekleri (attachment) iş akışı aşamalarını ve küçük bir grafik gösterebilir; gönderiler satır içi yanıtlar veya spoiler olabilir.
- Uygulamalar için ek web uygulaması kancaları: bir kompozitör "+" menü öğesi, emoji seçici sekmeleri, kanal görünümünde bir panel, kenar çubuğu kanallarının altında bir alt bilgi, entegrasyon sayfalarında bir giriş, emoji seçicisinin ekleme ve yönetme görünümleri ve yeni bir pencerede kaldığı yerden yeniden açılan bir yan panel. Bkz. Yalnızca Antimatter'ın sahip olduğu kancalar.
- Lisans yok. Her özellik, lisans anahtarı olmadan kullanılabilir. Lisans, deneme ve kurumsal yükseltme uç noktaları kaldırılmıştır; isteyen istemciler için
GET /api/v4/license/clienthâlâ mevcuttur. Mattermost'un ücretli sürümleri için geliştirilen bazı uygulamalar, lisansı kendileri denetler ve çalışmayı reddeder. - İsimler. Arayüzde takımlar (team) topluluk (community) olarak adlandırılır, ancak API ve kod hâlâ
teamder. Ortam değişkenleriAM_öneki kullanır, komut satırı aracıamctlve sunucu ikili dosyası (binary)antimatter'dır.
Kodun bulunduğu yer
Her şey açık kaynaklıdır ve GitHub'taki AntimatterChat kuruluşunda yer alır. Her depo, main dalında çalışır.
| Depo | İçeriği |
|---|---|
| antimatter | Sunucu (Go, server/ içinde), her iki web arayüzü (webapp/fusion ve webapp/channels), TypeScript istemcisi ve amctl. |
| antimatter-docker | Dahili uygulamalarla birlikte Docker görüntüleri ve compose dosyaları. |
antimatter-plugin-* | Her dahili uygulama için bir depo: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents ve metrics. |
| gifs-server | GIFs uygulaması tarafından kullanılan, kendi kendine barındırılan GIF ve çıkartma hizmeti. |
| desktop-app, mobile-app, push-proxy | Masaüstü ve mobil uygulamalar, iletileri telefonlara ileten bildirim hizmeti. |
| antimatter.chat | Bu web sitesi ve belgeleri. |
| community | Antimatter'ın her bölümü için sorunlar ve tartışmalar. |
Başlamadan önce
- Test sunucusu edinin. En hızlı yol Docker görüntüsüdür: Antimatter'ı Yükleme bölümüne bakın. Antimatter'ın kendisi üzerinde çalışmak için Kaynaktan Derleme bölümüne bakın.
- Sunucunun neye izin verdiğini kontrol edin. Birkaç entegrasyon özelliği varsayılan olarak kapalıdır ve sistem yöneticisi gerektirir: kişisel erişim jetonları, bot hesapları, kullanıcı adı ve simge geçersiz kılma, uygulama yükleme. Her sayfa, hangi ayarı gerektirdiğini belirtir.
- Sitenizin URL'sini bilin. Örneklerde
https://chat.example.comkullanılır. Bunu sunucunuzun adresiyle değiştirin.
Bu kılavuzda
- REST API: kimlik doğrulama, ana kaynaklar, sayfalama, hatalar, hız sınırları, WebSocket, istemci kütüphaneleri ve Antimatter'ın ekleri.
- Webhook'lar: gelen ve giden webhook'lar, yükler, ek dosyalar ve kartlar.
- Slash komutları: özel komutlar, istek ve yanıtları, otomatik tamamlama.
- Botlar ve etkileşimli iletiler: bot hesapları, düğmeler, menüler ve diyaloglar.
- Uygulama yazma: eklenti düzeni, sunucu kancaları, web uygulaması kayıt defteri, Fusion, ayarlar, depolama, çeviriler ve paketleme.
- Kaynaktan derleme: sunucu, web arayüzleri, Docker görüntüsü ve uygulamalar.
- Katkıda bulunma: sorunlar, çekme istekleri, stil, çeviriler, güvenlik ve lisanslar.