📞 diskuz Call – голосовые и видеозвонки внутри Discourse (P2P, без сторонних приложений)

:information_source: Резюме Добавляет голосовые и видеозвонки «точка-точка» (WebRTC) внутри Discourse. Звонки один на один через плавающую кнопку или из компонера чата 1:1; встроенный виджет и интерфейс звонка. Без внешних приложений. Ваш сервер Discourse выполняет только сигнализацию (без передачи медиа). Аудио/видео передаются напрямую между двумя браузерами (P2P), когда это возможно; вы можете добавить опциональные TURN-серверы в админ-панели, чтобы в случае сбоя прямого P2P (например, из-за строгого NAT или фаервола) медиа передавалось через TURN-сервер, и звонок всё равно работал.
:hammer_and_wrench: Ссылка на репозиторий GitHub - idiskuz/diskuz-call: Voice calls (WebRTC) for Discourse. P2P calls between users, built-in UI. Created for diskuz.com. · GitHub
:open_book: Руководство по установке Как установить плагины в Discourse
:busts_in_silhouette: Сообщество diskuz Call Поддержка сообщества на diskuz.com для этого нового плагина.

Возможности

  • P2P голос и видео (WebRTC) — Discourse обрабатывает только сигнализацию (offer/answer, ICE); он никогда не получает и не хранит аудио/видео. STUN (по умолчанию: Google) помогает браузерам найти друг друга; затем медиа передаётся напрямую между ними (истинный P2P). TURN (опционально, настраивается в Админ → ICE-серверы) — это ретранслятор: если прямой P2P не удаётся (симметричный NAT, корпоративный фаервол и т.д.), медиа идёт A → TURN-сервер → B, и звонок всё равно работает. Добавьте TURN, если пользователи сообщают о неудачных звонках или одностороннем аудио.
  • Плавающая кнопка (в правом нижнем углу) — Открывает виджет для ввода имени пользователя и начала звонка. Скрыта, когда открыт компонент темы или чат. Администратор может отключить её на всём сайте.
  • Кнопка звонка в чате 1:1 — Иконка в компоненте чата для начала звонка с другим пользователем. Администратор может отключить её на всём сайте. Видна только разрешённым группам при включении.
  • Доступ на основе групп — Только пользователи из настроенных групп видят и используют diskuz Call. Опционально: «получатель должен подписаться на звонящего» (требуется Discourse Follow).
  • Отдельные группы «видео разрешено» — Контроль того, кто может включить камеру во время звонка.
  • Настраиваемый звонок — Звук при входящем вызове: нет, по умолчанию, ding, bell, chat, пользовательский (до 10 URL MP3; пользователь выбирает один в виджете) или встроенные альтернативные пресеты. Отдельно: уведомления Discourse (иконка колокольчика) показывают «звонит вам» для входящих и «Пропущенный звонок» со временем для пропущенных.
  • Виджет — Две страницы: «Позвонить другу» (главная) и Уведомления (Полученные, Отправленные, Недавние, Пропущенные; до 10 на вкладке; имена пользователей кликабельны для повторного звонка). На рабочем столе: перетаскиваемый по верхней панели. На мобильных: полноэкранный.
  • Во время звонка — Длительность, отключение микрофона, динамик, включение/выключение видео, размытие (рабочий стол/Android), режим наушников на мобильных (тёмное наложение; тройное нажатие для разблокировки). Статус пользователя (В сети, Занят, Не в сети) в браузере; входящие звонки могут автоматически отклоняться при статусе Занят/Не в сети. Если пользователь переключается на другую вкладку, запускается таймер на 60 секунд; если он не возвращается, звонок завершается.
  • Локализация — Английский и итальянский (клиент и сервер).

Статус: Бета. При неудачных звонках или одностороннем аудио настройте TURN в Админ → Плагины → ICE-серверы.

Настройка

  1. Установка — Добавьте плагин (например, через хуки app.yml или вручную в директорию плагинов):
    • git clone https://github.com/idiskuz/diskuz-call.git
    • Пересоберите приложение (например, ./launcher rebuild app).
  2. Включение — Админ → Плагины: включите diskuz Call (если указан). Админ → Настройки → Плагины: включите Включить diskuz Call.
  3. Доступ — Установите Кто может видеть и использовать diskuz Call в нужные группы (например, 1|2|3 для администраторов, модераторов, сотрудников).
  4. Опционально — Настройте Показывать плавающую кнопку / Показывать кнопку чата, Требовать, чтобы получатель подписывался на звонящегоDiscourse Follow), Звук для входящих вызовов, Пользовательские звонки или Альтернативный звонок, Группы, которым разрешено включать видео, Основной цвет и ICE-серверы (JSON для TURN), если необходимо для NAT/фаервола.

Требования: Discourse (использует встроенную систему мгновенных сообщений для сигнализации). Опционально: Discourse Follow (для «получатель должен подписаться на звонящего»). Браузер с поддержкой WebRTC, микрофон (и камера для видео).

Настройки

Имя Описание
Включить diskuz Call Главный переключатель плагина.
Кто может видеть и использовать diskuz Call Список групп (например, администраторы, модераторы, сотрудники по ID). Только эти пользователи видят плагин и могут совершать/принимать звонки.
Требовать, чтобы получатель подписывался на звонящего При включении (с Discourse Follow) получатель должен подписаться на звонящего, чтобы принимать звонки.
Показывать плавающую кнопку ВКЛ: плавающая кнопка видна только разрешённым группам. ВЫКЛ: скрыта для всех.
Показывать кнопку чата ВКЛ: кнопка звонка в чате 1:1 видна только разрешённым группам. ВЫКЛ: скрыта для всех.
Группы, которым разрешено включать видео Список групп, которые могут использовать кнопку Видео во время звонка.
Основной цвет HEX-цвет (например, #13c98c) для кнопки и акцентов.
Звук для входящих вызовов нет, по умолчанию, ding, bell, chat, пользовательский или альтернативный.
Пользовательские звонки 1–10 URL MP3. Используются, когда звук установлен как пользовательский; пользователь выбирает один в виджете.
Альтернативный звонок Пресет, когда звук установлен как альтернативный (например, soft, classic, modern, festivo, marimba, relax1–5).
ICE-серверы Опциональный JSON-массив для STUN/TURN. Пусто = только Google STUN.
Журнал отладки При включении: сообщения [diskuz-call] в консоли браузера (F1). Для поддержки; отключите в продакшене.

Авторы: diskuz.com, Кристиан Дерако
Благодарности: Концепция, функции и дизайн — Кристиан Дерако (diskuz.com). Реализация с помощью разработки с поддержкой ИИ.
Версия: 0.4.0-beta

Это не официальный плагин Discourse.

Я с радостью посмотрю, как виджет выглядит на вашем сайте. Вы можете установить основной цвет diskuz Call прямо в панели опций плагина :hugs:

Очень рад поделиться этим со всеми вами — diskuz Call наконец-то запущен! Не могу дождаться ваших отзывов :star_struck:

15 лайков

Это очень захватывающе! С нетерпением жду возможности попробовать. Это выглядит как блестящий (и с минимальными накладными расходами) способ обеспечить лёгкие связи между участниками форума, когда требуется общение.

Вы рассматривали возможность расширения этого функционала для групповых звонков? Групповые звонки и встречи — это наш другой ключевой сценарий использования видеозвонков. У нас уже есть отличные инструменты для совместной работы в реальном времени в рамках Discourse, и это станет идеальным завершением!

2 лайка