Розробка на базі Antimatter

Цей посібник призначений для розробників. Він охоплює скрипти та боти, що використовують API, інтеграції на основі вебхуків і команд зі скісною рискою, додатки (плагіни), які додають функції на сервері та у вебдодатку, а також збирання Antimatter з початкового коду для внесків у проєкт.

Способи розширення Antimatter

Оберіть найпростіший інструмент, який виконає завдання. Перші чотири не потребують доступу до самого сервера; додатки працюють усередині нього.

ІнструментПризначенняПідходить для
REST APIУсе, що роблять додатки: повідомлення, канали, користувачі, файли, налаштування. WebSocket надсилає події в момент їх виникнення.Скрипти, синхронізацію з іншими системами, власні клієнти.
Вхідні вебхукиСекретний URL, який надсилає повідомлення в канал, коли щось надсилає йому JSON.Сповіщення, результати CI, моніторинг, сповіщення з інших інструментів.
Вихідні вебхукиAntimatter надсилає запит до вашого URL, коли повідомлення у відкритому каналі починається з тригерного слова, або коли хтось обирає вашу дію в меню повідомлення, і публікує вашу відповідь.Прості автоматизації, що керуються чатом, для надсилання повідомлення в інший інструмент.
Команди зі скісною рискоюКористувачі вводять /something; Antimatter викликає ваш URL і показує вашу відповідь їм або каналу.Пошуки, дії, що ініціюються з чату.
БотиАкаунти, створені для програм, з власними токенами, міткою БОТ, інтерактивними повідомленнями та діалогами.Асистенти, сповіщувачі, усе, що спілкується з людьми.
Додатки (плагіни)Код, що працює усередині сервера (Go) та у вебдодатку (React): гачки на кожне повідомлення, нові меню, панелі, типи повідомлень, сторінки.Функції: опитування, нотатки, календарі, інтеграції, що потребують інтерфейсу користувача.

У інтерфейсі користувачі називають плагіни «додатками». У цьому посібнику ми пишемо «додатки (плагіни)», коли обидва слова допомагають, оскільки код, API та конфігурація досі використовують слово «плагін».

Сумісність із Mattermost

Antimatter — це форк Mattermost. Більшість того, що працює з сервером Mattermost, працює й з Antimatter.

Що є однаковим

  • REST API під /api/v4, його автентифікація, WebSocket та формат помилок. Сервер повідомляє версію 12.0.0, тому клієнти та додатки, що перевіряють версію сервера, бачать сучасний Mattermost.
  • Вебхуки та команди зі скісною рискою, зокрема їхні сумісні з 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.
  • Додаткові можливості повідомлень. Вкладення до повідомлень можуть показувати етапи конвеєра та невелику діаграму; записи можуть бути вбудованими відповідями або спойлерами.
  • Додаткові хуки веб-додатку для додатків: пункт меню «+» у композері, вкладки виборника емодзі, панель у перегляді каналу, нижня панель під каналами бічної панелі, запис на сторінках інтеграцій, перегляди додавання та керування у виборнику емодзі, а також бічна панель, що відкривається знову там, де вона була, у новому вікні. Див. Хуки, які є лише в 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-dockerОбрази Docker із вбудованими додатками та файлами 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Десктопні та мобільні додатки, а також сервіс, що передає сповіщення на смартфони.
antimatter.chatЦей вебсайт та його документація.
communityПроблеми та обговорення для всіх частин Antimatter.

Перед початком

  • Отримайте тестовий сервер. Найшвидший спосіб — образ Docker: див. Встановлення Antimatter. Щоб працювати з самим Antimatter, див. Збирання з початкових кодів.
  • Перевірте, що дозволяє сервер. Кілька функцій інтеграції вимкнено за замовчуванням і потребують системного адміністратора: особисті токени доступу, акаунти ботів, заміна імен користувачів та іконок, завантаження додатків. На кожній сторінці вказано, яке налаштування потрібне.
  • Знайте URL вашого сайту. У прикладах використано https://chat.example.com. Замініть його на адресу вашого сервера.

У цьому посібнику

Питання вітаються в спільноті. Повідомляйте про вади в списку проблем спільноти.