在 Antimatter 上開發

本指南專為開發人員設計。內容涵蓋使用 API 的腳本與機器人、基於 Webhook 和斜線指令建立的整合、為伺服器與網頁應用程式新增功能的應用程式(外掛程式),以及從原始碼建置 Antimatter 以進行貢獻。

擴展 Antimatter 的方式

請選擇能完成任務的最輕量工具。前四種方式不需要直接存取伺服器本身;應用程式則在伺服器內部執行。

工具功能說明適用情境
REST API應用程式所能執行的一切:訊息、頻道、人員、檔案、設定。WebSocket 會在事件發生時傳送通知。腳本、與其他系統同步、自訂用戶端。
傳入 Webhook一個保密的 URL,當外部系統傳送 JSON 時,會將訊息發佈到頻道。警示、CI 結果、監控、來自其他工具的通知。
傳出 Webhook當公開頻道中的訊息以觸發詞開頭,或有人在訊息選單中選擇您的操作時,Antimatter 會呼叫您的 URL 並發布您的回覆。簡單的聊天驅動自動化,將訊息傳送至其他工具。
斜線指令使用者輸入 /something;Antimatter 會呼叫您的 URL,並將您的回應顯示給該使用者或整個頻道。查詢、從聊天啟動的操作。
機器人為程式建立的帳號,擁有獨立的令牌、機器人標籤,以及互動式訊息與對話框。助理、通知工具,或任何需要與人員互動的功能。
應用程式(外掛程式)在伺服器(Go)和網頁應用程式(React)內執行的程式碼:可掛鉤所有訊息、新增選單、面板、訊息類型和頁面。功能:投票、筆記、行事曆、需要使用者介面的整合。

在介面中,使用者稱外掛程式為「應用程式」。本指南在兩個詞都有幫助時會使用「應用程式(外掛程式)」,因為程式碼、API 和設定中仍然使用「plugin」一詞。

與 Mattermost 的相容性

Antimatter 是 Mattermost 的分支。大多數在 Mattermost 伺服器上運作的功能,在 Antimatter 上也能運作。

相同之處

  • REST API 位於 /api/v4 之下,其驗證、WebSocket 和錯誤格式均相同。伺服器報告的版本為 12.0.0,因此檢查伺服器版本的用戶端和應用程式會看到近期的 Mattermost 版本。
  • Webhook 與斜線指令,包括其相容於 Slack 的負載。
  • 伺服器外掛 API 與掛鉤:Antimatter 保持這些功能不變。伺服器程式碼基於相同的 Go 模組 github.com/mattermost/mattermost/server/public 進行建置。Antimatter 僅為其 AI 服務(請參閱 AI 服務)新增方法。
  • Web 應用程式外掛註冊表:Mattermost 註冊表中的所有 register… 方法,均存在於 Antimatter 的兩個 Web 介面中。
  • 客戶端函式庫:Go 客戶端 model.Client4 與 TypeScript 客戶端 @mattermost/client(請參閱 客戶端函式庫)。
  • 外掛套件:包含 plugin.json 清單檔的 .tar.gz 檔案。使用 Mattermost 金鑰簽章的外掛可正常安裝,使用 Antimatter 金鑰簽章的外掛亦然。

有何不同

  • 兩個 Web 介面。新介面 Fusion 為預設選項;經典的 Mattermost 介面仍可继续使用。Fusion 可呈現大多數外掛元件,但會將部分元件放置在不同位置,並略去少數元件。應用程式可偵測目前執行的介面。請參閱 支援 Fusion 介面。
  • 額外 API。 Antimatter 為其自身功能新增端點:社群屬性、逾時、頂部訊息、訊息請求、頻道與分類覆寫、頻道匯出、移動討論串、模型連線、訊息操作,以及社群上的新欄位。請參閱 Antimatter 對 API 的新增內容。
  • 額外訊息功能。訊息附件可顯示管線階段與小型圖表;貼文可為行內回覆或雷區(spoiler)。
  • 應用程式的額外 Web 應用程式掛鉤:編輯器「+」選單項目、表情符號選擇器分頁、頻道檢視中的面板、側邊欄頻道下方的頁尾、整合頁面上的項目、表情符號選擇器的新增與管理檢視,以及在新視窗中重新開啟於原位置的側邊面板。請參閱 僅 Antimatter 擁有的掛鉤。
  • 無授權。所有功能均可在無授權金鑰的情況下使用。授權、試用與企業升級端點已移除;GET /api/v4/license/client 仍保留以供需要的客戶端使用。部分為 Mattermost 付費版本建置的應用程式會自行檢查授權,若無授權則拒絕執行。
  • 命名。介面中將團隊稱為社群,但 API 與程式碼中仍使用 team。環境變數使用 AM_ 前綴,命令列工具為 amctl,伺服器二進位檔為 antimatter。

程式碼位置

所有內容皆為開源,位於 GitHub 上的 AntimatterChat 組織中。每個儲存庫皆以其 main 分支運作。

儲存庫內容
antimatter伺服器(Go,位於 server/)、兩個網頁介面(webapp/fusion 與 webapp/channels)、TypeScript 用戶端以及 amctl。
antimatter-dockerDocker 映像檔,包含內建應用程式與 compose 檔案。
antimatter-plugin-*每個內建應用程式各有一個儲存庫:polls、todo、notes、whiteboard、calendar、mail、gifs、memes、voice-channels、calls、boards(Kanban)、playbooks、agents 以及 metrics。
gifs-serverGIFs 應用程式所使用的自架 GIF 與貼圖服務。
desktop-app、mobile-app、push-proxy桌面與行動應用程式,以及將推送通知轉送至手機的服務。
antimatter.chat本網站及其文件。
communityAntimatter 各部分的問題回報與討論。

開始之前

  • 取得測試伺服器。最快的方式是使用 Docker 映像檔:請參閱安裝 Antimatter。若要開發 Antimatter 本身,請參閱從原始碼建置。
  • 確認伺服器允許的功能。部分整合功能預設為停用,且需要系統管理員權限:個人存取令牌、機器人帳號、使用者名稱與圖示覆寫,以及上傳應用程式。每個頁面都會說明所需的設定。
  • 確認您的網站 URL。範例使用 https://chat.example.com。請將其替換為您伺服器的位址。

本指南內容

  • REST API:驗證、主要資源、分頁、錯誤、速率限制、WebSocket、用戶端函式庫,以及 Antimatter 的擴充功能。
  • Webhooks:傳入與傳出 Webhook、負載、附件與卡片。
  • 斜線指令:自訂指令、其請求與回應、自動補全。
  • 機器人与互動式訊息:機器人帳號、按鈕、選單與對話框。
  • 撰寫應用程式:外掛程式結構、伺服器掛鉤、Web 應用程式註冊表、Fusion、設定、儲存、翻譯與打包。
  • 從原始碼建置:伺服器、Web 介面、Docker 映像檔與應用程式。
  • 貢獻:問題、拉取請求、風格、翻譯、安全性與授權條款。
歡迎在社群討論區提出問題。請在社群問題追蹤器中回報錯誤。