| Resumo | Adiciona chamadas de voz e vídeo peer-to-peer (WebRTC) dentro do Discourse. Chamadas individuais a partir de um botão flutuante ou do compositor de chat 1:1; widget integrado e interface de chamada (UI). Sem aplicativos externos. Seu servidor Discourse faz apenas o sinalizador (sem mídia). Áudio/vídeo vai diretamente entre os dois navegadores (P2P) quando possível; você pode adicionar servidores TURN opcionais no Admin para que, quando o P2P direto falhar (ex: NAT/firewall restritivo), a mídia seja retransmitida via TURN e a chamada ainda funcione. | |
| Link do Repositório | GitHub - idiskuz/diskuz-call: Voice calls (WebRTC) for Discourse. P2P calls between users, built-in UI. Created for diskuz.com. · GitHub | |
| Guia de Instalação | Como instalar plugins no Discourse | |
| Comunidade diskuz Call | Comunidade de Suporte em diskuz.com para este novo plugin. |
Funcionalidades
- Voz e vídeo P2P (WebRTC) — O Discourse apenas lida com a sinalização (oferta/resposta, ICE); ele nunca recebe ou armazena áudio/vídeo. STUN (padrão: Google) ajuda os dois navegadores a se encontrarem; a mídia flui diretamente entre eles (P2P verdadeiro). TURN (opcional, configurável em Admin → Servidores ICE) é um retransmissor: quando o P2P direto falha (NAT simétrico, firewall corporativo, etc.), a mídia vai Navegador A → Servidor TURN → Navegador B para que a chamada ainda funcione. Adicione TURN se os usuários relatarem chamadas falhadas ou áudio unidirecional.
- Botão flutuante (canto inferior direito) — Abre um widget para digitar um nome de usuário e iniciar uma chamada. Oculto quando o compositor de tópicos ou o chat está aberto. O Admin pode desativá-lo em todo o site.
- Botão de chamada no chat 1:1 — Ícone no compositor de chat para iniciar uma chamada com o outro usuário. O Admin pode desativá-lo em todo o site. Visível apenas para grupos permitidos quando ativado.
- Acesso baseado em grupos — Apenas usuários em grupos configurados veem e usam o diskuz Call. Opcional: “chamado deve seguir o chamador” (requer Discourse Follow).
- Grupos separados para “vídeo permitido” — Controla quem pode ligar a câmera durante uma chamada.
- Toque configurável — Som quando uma chamada chega: nenhum, padrão, ding, sino, chat, personalizado (até 10 URLs de MP3; o usuário escolhe um no widget) ou predefinições alternativas integradas. Separadamente, as notificações do Discourse (ícone de sino) mostram “está te ligando” para chamadas recebidas e “Chamada perdida” com o tempo para chamadas perdidas.
- Widget — Duas páginas: “Ligar para um amigo” (página inicial) e Notificações (Recebidas, Enviadas, Recentes, Perdidas; até 10 por guia; nomes de usuário clicáveis para ligar novamente). Desktop: arrastável pela barra superior. Celular: tela cheia.
- Durante uma chamada — Duração, silenciar, alto-falante, vídeo ligado/desligado, desfocar (desktop/Android), modo ouvido no celular (overlay escuro; toque 3x para desbloquear). Status do usuário (Online, Ocupado, Offline) no navegador; chamadas recebidas podem ser rejeitadas automaticamente quando Ocupado/Offline. Se o usuário mudar para outra aba, um cronômetro de 60 segundos começa; se não retornar, a chamada termina.
- Localização — Inglês e Italiano (cliente e servidor).
Status: Beta. Para chamadas falhadas ou áudio unidirecional, configure o TURN em Admin → Plugins → Servidores ICE.
Configuração
- Instalar — Adicione o plugin (ex: via hooks de
app.ymlou manualmente no diretório de plugins):git clone https://github.com/idiskuz/diskuz-call.git- Recompile o app (ex:
./launcher rebuild app).
- Ativar — Admin → Plugins: ative diskuz Call (se listado). Admin → Configurações → Plugins: ative Enable diskuz Call.
- Acesso — Defina Quem pode ver e usar diskuz Call para os grupos desejados (ex:
1|2|3para admins, moderadores, equipe). - Opcional — Configure Mostrar botão flutuante / Mostrar botão de chat, Exigir que o chamado siga o chamador (com Discourse Follow), Som para chamadas recebidas, Toques personalizados ou Toque alternativo, Grupos que podem ativar o vídeo, Cor primária e Servidores ICE (JSON TURN) se necessário para NAT/firewall.
Requisitos: Discourse (usa mensagens em tempo real integradas para sinalização). Opcional: Discourse Follow (para “chamado deve seguir o chamador”). Navegador com WebRTC, microfone (e câmera para vídeo).
Configurações
| Nome | Descrição |
|---|---|
| Enable diskuz Call | Interruptor mestre para o plugin. |
| Who can see and use diskuz Call | Lista de grupos (ex: admins, moderadores, equipe por ID). Apenas esses usuários veem o plugin e podem fazer/receber chamadas. |
| Require the callee to follow the caller | Quando ativado (com Discourse Follow), o chamado deve seguir o chamador para receber chamadas. |
| Show floating button | LIGADO: botão flutuante visível apenas para os grupos permitidos. DESLIGADO: oculto para todos. |
| Show chat button | LIGADO: Botão de chamada no chat 1:1 visível apenas para os grupos permitidos. DESLIGADO: oculto para todos. |
| Groups that can enable video | Lista de grupos para quem pode usar o botão Vídeo durante uma chamada. |
| Primary color | Cor Hex (ex: #13c98c) para botão e acentos. |
| Sound for incoming calls | nenhum, padrão, ding, sino, chat, personalizado ou alternativo. |
| Custom ringtones 1–10 | URLs de MP3. Usado quando o Som é personalizado; o usuário escolhe um no widget. |
| Alternative ringtone | Predefinição quando o Som é alternativo (ex: soft, classic, modern, festivo, marimba, relax1–5). |
| ICE servers | Array JSON opcional para STUN/TURN. Vazio = Apenas Google STUN. |
| Debug log | Quando LIGADO, mensagens \[diskuz-call\] no console do navegador (F12). Para suporte; desative em produção. |
Autores: diskuz.com, Cristian Deraco
Créditos: Conceito, funcionalidades e design por Cristian Deraco (diskuz.com). Implementação com desenvolvimento assistido por IA.
Versão: 0.4.0-beta
Este não é um plugin oficial do Discourse.
Muito animado para compartilhar isso com todos vocês — o diskuz Call está finalmente no ar! Mal posso esperar para saber o que vocês acharam ![]()







