Xây dựng trên Antimatter

Hướng dẫn này dành cho nhà phát triển. Nội dung bao gồm các script và bot sử dụng API, các tích hợp dựa trên webhook và lệnh gạch chéo, các ứng dụng (plugin) thêm tính năng cho máy chủ và ứng dụng web, cũng như cách xây dựng Antimatter từ mã nguồn để đóng góp cho dự án.

Các cách mở rộng Antimatter

Hãy chọn công cụ tối giản nhất có thể đáp ứng yêu cầu. Bốn công cụ đầu tiên không cần quyền truy cập vào chính máy chủ; các ứng dụng (apps) thì chạy bên trong máy chủ.

Công cụChức năngPhù hợp cho
REST APIMọi thứ mà các ứng dụng thực hiện: tin nhắn, kênh, người dùng, tệp, cài đặt. WebSocket gửi sự kiện khi chúng xảy ra.Script, đồng bộ hóa với các hệ thống khác, client tùy chỉnh.
Webhook đếnMột URL bí mật gửi tin nhắn đến kênh khi có hệ thống khác gửi JSON đến đó.Báo cáo sự cố, kết quả CI, giám sát, thông báo từ các công cụ khác.
Webhook điAntimatter gọi URL của bạn khi một tin nhắn trong kênh công khai bắt đầu bằng từ kích hoạt, hoặc khi ai đó chọn hành động của bạn trong menu của tin nhắn, và đăng tải câu trả lời của bạn.Tự động hóa đơn giản dựa trên chat, gửi tin nhắn đến công cụ khác.
Lệnh gạch chéoNgười dùng nhập /something; Antimatter gọi URL của bạn và hiển thị câu trả lời của bạn cho họ hoặc cho kênh.Tra cứu, các hành động bắt đầu từ chat.
BotTài khoản dành cho chương trình, có token riêng, thẻ BOT, và tin nhắn tương tác cùng hộp thoại.Trợ lý, hệ thống thông báo, bất kỳ thứ gì giao tiếp với người dùng.
Ứng dụng (plugin)Mã chạy bên trong máy chủ (Go) và trong ứng dụng web (React): hook cho mọi tin nhắn, menu mới, bảng điều khiển, loại tin nhắn, trang.Tính năng: bình chọn, ghi chú, lịch, tích hợp cần giao diện người dùng.

Trong giao diện, người dùng gọi plugin là "ứng dụng". Hướng dẫn này dùng "ứng dụng (plugin)" khi cả hai từ đều hữu ích, vì mã nguồn, API và cấu hình vẫn dùng từ "plugin".

Tương thích với Mattermost

Antimatter là bản phân nhánh (fork) của Mattermost. Hầu hết những gì hoạt động với máy chủ Mattermost cũng hoạt động với Antimatter.

Những gì giống nhau

  • REST API tại /api/v4, cùng với xác thực, WebSocket và định dạng lỗi. Máy chủ báo phiên bản 12.0.0, do đó các client và ứng dụng kiểm tra phiên bản máy chủ sẽ thấy một phiên bản Mattermost gần đây.
  • Webhook và lệnh gạch chéo, bao gồm các payload tương thích với Slack.
  • API và hooks của plugin máy chủ: Antimatter giữ nguyên các thành phần này. Mã nguồn máy chủ được xây dựng dựa trên cùng một Go module, github.com/mattermost/mattermost/server/public. Antimatter chỉ thêm các phương thức cho dịch vụ AI của nó (xem Dịch vụ AI).
  • Registry của plugin ứng dụng web: mọi phương thức register… của registry Mattermost đều có mặt trong cả hai giao diện web của Antimatter.
  • Thư viện client: client Go model.Client4 và client TypeScript @mattermost/client (xem Thư viện client).
  • Gói plugin: một tệp .tar.gz chứa tệp plugin.json. Các plugin được ký bằng khóa của Mattermost có thể được cài đặt, cũng như các plugin được ký bằng khóa của Antimatter.

Những điểm khác biệt

  • Hai giao diện web. Giao diện mới, Fusion, là mặc định; giao diện Mattermost cổ điển vẫn khả dụng. Fusion hiển thị hầu hết các thành phần plugin, nhưng đặt một số ở vị trí khác và bỏ qua một vài thành phần. Ứng dụng có thể xác định giao diện nào đang chạy. Xem Hỗ trợ giao diện Fusion.
  • API bổ sung. Antimatter thêm các endpoint cho các tính năng riêng: thuộc tính cộng đồng, thời gian chờ, tin nhắn nổi bật, yêu cầu tin nhắn, ghi đè kênh và danh mục, xuất kênh, di chuyển chủ đề, kết nối mô hình, hành động tin nhắn và các trường mới trên cộng đồng. Xem Những gì Antimatter thêm vào API.
  • Tính năng tin nhắn bổ sung. Tệp đính kèm trong tin nhắn có thể hiển thị các giai đoạn của pipeline và một biểu đồ nhỏ; bài đăng có thể là trả lời trực tiếp hoặc spoiler.
  • Web app hooks bổ sung cho ứng dụng: mục trong menu "+" của trình soạn thảo, tab trong trình chọn biểu tượng cảm xúc, panel trong chế độ xem kênh, phần dưới cùng bên dưới các kênh trong thanh bên, mục trên các trang tích hợp, chế độ xem thêm và quản lý trong trình chọn biểu tượng cảm xúc, và panel bên có thể mở lại ở vị trí cũ trong cửa sổ mới. Xem Các hook chỉ có trong Antimatter.
  • Không có giấy phép. Mọi tính năng đều khả dụng mà không cần khóa giấy phép. Các điểm cuối (endpoint) cho giấy phép, bản dùng thử và nâng cấp lên bản doanh nghiệp đã bị loại bỏ; GET /api/v4/license/client vẫn được giữ lại cho các client có yêu cầu. Một số ứng dụng được xây dựng cho các bản trả phí của Mattermost sẽ tự kiểm tra giấy phép và từ chối chạy.
  • Tên gọi. Trong giao diện, các team được gọi là cộng đồng, nhưng API và mã nguồn vẫn sử dụng từ team. Các biến môi trường sử dụng tiền tố AM_, công cụ dòng lệnh là amctl và tệp nhị phân của máy chủ là antimatter.

Vị trí mã nguồn

Tất cả đều là mã nguồn mở, nằm trong tổ chức AntimatterChat trên GitHub. Mọi kho lưu trữ (repository) đều hoạt động trên nhánh main.

Kho lưu trữNội dung
antimatterMáy chủ (viết bằng Go, nằm trong server/), cả hai giao diện web (webapp/fusion và webapp/channels), client TypeScript và amctl.
antimatter-dockerCác ảnh Docker, kèm theo các ứng dụng tích hợp sẵn, và các tệp compose.
antimatter-plugin-*Mỗi ứng dụng tích hợp sẵn có một kho lưu trữ riêng: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents và metrics.
gifs-serverDịch vụ tự lưu trữ GIF và sticker được sử dụng bởi ứng dụng GIFs.
desktop-app, mobile-app, push-proxyỨng dụng trên máy tính và di động, cùng dịch vụ trung chuyển thông báo đẩy đến điện thoại.
antimatter.chatTrang web này và tài liệu của nó.
communityVấn đề và thảo luận cho mọi phần của Antimatter.

Trước khi bắt đầu

  • Giới thiệu về máy chủ thử nghiệm. Cách nhanh nhất là sử dụng ảnh Docker: xem Cài đặt Antimatter. Để làm việc với chính Antimatter, xem Xây dựng từ mã nguồn.
  • Kiểm tra những gì máy chủ cho phép. Một số tính năng tích hợp bị tắt theo mặc định và cần quản trị viên hệ thống: token truy cập cá nhân, tài khoản bot, ghi đè tên người dùng và biểu tượng, và tải lên ứng dụng. Mỗi trang sẽ nêu rõ cài đặt nào cần thiết.
  • Biết URL của trang web của bạn. Các ví dụ sử dụng https://chat.example.com. Hãy thay thế bằng địa chỉ máy chủ của bạn.

Trong hướng dẫn này

  • REST API: xác thực, các tài nguyên chính, phân trang, lỗi, giới hạn tần suất, WebSocket, thư viện client và các bổ sung của Antimatter.
  • Webhooks: webhooks đến và đi, payload, tệp đính kèm và thẻ.
  • Lệnh gạch chéo: lệnh tùy chỉnh, yêu cầu và phản hồi của chúng, tự động hoàn thành.
  • Bot và tin nhắn tương tác: tài khoản bot, nút, menu và hộp thoại.
  • Viết ứng dụng: cấu trúc plugin, hook máy chủ, registry ứng dụng web, Fusion, cài đặt, lưu trữ, bản dịch và đóng gói.
  • Xây dựng từ mã nguồn: máy chủ, giao diện web, ảnh Docker và các ứng dụng.
  • Đóng góp: vấn đề, pull request, phong cách, bản dịch, bảo mật và giấy phép.
Chào đón mọi câu hỏi trong thảo luận cộng đồng. Báo cáo lỗi trong vấn đề cộng đồng.