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 yararUygun olduğu alanlar
REST APIUygulamaları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 webhooksBir ş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 webhooksAntimatter, 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.
BotlarProgramlar 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/v4 altında, kimlik doğrulaması, WebSocket'i ve hata biçimi. Sunucu sürümünü 12.0.0 olarak 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/public karşı 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.Client4 ve TypeScript istemcisi @mattermost/client (bkz. İstemci kütüphaneleri).
  • Eklenti paketleri: plugin.json betik 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/client hâ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â team der. Ortam değişkenleri AM_ öneki kullanır, komut satırı aracı amctl ve 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
antimatterSunucu (Go, server/ içinde), her iki web arayüzü (webapp/fusion ve webapp/channels), TypeScript istemcisi ve amctl.
antimatter-dockerDahili 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-serverGIFs uygulaması tarafından kullanılan, kendi kendine barındırılan GIF ve çıkartma hizmeti.
desktop-app, mobile-app, push-proxyMasaüstü ve mobil uygulamalar, iletileri telefonlara ileten bildirim hizmeti.
antimatter.chatBu web sitesi ve belgeleri.
communityAntimatter'ı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.com kullanı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.
Sorular topluluk tartışmalarında memnuniyetle karşılanır. Hataları topluluk sorunlarında bildirin.