Resenha - Adicione Salas de Voz estilo Discord à sua Comunidade 🎙

Isso é exclusivo para Enterprise ou pode rodar no Professional?

Não há um plano ‘Professional’ para o Discourse? Mas sim, como isso não é #oficial, ele só pode ser instalado no plano mais alto, Enterprise.

Eh?! Tem mesmo?!

Fonte: https://discourse.org/buy

1 Curtiu

Acho que nunca associei ‘Pro’ a ‘Profissional’…

1 Curtiu

Pro não é uma abreviação de Profissional?

Verdade, mas eu esperaria que Profissional estivesse acima de Empresarial (daí o Pro?)

@Falco Terminei a integração, mas precisei mudar do WebRTC básico para incluir um SDK de SFU, por meio de um contêiner Docker separado. Também fui além e criei uma interface separada da sua barra lateral padrão, incluindo capacidades de transmissão ao vivo para quando uma discussão de áudio for para uma comunidade grande.

Pode ser iniciado e interrompido a partir da web do Discourse ou do Domniq - A Discourse Native Android+iOS App Preview, com controle de administrador e controle de sala, tudo disponível.

Não foquei em um chat no estilo Discord, mas sim em algo mais curado, como Clubhouse X/Spaces, a partir do núcleo do seu plugin, embora eu tenha mantido os créditos para você.

4 Curtiram

Adicionei suporte a vídeo: agora, tanto as gravações de compartilhamento de tela quanto as de webcam estão disponíveis por meio de uma configuração do site no plugin.

17 Curtiram

@Falco, quão rápido poderíamos testar com um fórum hospedado? Isso é tão bom, só não podemos testar agora :slight_smile:

Bom, como não é oficial, você precisaria do plano Enterprise ou de fazer a auto-hospedagem.

Parece haver um problema de compatibilidade com as instâncias em execução no ESR; o plugin falha ao carregar com

Uncaught (in promise) Error: Could not find module discourse/blocks imported from discourse/plugins/resenha/discourse/components/resenha-anon-rooms-block
f loader.js:247
f loader.js:258
findDeps loader.js:168
f loader.js:262
findDeps loader.js:168
f loader.js:262
requireModule loader.js:24
iI app.js:228
iN app.js:251
start app.js:210
start app.js:225
start-app.js:19
loader.js:247:1

Isso quebra o layout na lista de tópicos do tema Horizon.

Tentar usar plugins experimentais com o Discourse ESR não é uma estratégia vencedora.

Se você quiser usar este plugin, fique na versão mais recente.

5 Curtiram

Eu esperava que houvesse mecanismos como o d-compat para garantir que versões mais antigas do Discourse permanecessem compatíveis nesses casos! :sad_but_relieved_face:

Migrar para a versão mais recente não é uma opção para esta instância, então imagino que o plugin fique desativado.

2 Curtiram

Temos isso para plugins oficiais de produção, sim, mas é irrazoável esperar isso para cada experimento que lançamos.

2 Curtiram

Anotado :+1:

(Vinte caracteres)

Tive uma rápida conversa com @Falco e mais algumas pessoas hoje usando este plugin e foi divertido!

Estava conversando com @markvanlan sobre outra coisa e notei o ícone do microfone ao lado do avatar dele. Decidi entrar em uma conversa no canal Watercooler e consegui ver alguns rostos que não vejo com muita frequência.

Muito legal ver o que você tem feito aqui, Falco.

4 Curtiram

Acabamos de fazer uma revisão interna completa deste plugin nas últimas duas semanas. Aqui está o que aconteceu:

Resumo da IA das últimas duas semanas no Resenha

:sparkles: Recursos

  • Chat persistente em sala — vincule uma sala de voz a um canal de chat do Discourse; cada sessão abre um tópico real com reações, edições e uploads completos. O tópico é encerrado após um tempo de inatividade configurável.
  • Compartilhamento de áudio de tela — o áudio da aba e do sistema agora é transmitido junto com o compartilhamento de tela por uma pista dedicada, separada do microfone. Respeita o volume/mudo/surdez por usuário.
  • Modal de configurações de voz — escolha dispositivos de entrada/saída, veja um medidor de nível de microfone em tempo real e defina um limite de porta de ruído. As preferências são persistentes por dispositivo e aplicadas durante a chamada sem renegociação.
  • Widget ancorado redimensionável — arraste para redimensionar por um controle no canto superior esquerdo, ancorado no canto inferior direito, tamanho persistente. Novo estado extra minimizado mostra apenas os botões Expandir e Sair. Os fluxos de vídeo funcionam corretamente no modo widget.

:artist_palette: UX

  • Ícones de status de participantes na barra lateral (mudo/surdez/compartilhamento de tela/câmera/PTT) agora aparecem juntos na borda direita; a onda de fala anima sobre o avatar.
  • Salas de voz agora visíveis na barra lateral de chat em tela cheia.
  • Configuração do site prioritize_username_in_ux respeitada nos blocos de vídeo e em salas anônimas.
  • Z-index do widget corrigido para menus móveis; controle de redimensionamento SE restaurado; botão de ancoragem recebeu um ariaLabel adequado.

:bug: Correções

  • Layout da grade de vídeo preso nas dimensões de tela cheia após sair do modo tela cheia.
  • Contagens de participantes na barra lateral desviando para usuários não participantes (direcionamento de transmissão + Redis + limpeza do cliente).
  • Sinais de áudio quebrados no Android (AudioContext agora retornado antes da reprodução; singleton compartilhado evita limite de contexto).
  • Vídeo remoto não aparecendo quando um peer começa a publicar após o handshake inicial.
  • Direcionamento de transmissão de participante obsoleto.

Se alguém estiver usando isso, ficarei feliz em receber feedback sobre as mudanças recentes.

11 Curtiram

Boa ideia de melhoria! Como seria possível aplicar isso ao plugin de eventos? Seria possível criar um hook que renderize no tópico de eventos? Isso redirecionaria para a visualização completa, fora da barra lateral?

Notei que muitos fóruns não usam a barra lateral no Discourse; eles preferem o menu suspenso no cabeçalho. Como isso afeta o Resenha? Há planos para transformá-lo em uma interface de chat pop-out independente? Algo semelhante ao dock de Canais e Mensagens Diretas que já existe.

2 Curtiram

Isso pode estar nos planos para o futuro, mas no momento não temos nada assim previsto. Talvez pudesse ser algo como: quando um evento tiver uma sala de Resenha no URL do local dele, 5 minutos antes do evento, acionamos uma notificação no app, notificações push e e-mails que, ao serem clicados, direcionam o usuário para /resenha/r/#{room.slug}, assim eles entram direto na sala do evento.

Sinceramente, não faço ideia, isso está bem longe na minha lista de prioridades :laughing:.

Adicionamos ambos recentemente, então você tem o widget de pop-up:

e a visualização em página inteira:

Então, tecnicamente, pode ser usado desde que você coloque o link da sala em algum lugar onde seus usuários possam encontrá-lo.

4 Curtiram

Acabei de conferir a demonstração, é um salto enorme, trabalho realmente impressionante. No meu post anterior, compartilhei que optei pelo SDK do LiveKit para lidar com áudio em grupos maiores, com uma página de transmissão alimentada por egress transmitindo para o YouTube. A sua nova visualização em tela cheia para salas parece mais robusta, vou analisar com mais profundidade para ver se a atualização atual pode manter a continuidade para as minhas necessidades durante a resenha.