| Riepilogo | Aggiunge chiamate vocali e video peer-to-peer (WebRTC) all’interno di Discourse. Chiamate uno-a-uno da un pulsante mobile o dal compositore di chat 1:1; widget integrato e interfaccia utente per le chiamate. Nessuna app esterna. Il tuo server Discourse gestisce solo la segnalazione (nessun media). L’audio/video va direttamente tra i due browser (P2P) quando possibile; puoi aggiungere server TURN opzionali in Admin in modo che quando il P2P diretto fallisce (ad esempio, NAT/firewall restrittivi), i media vengano inoltrati tramite TURN e la chiamata funzioni comunque. | |
| Link Repository | GitHub - idiskuz/diskuz-call: Voice calls (WebRTC) for Discourse. P2P calls between users, built-in UI. Created for diskuz.com. · GitHub | |
| Guida all’installazione | Come installare i plugin in Discourse | |
| Community diskuz Call | ComunitĂ di supporto su diskuz.com per questo nuovo plugin. |
FunzionalitĂ
- Voce e video P2P (WebRTC) — Discourse gestisce solo la segnalazione (offerta/risposta, ICE); non riceve né memorizza mai audio/video. STUN (default: Google) aiuta i due browser a trovarsi; il media fluisce quindi direttamente tra loro (vero P2P). TURN (opzionale, configurabile in Admin → ICE servers) è un relay: quando il P2P diretto fallisce (NAT simmetrico, firewall aziendale, ecc.), i media vanno A → server TURN → B in modo che la chiamata funzioni comunque. Aggiungi TURN se gli utenti segnalano chiamate fallite o audio a senso unico.
- Pulsante mobile (in basso a destra) — Apre un widget per digitare un nome utente e avviare una chiamata. Nascosto quando sono aperti il compositore dell’argomento o la chat. L’Admin può disabilitarlo a livello di sito.
- Pulsante di chiamata nella chat 1:1 — Icona nel compositore della chat per avviare una chiamata con l’altro utente. L’Admin può disabilitarlo a livello di sito. Visibile solo ai gruppi consentiti quando abilitato.
- Accesso basato su gruppi — Solo gli utenti nei gruppi configurati vedono e utilizzano diskuz Call. Opzionale “il chiamato deve seguire il chiamante” (richiede Discourse Follow).
- Gruppi separati per “video consentito” — Controlla chi può attivare la videocamera durante una chiamata.
- Suoneria configurabile — Suono quando arriva una chiamata: nessuno, predefinito, ding, campana, chat, personalizzato (fino a 10 URL MP3; l’utente ne sceglie uno nel widget) o preset alternativi integrati. Separamente, le notifiche di Discourse (icona a campana) mostrano “ti sta chiamando” per le chiamate in arrivo e “Chiamata persa” con l’ora per le chiamate perse.
- Widget — Due pagine: “Chiama un amico” (home) e Notifiche (Ricevute, Inviate, Recenti, Perse; fino a 10 per scheda; nomi utente cliccabili per richiamare). Desktop: trascinabile tramite la barra superiore. Mobile: a schermo intero.
- Durante una chiamata — Durata, muto, altoparlante, video attivo/disattivo, sfocatura (desktop/Android), modalità orecchio su mobile (overlay scuro; tocca 3 volte per sbloccare). Stato utente (Online, Occupato, Offline) nel browser; le chiamate in arrivo possono essere rifiutate automaticamente quando Occupato/Offline. Se l’utente passa a un’altra scheda, parte un timer di 60 secondi; se non ritorna, la chiamata termina.
- Localizzazione — Inglese e Italiano (client e server).
Stato: Beta. Per chiamate fallite o audio a senso unico, configura TURN in Admin → Plugins → ICE servers.
Configurazione
- Installazione — Aggiungi il plugin (ad esempio tramite hook di
app.ymlo manualmente nella directory dei plugin):git clone https://github.com/idiskuz/diskuz-call.git- Ricompila l’app (ad esempio
./launcher rebuild app).
- Abilita — Admin → Plugins: abilita diskuz Call (se elencato). Admin → Settings → Plugins: abilita Enable diskuz Call.
- Accesso — Imposta Who can see and use diskuz Call sui gruppi desiderati (ad esempio
1|2|3per amministratori, moderatori, staff). - Opzionale — Configura Show floating button / Show chat button, Require the callee to follow the caller (con Discourse Follow), Sound for incoming calls, Custom ringtones o Alternative ringtone, Groups that can enable video, Primary color e ICE servers (TURN JSON) se necessario per NAT/firewall.
Requisiti: Discourse (utilizza la messaggistica in tempo reale integrata per la segnalazione). Opzionale: Discourse Follow (per “il chiamato deve seguire il chiamante”). Browser con WebRTC, microfono (e fotocamera per il video).
Impostazioni
| Nome | Descrizione |
|---|---|
| Enable diskuz Call | Interruttore principale per il plugin. |
| Who can see and use diskuz Call | Elenco dei gruppi (ad esempio admin, moderatori, staff per ID). Solo questi utenti vedono il plugin e possono effettuare/ricevere chiamate. |
| Require the callee to follow the caller | Se abilitato (con Discourse Follow), il chiamato deve seguire il chiamante per ricevere chiamate. |
| Show floating button | ON: pulsante mobile visibile solo ai gruppi consentiti. OFF: nascosto a tutti. |
| Show chat button | ON: pulsante di chiamata nella chat 1:1 visibile solo ai gruppi consentiti. OFF: nascosto a tutti. |
| Groups that can enable video | Elenco dei gruppi per chi può usare il pulsante Video durante una chiamata. |
| Primary color | Colore esadecimale (ad esempio #13c98c) per pulsante e accenti. |
| Sound for incoming calls | none, default, ding, bell, chat, custom, o alternative. |
| Custom ringtones 1–10 | URL MP3. Usati quando Sound è custom; l’utente ne sceglie uno nel widget. |
| Alternative ringtone | Preset quando Sound è alternative (ad esempio soft, classic, modern, festivo, marimba, relax1–5). |
| ICE servers | Array JSON opzionale per STUN/TURN. Vuoto = solo Google STUN. |
| Debug log | Quando ON, messaggi \[diskuz-call\] nella console del browser (F12). Per supporto; disabilitare in produzione. |
Autori: diskuz.com, Cristian Deraco
Crediti: Concetto, funzionalità e design di Cristian Deraco (diskuz.com). Implementazione con sviluppo assistito dall’IA.
Versione: 0.4.0-beta
Questo non è un plugin Discourse ufficiale.
Super entusiasta di condividere questo con tutti voi — diskuz Call è finalmente disponibile! Non vedo l’ora di sapere cosa ne pensate ![]()







