Videoconferência BigBlueButton

Este plugin integra uma instância do Discourse com o BigBlueButton, uma ferramenta de videoconferência de código aberto projetada para ensino online. Para utilizá-lo, será necessário ter um servidor executando uma instância do BBB; consulte http://docs.bigbluebutton.org para mais detalhes. Em comparação com Zoom, Jitsi e Whereby, o BigBlueButton possui melhor suporte a navegadores. Nos meus testes, funcionou imediatamente em todos os navegadores modernos, incluindo o Safari no iOS e o Chrome no Android.

Capturas de tela


Para adicionar uma videoconferência a um tópico ou postagem, use o botão “Adicionar BigBlueButton” no menu suspenso de opções ao redigir:

Recursos

  • Suporta múltiplas salas
  • Usuários da equipe e usuários de um grupo configurável são reconhecidos como moderadores nas reuniões do BBB
  • Administradores podem optar por incorporar a reunião no Discourse (via iframe) ou redirecionar para uma página completa (com opções separadas para dispositivos móveis e desktop)
  • Exibe os avatares dos usuários já presentes na videoconferência ao lado do botão de entrada

Notas

Gostaria de agradecer ao @Stephen por me indicar o BigBlueButton e por testar e fornecer feedback para as versões iniciais do plugin.

41 curtidas

Trabalho realmente incrível aqui. Tantos estabelecimentos educacionais aqui usando o BBB, e o momento para essa integração é perfeito.

15 curtidas

Muito oportuno. Temos usado nosso fórum openmod como vitrine para nossos webinários interativos recentemente estabelecidos, anunciando apenas os URLs dos webinários em tópicos privados. Não é totalmente à prova de falhas, mas nos esforçamos para manter nossa comunidade do fórum limpa. Por isso, estou muito interessado nesses desenvolvimentos. @pmusaraj: obrigado!

4 curtidas

Todos os três grupos de voluntários que estou ajudando neste momento difícil migraram para o uso do BigBlueButton.

Uma parte importante dessa mudança foi este plugin. A transição de um tópico do Discourse para a conferência é totalmente suave e não estamos enfrentando nenhum dos problemas habituais.

Isso torna minha vida 1000 vezes mais fácil, pois não preciso atuar como suporte técnico.

Obrigado novamente, @pmusaraj!

9 curtidas

Muito obrigado por trabalhar nisso. Testei e funciona muito bem.

Mas trago aqui algumas sugestões para torná-lo mais fácil de usar. Estou assumindo o caso de uso em que um membro da equipe do fórum não está muito familiarizado com os detalhes internos do BigBlueButton e a única experiência anterior que ele/ela tem é usando a interface do BigBlueButton para criar salas (Greenlight).

Dito isso, aqui estão minhas sugestões:

  1. Explique na postagem original como criar botões “Iniciar conferência”
    Após a instalação, levei bastante tempo para descobrir que, para adicionar um botão do BigBlueButton, era necessário fazê-lo por meio das “opções” (ícone de engrenagem) no editor de texto. Talvez mencionar isso nas instruções possa evitar alguma confusão.
  2. Facilite a criação de senhas
    • botões para gerar senhas aleatórias: Todos sabemos que as pessoas são preguiçosas e provavelmente escolherão uma senha fraca. Então, talvez seja possível oferecer ao usuário uma opção ainda mais simples que, na verdade, torne as senhas mais seguras.
    • rotule as senhas como “(opcional)” (solução alternativa) e, quando não for definida, gere uma senha aleatória. Mas o usuário ainda deve ser informado por uma nota de que uma senha aleatória será criada no lugar.
  3. Considere ocultar as opções de senha sob “avançado”
    Acredito que essas opções podem até ser ocultadas, pois a maioria das pessoas provavelmente só quer criar uma sala diretamente no Discourse e não conectá-la a uma sala criada em outro aplicativo.
  4. Evite mencionar jargões técnicos
    • Sei que o Discourse sempre menciona iframe, mas um usuário comum não sabe o que é isso. Se o rótulo fosse alterado para “Mostrar dentro da postagem”, ficaria mais claro.
    • “Meeting ID” é um jargão do BigBlueButton. Para a maioria dos usuários, acho que “nome da reunião” seria melhor. E talvez adicionar abaixo uma instrução em cinza explicando que se trata do “Meeting ID”.

A imagem abaixo explica algumas das “funcionalidades” mencionadas. (É apenas um mockup sem funcionalidade).

Mas, novamente, já é um plugin muito útil, especialmente para pessoas que trabalham com educação. Então, muito obrigado novamente!

6 curtidas

Acabei de enviar um e-mail para o BigBlueButton para verificar se essa integração pode ser listada no site deles: BigBlueButton LMS Integrations | Designed for Schools | BigBlueButton.

Se tiver alguma atualização, postarei aqui.

2 curtidas

Obrigado pelo feedback @core (e pela divulgação). Implementei alguns dos pontos bem pensados propostos no seu post.

A geração de senhas agora é aleatória e oculta do usuário. (Usuários avançados podem modificar o markdown e alterar as senhas, se desejarem.) Também atualizei a postagem original com uma captura de tela e uma descrição sobre como acessar o botão no menu de opções.

Não vou fazer essa alteração. Sei que iframe é um termo técnico, mas, neste caso, não acho que a mudança ajude; acredito que usar “dentro da postagem” será mais confuso. No entanto… você pode personalizar esse rótulo na sua própria instância, em Personalizar > Texto, filtrado por “bbb.modal”. Como nesta captura de tela:

5 curtidas

Sua solução parece perfeita para mim. O minimalismo faz toda a diferença. E obrigado por dedicar seu tempo :slight_smile:

Isso é um ótimo compromisso. Obrigado!

1 curtida

@pmusaraj ainda não houve resposta sobre a adição do plugin do Discourse no site do BBB. Vou tentar minha sorte na lista de e-mails deles nos próximos dias.

1 curtida

@pmusaraj Minha solicitação para entrar na lista de e-mail foi rejeitada (não faço ideia do motivo). Então, estou um pouco sem opções para entrar em contato com eles sobre a integração. Também pensei em abrir uma issue no GitHub, mas isso pode ser bastante chato, já que não se trata do código do BBB.


Edição: aparentemente, isso deveria ter sido postado na lista bigbluebutton-users. É por isso que devo ter sido rejeitado.

1 curtida

Você seguiu as instruções no texto da descrição? Anotei sua integração e estou adicionando a uma lista de exemplos semelhantes que já vi. Meu plano é criar uma página da comunidade na documentação onde podemos compartilhar as coisas que criamos.

2 curtidas

Eu perdi isso. Desculpe. Mas é ótimo ver que, de qualquer forma, chegou aos contribuidores! Obrigado por verificar!

Ótimo plugin, obrigado!
Como posso abrir uma reunião existente (agendada por outra ferramenta)? Como descubro o ID da Reunião? Seja o que for que eu insira neste campo, sempre é iniciada uma nova reunião.

Isso parece mais uma pergunta para o BBB, mas, em teoria, se você usar o mesmo ID de sala que a outra ferramenta, ele deve carregar a mesma reunião.

1 curtida

Já fiz isso uma vez, mas foi um pouco complicado. É necessário usar a API do BBB.

Vou tentar criar um guia sobre isso em alguns dias.

O principal problema é que a ferramenta mais comumente usada (Greenlight) não mostra realmente essas informações de baixo nível.

3 curtidas

Obrigado, isso seria ótimo!

1 curtida

“Adicionar BigBlueButton” a uma conferência já existente

Este plugin cria automaticamente uma sala para você quando clica em “Adicionar BigBlueButton”. No entanto, você pode querer usar uma sala já existente (criada antes de ter este plugin). Aqui estão dois exemplos de por que você pode querer fazer isso.

  • Você já criou uma sala — (com o Greenlight, por exemplo) e deseja permitir que as pessoas também participem pelo Discourse

  • Permitir também que as pessoas participem via link — Ao usar o Greenlight (a interface padrão), ele gera um link compartilhável para entrar na chamada. Com isso, as pessoas podem participar pelo Discourse ou via link.

:warning: Este é um processo bastante invasivo, então tenha certeza absoluta de que entende o que está fazendo

Instruções

Provavelmente a interface que você está usando (Greenlight?) não fornece informações de baixo nível, como o ID da reunião ou attendeePW (que é diferente do código de acesso da sala — sei, é confuso). Portanto, para obter essas informações, precisaremos usar a API do BBB para listar todos os dados da reunião.

Nota: pode haver uma maneira melhor de fazer isso, mas não estou ciente. Por favor, me avise se for o caso.

Pré-requisitos

  • acesso ao terminal do servidor BBB (via SSH, por exemplo)
  • conhecimento básico de Python (para verificar meu código)
  • compreensão dos riscos de segurança ao usar a API do BBB

1. Obter o segredo e o ponto de extremidade da API do BBB

Acesse um shell (via SSH) onde o servidor BBB está em execução e execute:

sudo bbb-conf --secret

Isso fornecerá uma URL e um Segredo. Eles serão úteis mais tarde.

:warning: Qualquer pessoa com esse segredo pode fazer coisas ruins no seu servidor! Portanto, mantenha-o seguro.

2. Criar script Python 3 para obter as informações da reunião

Abaixo está um script simples em Python 3 que recebe sua URL e Segredo (fornecidos no passo 1) e gera a API para obter as informações das reuniões:

:warning: Não cole scripts aleatórios encontrados na internet (incluindo este!). Verifique se faz sentido e, se necessário, consulte a documentação da API.

import hashlib
from urllib.parse import urljoin

# Insira suas variáveis aqui
base_url = "COLE_AQUI_SUA_URL" + "api/"
secret = "COLE_AQUI_SEU_SEGREDO"

# gera a soma de verificação de segurança
plaintext = "getMeetings" + secret
sha1 = hashlib.sha1()
sha1.update(plaintext.encode('utf-8'))
checksum = sha1.hexdigest()

# obtém a URL da API para listar informações das reuniões
url = urljoin(base_url, "getMeetings?checksum=" + checksum)
print("abra a seguinte URL para ver as informações da reunião")
print(url)

Substitua COLE_AQUI_SUA_URL pela URL da API obtida anteriormente e COLE_AQUI_SEU_SEGREDO pelo segredo, e então execute o script.

Após isso, deve imprimir uma URL como https://exemplo.com/bigbluebutton/api/getMeetings?checksum=20e928e8928e8e9f919928e829d999df82882818

:warning: Qualquer pessoa com essa URL pode fazer coisas ruins!

Elas podem ver todas as reuniões em andamento, quantos usuários estão em cada uma, além de obter as credenciais para entrar.

3. Abrir a URL

Abra no modo de navegação anônima para garantir que a URL não seja salva no histórico do navegador devido ao aviso acima.

Basta iniciar a reunião que você pretende adicionar e atualizar a página com a URL da API. Em seguida, você deverá ver algo como:

<response>
<returncode>SUCESSO</returncode>
<meetings>
<meeting>
<meetingName>Nome da sua sala</meetingName>
<meetingID>XXXXXXXXXXXXXXXXXXXXXXXXXXX</meetingID>
...
<attendeePW>YYYYYYY</attendeePW>
<moderatorPW>ZZZZZZZ</moderatorPW>
...

Basta procurar as linhas abaixo da reunião desejada e anotar:

  • meetingID
  • attendeePW
  • moderatorPW

Depois de obter esses dados, apague todos os arquivos e feche todas as abas com acesso à API.
Não queremos nenhum incidente de segurança!

4. “Adicionar BigBlueButton” ao seu post

Em vez de adicionar pela interface regular “Adicionar BigBlueButton”, basta colar o seguinte no seu post:

[wrap=discourse-bbb meetingID="XXXXX" attendeePW="YYYYY" moderatorPW="ZZZZZ"  mobileIframe="false" desktopIframe="false"][/wrap] 

E substitua pelo que você obteve no passo 3:

  • XXXXX pelo conteúdo de meetingID
  • YYYYY pelo conteúdo de attendeePW
  • ZZZZZZ pelo conteúdo de moderatorPW

Em seguida, salve o post.

6. Agora deve estar funcionando \o/

Agora você deve ser capaz de participar tanto pelo Discourse quanto pela outra interface que estava usando. Se era o Greenlight, agora também pode participar via link.}

3 curtidas

Olá,

Ótimo trabalho com o plugin, nós adoramos!

Notei algumas coisas que ainda precisam ser ajustadas, então estou documentando aqui:

  1. Compartilhamento de tela não funciona
    (Não há nenhum popup pedindo permissão, o processo simplesmente falha)

  2. Quando você incorpora a sessão em um iframe, não é possível gravar a reunião

Estava me perguntando se há algum lugar para reportar isso? O repositório no GitHub parece ter os problemas desabilitados.

A compartilhamento de tela funciona, usamos extensivamente. O Chrome não permite o compartilhamento de tela para um iFrame por questões de privacidade e segurança.

O Chrome não gosta de compartilhamento de tela em um iFrame por questões de privacidade/segurança.

Acho que é por isso que também não funciona no Firefox..