Типы каналов

Object Server поддерживает 4 типа каналов. Каналы могут принадлежать серверу (serverId) или существовать независимо (standalone).

Обзор

Тип

Описание

Контент

UI-режимы

CHAT

Чат с сообщениями

Messages

BUBBLE, THREAD

CHANNEL

Канал с постами

Posts + Comments

CARD, FEED

FORUM

Форум

Posts + Comments + FormTemplate

VOICE

Голосовой канал


CHAT — Чат

Классический чат. Все участники с правом SEND_MESSAGES могут писать сообщения.

UI-режимы (chatMode)

  • BUBBLE — линейный поток сообщений как в Telegram

  • THREAD — сообщения с ветками обсуждений как в Slack

Треды (режим THREAD)

  • Сообщение без parentMessageId — корневое

  • Сообщение с parentMessageId — ответ в треде

  • Вложенные треды не поддерживаются (нельзя ответить на ответ)

  • В режиме BUBBLE поле parentMessageId не принимается

API

  • Сообщения: GET/POST /channels/{channelId}/messages

  • Ответы в треде: GET /messages/{messageId}/replies

Подробнее: Сообщения


CHANNEL — Канал

Канал для публикации контента. Посты создают только пользователи с правом MANAGE_CHANNELS (администраторы). Комментировать могут все участники с SEND_MESSAGES.

UI-режимы (channelDisplayMode)

  • CARD — посты как карточки с превью (VK-стиль)

  • FEED — посты последовательно (Telegram-стиль)

Разница исключительно визуальная на клиенте.

Комментарии

Включаются/отключаются полем commentsEnabled (по умолчанию true).

API

  • Посты: GET/POST /channels/{channelId}/posts

  • Комментарии: GET/POST /posts/{postId}/comments

Подробнее: Посты и комментарии


FORUM — Форум

Канал для структурированных обсуждений. Все участники с SEND_MESSAGES могут создавать посты. Администратор может задать шаблон формы.

Обязательный заголовок

Посты в FORUM требуют поле title.

Шаблон формы (formTemplate)

JSON-строка с описанием полей. Задаётся при создании или обновлении канала.

{ "fields": [ { "name": "bug_type", "label": "Тип бага", "type": "SELECT", "required": true, "options": ["UI", "Backend", "Crash", "Performance"] }, { "name": "steps", "label": "Шаги воспроизведения", "type": "TEXTAREA", "required": true, "placeholder": "1. Открыть...\n2. Нажать..." }, { "name": "priority", "label": "Приоритет", "type": "SELECT", "required": false, "options": ["Low", "Medium", "High", "Critical"] } ] }

Типы полей: TEXT, TEXTAREA, SELECT, NUMBER, DATE, CHECKBOX

При создании поста обязательные поля шаблона валидируются. Данные передаются в formData как JSON {fieldName: value}.

Статусы и теги

Посты в FORUM имеют статус (OPEN, CLOSED, RESOLVED) и теги для фильтрации.

API

Аналогично CHANNEL. Подробнее: Посты и комментарии


VOICE — Голосовой канал

Канал для голосового/видео общения через WebRTC SFU. Доступен только как серверный канал (не standalone).

Подробнее: Голосовые каналы


Standalone vs серверные каналы

Серверный

Standalone

serverId

UUID сервера

null

ownerId

null

ID создателя

Роли

Серверные

Канальные

Вступление

Через сервер или инвайт

Напрямую или инвайт

Типы

CHAT, CHANNEL, FORUM, VOICE

CHAT, CHANNEL, FORUM

API standalone-каналов

GET /channels — публичные standalone-каналы GET /channels/me — мои каналы POST /channels — создать GET /channels/{id} — получить POST /channels/{id}/join POST /channels/{id}/leave

Подробнее: Каналы