Разработка върху Antimatter

Това ръководство е за разработчици. То обхваща скриптове и ботове, които използват API-то, интеграции, построени върху webhooks и команди с наклонена черта, приложения (плъгини), които добавят функции на сървъра и уеб приложението, и компилиране на Antimatter от изходния код, за да допринесете за него.

Начини за разширяване на Antimatter

Изберете най-лекия инструмент, който свършва работата. Първите четири не изискват достъп до самия сървър; приложенията се изпълняват в него.

ИнструментКакво правиПодходящ за
REST APIВсичко, което приложенията правят: съобщения, канали, хора, файлове, настройки. WebSocket изпраща събития, докато те се случват.Скриптове, синхронизация с други системи, персонализирани клиенти.
Входящи webhooksТайна URL, която публикува съобщение в канал, когато нещо изпрати JSON.Аларми, резултати от CI, мониторинг, известия от други инструменти.
Изходящи webhooksAntimatter извиква вашия URL, когато съобщение в публичен канал започва с тригерна дума, или когато някой избере вашето действие от менюто на съобщение, и публикува вашия отговор.Прости автоматизации, управлявани чрез чат, които изпращат съобщение до друг инструмент.
Команди с наклонена чертаХората въвеждат /something; Antimatter извиква вашия URL и показва вашия отговор на тях или на канала.Поиска, действия, стартирани от чата.
БотовеАкаунти, създадени за програми, със собствени токени, етикет БОТ (АГЕНТ за AI агенти) и интерактивни съобщения и диалогове.Помощници, известия, AI агенти, които управлявате сами – всичко, което комуникира с хора.
Приложения (плъгини)Код, който се изпълнява в сървъра (Go) и в уеб приложението (React): хукове за всяко съобщение, нови менюта, панели, типове съобщения, страници.Функции: анкети, бележки, календари, интеграции, които изискват потребителски интерфейс.

В интерфейса хората наричат плъгините „приложения“. Това ръководство използва „приложения (плъгини)“, където и двете думи помагат, защото кодът, API-то и конфигурацията все още използват „плъгин“.

Съвместимост с Mattermost

Antimatter е форк на Mattermost. Повечето от това, което работи със сървър на Mattermost, работи и с Antimatter.

Какво е същото

  • REST API под /api/v4, неговата автентикация, неговият WebSocket и неговият формат на грешки. Сървърът докладва версия 12.0.0, така че клиентите и приложенията, които проверяват версията на сървъра, виждат съвременен Mattermost.
  • Webhooks и команди с наклонена черта, включително техните съвместими със Slack данни.
  • API и хукове на сървърния плъгин: Antimatter ги запазва в непроменен вид. Сървърният код се изгражда върху същия Go модул, github.com/mattermost/mattermost/server/public. Antimatter добавя само методи за своята AI услуга (вижте AI услугата).
  • Реестър на плъгини за уеб приложението: всеки метод register… от реестъра на Mattermost съществува и в двата уеб интерфейса на Antimatter.
  • Клиентски библиотеки: Go клиентът model.Client4 и TypeScript клиентът @mattermost/client (вижте Клиентски библиотеки).
  • Пакети с плъгини: .tar.gz файл с манифест plugin.json. Плъгини, подписани с ключа на Mattermost, се инсталират, както и тези, подписани с ключа на Antimatter.

Какво е различно

  • Два уеб интерфейса. Новият интерфейс, Fusion, е по подразбиране; класическият интерфейс на Mattermost все още е наличен. Fusion изобразява повечето компоненти на плъгините, но разполага някои от тях по различен начин и пропуска няколко. Приложението може да определи кой интерфейс се използва. Вижте Поддръжка на интерфейса Fusion.
  • Допълнително API. Antimatter добавя ендпойнти за собствените си функции: атрибути на общността, таймаути, съобщения отгоре, заявки за съобщения, заобикаляне на настройки за канали и категории, експорт на канали, преместване на нишки, връзки с модели, действия върху съобщения и нови полета за общности. Вижте Какво Antimatter добавя към API.
  • Допълнителни функции за съобщения. Прикачените файлове към съобщения могат да показват етапи от тръба (pipeline) и малка графика; публикациите могат да бъдат вътрешни отговори или спойлери.
  • Допълнителни хукове за уеб приложението за приложения: елемент в менюто „+“ на редактора, таблоиди в изборника на емоджи, панел в изгледа на канала, футър под каналите в страничната лента, запис на страниците за интеграции, изгледите за добавяне и управление в изборника на емоджи, и страничен панел, който се отваря отново на същото място в нов прозорец. Вижте Хукове, които има само Antimatter.
  • Няма лицензи. Всяка функция е налична без лицензионен ключ. Краищата за лиценз, пробен период и корпоративно надграждане са премахнати; GET /api/v4/license/client остава за клиенти, които го изискват. Някои приложения, създадени за платените издания на Mattermost, проверяват за лиценз сами и отказват да се изпълняват.
  • Имена. Екипите се наричат общности в интерфейса, но API и кодът все още използват team. Променливите на средата използват префикса AM_, инструментът за команден ред е amctl, а сървърният бинарен файл е antimatter.

Къде се намира кодът

Всичко е с отворен код в организацията AntimatterChat на GitHub. Всеки репозиторий работи върху своята 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-serverСамостоятелно хостингуван GIF и стикер сервис, използван от приложението GIFs.
desktop-app, mobile-app, push-proxyДесктопното и мобилното приложение, както и услугата, която препраща push известията до телефоните.
antimatter.chatТози уебсайт и неговата документация.
communityПроблеми и дискусии за всяка част от Antimatter.

Преди да започнете

  • Подгответе тестов сървър. Най-бързият начин е Docker образът: вижте Инсталиране на Antimatter. За работа върху самия Antimatter, вижте Създаване от изходния код.
  • Проверете какво позволява сървърът. Няколко функции за интеграция са изключени по подразбиране и изискват системен администратор: лични достъпни токени, ботови акаунти, промяна на потребителско име и икона, и качване на приложения. Всяка страница посочва каква настройка е необходима.
  • Познайте URL-а на сайта си. Примерите използват https://chat.example.com. Заменете го с адреса на вашия сървър.

В това ръководство

  • REST API: автентикация, основни ресурси, пагинация, грешки, лимити на заявки, WebSocket, клиентски библиотеки и добавките на Antimatter.
  • Webhooks: входящи и изходящи webhooks, данни (payloads), прикачени файлове и карти.
  • Команди с наклонена черта: персонализирани команди, техните заявки и отговори, автодопълване.
  • Ботове и интерактивни съобщения: акаунти на ботове, външни агенти, бутони, менюта и диалози.
  • Създаване на приложения: структура на плъгините, сървърни хукове, регистър на уеб приложенията, Fusion, настройки, съхранение, преводи и опаковане.
  • Създаване от изходния код: сървърът, уеб интерфейсите, Docker образът и приложенията.
  • Принос: проблеми, pull requests, стил, преводи, сигурност и лицензи.
Въпросите са добре дошли в общностните дискусии. Съобщете за грешки в общностните проблеми.