Reseña: Añade salas de voz estilo Discord a tu comunidad 🎙

¡Hola a todos! Comparto Resenha, un plugin experimental que añade salas de chat de voz y vídeo directamente a Discourse, sin necesidad de aplicaciones externas, solo WebRTC peer-to-peer en tu barra lateral.

output

Pruébalo en vivo

:point_right: https://discourse-on-a-pi5.falco.dev/

(Sí, funciona en un Raspberry Pi 5, así de ligero es).

Cómo funciona

Haz clic en una sala de la barra lateral para unirla, haz clic de nuevo para salir. Por defecto, todo el tráfico multimedia va peer-to-peer vía WebRTC, tu servidor de Discourse solo gestiona la señalización, nunca los medios. Los sitios que necesiten llamadas más grandes pueden enrutar opcionalmente las salas a través de un servidor multimedia LiveKit, ya sea LiveKit Cloud o autoalojado. Se crea una sala “Watercooler” por defecto en la instalación para que tu comunidad pueda empezar a hablar inmediatamente.

Características

  • UX centrada en la barra lateral — salas y avatares de participantes en vivo directamente en la barra lateral, estilo Discord, con indicadores animados de habla
  • Vídeo y compartir pantalla — vídeo de cámara opcional y compartir pantalla/pestaña con una página completa de sala, diseños de mosaico/presentación y soporte de pantalla completa
  • Widget de llamada persistente — una mini-llama acoplada y redimensionable que te sigue mientras navegas por el foro, incluido vídeo
  • Configuración de voz y vídeo — selectores de dispositivo, prueba de micrófono en vivo, puerta de sensibilidad de entrada, supresión de ruido WebAssembly (DTLN) y desenfoque de fondo MediaPipe, todo procesado localmente en el navegador
  • Chat de sala — cada sala tiene un chat de texto respaldado por canales y hilos de chat reales de Discourse
  • Salas de escenario — salas de hablante/audiencia con una cola de solicitud de habla, para AMAs y llamadas comunitarias
  • Permisos de sala — salas públicas, restringidas por grupo y privadas, con insignias de bloqueo en la barra lateral y hashtags de sala para enlazar salas en publicaciones
  • Controles de participantes — menú contextual con volumen por usuario, silenciar, sordomudo y expulsar; más silenciar/desconectar automático AFK y estado de usuario automático
  • Gestión de salas — creación de salas de usuario restringida por grupos, interfaz CRUD de personal y una API REST completa para control programático
  • Cero infraestructura por defecto — WebRTC puro en el navegador con cifrado DTLS-SRTP, sin necesidad de SFU/MCU
  • Integración opcional de LiveKit — habilita salas individualmente o enruta todo a través de LiveKit Cloud o tu propio servidor LiveKit para llamadas grandes, con un panel de salud de administrador y reconciliación basada en webhooks

Estado

:warning: Beta — El modo peer-to-peer por defecto está probado y funciona bien con grupos pequeños (2-10 participantes). Para salas más grandes, apunta el plugin a LiveKit (Cloud o autoalojado), todo lo demás sigue funcionando idénticamente.

Instalación

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/xfalcox/resenha.git

Habilita en Admin > Settings > Plugins > resenha enabled.

Comentarios bienvenidos

Esto es experimental, los errores, ideas y preguntas son bienvenidos en este tema. ¡PRs también!


Nota: Esto no es un plugin official.

54 Me gusta

Reseña, increíble me encanta, gracias mi paisano

12 Me gusta

Lo acabo de instalar y está funcionando en aproximadamente media hora. ¡Parece funcionar bien! Me encantaría ver algunos cambios/adiciones de características:

Característica Estado
Renombrar una sala :cross_mark: No implementado
Eliminar una sala :cross_mark: No implementado
Cambiar el nombre predeterminado de la sala :cross_mark: Codificado de forma rígida
Vincular salas a categorías de Discourse :cross_mark: No compatible
Establecer permisos por sala :cross_mark: No compatible
Crear salas de caducidad automática :cross_mark: No compatible
Descripciones/temas de la sala :cross_mark: No compatible
10 Me gusta

Esto es increíble. ¿Hay algún plan para que el equipo lo haga oficial una vez que salga de la alfa?

7 Me gusta

Actualmente no hay planes, ya que esto es principalmente una exploración de las posibilidades de la tecnología y cómo puede integrarse con Discourse.

Aun así, como todo lo demás, depende de lo que quieran nuestros clientes.

9 Me gusta

¡Esto es bastante asombroso, Falco! Puedo ver bastantes aplicaciones para esto siendo lo que has enumerado. ¡Los complementos de funciones como este sin duda ayudan a que Discourse Meta sea la plataforma de referencia!

4 Me gusta

¿Dónde está la opción para crear una nueva sala?

No hay interfaz de usuario para eso, ya que este es un proyecto experimental sobre la tecnología en lugar de una solución lista para sitios de producción.

2 Me gusta

¿No debería estar presente el experimental por ahora?

Buen complemento

3 Me gusta

He estado jugando con esto durante unos días, ¡y es brillante!

Resuelve maravillosamente el problema de “actualizar” fácilmente un foro/discusión de chat a una conversación verbal. He pasado años luchando entre la necesidad de cambiar a otras plataformas o tener intentos (que consumen muchos recursos) de videoconferencia integrada.

Si deciden llevarlo más allá, me encantaría que estuviera diseñado para integrarse con el chat. Sería simplemente sublime poder iniciar una sala de Voz privada para los miembros de un chat directamente desde el chat (con una limpieza posterior para mantener las cosas ordenadas). Y el chat seguiría siendo el lugar perfecto para dejar comentarios adicionales, archivos, enlaces, etc.

La guinda del pastel sería, por supuesto:

  1. Una opción para video (probablemente no sea técnicamente posible con una tecnología tan ligera)

  2. Transcripción con IA, lo suficientemente inteligente como para integrar temas y chat relacionados. Esto sería absolutamente increíble como secretario de reuniones.

11 Me gusta

¡Gracias por los comentarios! ¡Ese fue exactamente mi objetivo con esto!

Definitivamente, ese sería un siguiente paso lógico, con salas efímeras para respaldarlo.

Es muy factible, tanto sin un SFU/MCU para personas con suficiente subida, como con soporte opcional para ello.

7 Me gusta

Esto fue perfecto, no actualizaré por un largo período, pero en febrero actualizaré por última vez cuando se lance ESR para incluir este complemento.

Estoy muy emocionado por eso y espero que llegue.

2 Me gusta

¿Hay alguna posibilidad de cambiar el ícono a bottle-water para la sala de chat ‘Watercooler’?

3 Me gusta

Ahora hay una interfaz de usuario para administrar salas.

10 Me gusta

Gracias Falco por este plugin :heart:

Es un gran trabajo :+1:

1 me gusta

Estoy probando en producción, ¡volveré con comentarios! Vamos a reseñar :brazil:

1 me gusta

¿Quizás un anillo sería mejor en este caso? Cuando estoy en una sala y hago clic en mi propio perfil o en el perfil de otro, el DOM se actualiza y vuelvo a la página de inicio.

Ahora hay una pantalla de detalles de sala que utiliza el patrón de menú kebab de Discourse Chat

2 Me gusta

No se superpone en el tema predeterminado, ¿quizás ajusta tu tema para manejar el menor espacio para el relleno?

image

Esto ya está solucionado.

3 Me gusta

A la luz de las noticias recientes, he añadido una nueva función al complemento: un filtro de ruido impulsado por IA.

Los administradores pueden habilitarlo a través de una configuración del sitio (predeterminado: desactivado) y luego los usuarios pueden optar por activarlo haciendo clic en su propio usuario en una sala de chat de voz.

6 Me gusta