在 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-docker | Docker 映像檔,包含內建應用程式與 compose 檔案。 |
antimatter-plugin-* | 每個內建應用程式各有一個儲存庫:polls、todo、notes、whiteboard、calendar、mail、gifs、memes、voice-channels、calls、boards(Kanban)、playbooks、agents 以及 metrics。 |
| gifs-server | GIFs 應用程式所使用的自架 GIF 與貼圖服務。 |
| desktop-app、mobile-app、push-proxy | 桌面與行動應用程式,以及將推送通知轉送至手機的服務。 |
| antimatter.chat | 本網站及其文件。 |
| community | Antimatter 各部分的問題回報與討論。 |
開始之前
- 取得測試伺服器。最快的方式是使用 Docker 映像檔:請參閱安裝 Antimatter。若要開發 Antimatter 本身,請參閱從原始碼建置。
- 確認伺服器允許的功能。部分整合功能預設為停用,且需要系統管理員權限:個人存取令牌、機器人帳號、使用者名稱與圖示覆寫,以及上傳應用程式。每個頁面都會說明所需的設定。
- 確認您的網站 URL。範例使用
https://chat.example.com。請將其替換為您伺服器的位址。