Zoom Discourse

:discourse2: Riepilogo Discourse Zoom offre agli amministratori e agli utenti di Discourse, dotati di un abbonamento Zoom a pagamento, la possibilitĂ  di pianificare, gestire e partecipare a webinar Zoom direttamente dalla piattaforma Discourse.
:hammer_and_wrench: Link al Repository https://github.com/discourse/discourse-zoom
:open_book: Guida all’Installazione Come installare i plugin in Discourse

Panoramica

Questo plugin integra i webinar Zoom in un’istanza di Discourse. I webinar Zoom possono essere associati a discussioni (topic); gli utenti di Discourse possono registrarsi ai webinar e parteciparvi al momento dell’avvio.

:warning: A causa della deprecazione dell’autenticazione JWT da parte di Zoom, a partire dal 1° agosto 2023, il meccanismo di autenticazione del plugin è cambiato da JWT (ora deprecato; Zoom lo rimuoverà il 1° settembre) a OAuth Server-to-Server. Gli utenti esistenti del plugin devono aggiornare le proprie impostazioni.

FunzionalitĂ 

  • Quando un webinar Zoom inizia, il pulsante “Registrati” passa automaticamente a “Partecipa”; cliccandolo si avvia il webinar utilizzando l’SDK Zoom in un endpoint dedicato all’interno della tua community Discourse
  • Invia automaticamente promemoria ai partecipanti registrati N minuti prima dell’evento (N è configurabile nelle impostazioni del plugin; di default i promemoria sono disattivati)
  • Gli amministratori possono aggiungere relatori (panelists) a un webinar in Discourse
  • Gli amministratori possono aggiungere un link alle registrazioni video del webinar in Discourse, che verrĂ  visualizzato agli utenti dopo la fine dell’evento
  • Gli ospiti e i relatori degli eventi Zoom sono associati agli account utente di Discourse

Utilizzo

Per utilizzare il plugin Discourse Zoom, devi prima installarlo nella tua istanza di Discourse e configurarlo con le credenziali della tua applicazione OAuth Server-to-Server di Zoom. Una volta configurato il plugin, puoi creare un nuovo webinar Zoom creando una nuova discussione (topic) e associandola al webinar. Gli utenti potranno quindi registrarsi al webinar direttamente dalla discussione.

Installazione

Passaggio 1: Installa il plugin nella tua istanza di Discourse

Puoi installare il plugin nella tua istanza di Discourse seguendo le istruzioni qui.

Passaggio 2: Crea un’app OAuth Server-to-Server nel Marketplace Zoom


Per iniziare, dovrai creare un’app OAuth Server-to-Server nel Marketplace Zoom. Questa app sarà necessaria per effettuare richieste all’API di Zoom e ricevere notifiche degli eventi tramite Webhook


Passaggio 3: Configura il plugin

Una volta installato il plugin, vai alle impostazioni del tuo sito Discourse, seleziona la casella di controllo zoom enabled e salva.

Dal Marketplace Zoom, vai alla scheda Credenziali dell’app:

Quindi copia e incolla i valori nelle impostazioni del sito corrispondenti nella tua istanza di Discourse:

  • zoom s2s account id
  • zoom s2s client id
  • zoom s2s client secret

Passaggio 4: Imposta il token segreto del webhook

Nella scheda Funzionalità della tua applicazione OAuth Server-to-Server di Zoom, copia il “Secret Token” e aggiungilo all’impostazione del sito zoom webhooks secret token del tuo sito Discourse.

Passaggio 5: Abilita le sottoscrizioni agli eventi

Rimanendo nella scheda Funzionalità della tua applicazione OAuth Server-to-Server di Zoom, abilita “Event Subscriptions” e clicca sul pulsante Add Event Subscription:

Successivamente, imposta l’“Event notification endpoint URL” su:

https://TUOSITO.COM/zoom/webhooks/webinars.json

quindi seleziona il pulsante + Add Events:

Apri la scheda Webinar dall’elenco dei tipi di evento e seleziona tutti gli eventi elencati. Se non riesci a vedere le autorizzazioni per l’evento Webinar, consulta come abilitare le autorizzazioni.

Sotto l’“Event notification endpoint URL” che hai impostato in precedenza, trova il pulsante Validate:

Se tutto funziona correttamente, dovrebbe apparire Un'icona di spunta con "Validated" in verde.

Infine, seleziona il pulsante Save in fondo alla pagina.

Passaggio 6: Scope

Una volta impostate le sottoscrizioni agli eventi, passa alla scheda Scopes e clicca sul pulsante Add Scopes. Qui dovrai selezionare i seguenti scope cercando i valori indicati nelle tabelle, manualmente o utilizzando valori parziali; ad esempio, invece di cercare webinar:read:list_panelists:admin, cerca webinar:read:. Questo restringerĂ  gli elementi mostrati, rendendo piĂš facile trovare quelli necessari.

Nell’app OAuth Server-to-Server, sotto la scheda scope, clicca sul pulsante Add Scopes e apparirà una finestra:

Nella ricerca degli scope, cerca per nome completo o parziale. Per facilitare questa operazione, puoi copiare e incollare ciascuno degli scope nelle tabelle seguenti o cercarli sotto la scheda corrispondente:

Utenti

scope desc
user:read:user:admin Visualizza un utente
user:read:email:admin Verifica l’email di un utente
user:read:list_users:admin Visualizza gli utenti

Webinar

scope desc
webinar:read:list_panelists:admin Visualizza i relatori di un webinar
webinar:read:list_absentees:admin Visualizza gli assenti di un webinar passato
webinar:read:webinar:admin Visualizza un webinar
webinar:read:registrant:admin Visualizza un partecipante registrato a un webinar
webinar:read:list_registrants:admin Visualizza i partecipanti registrati a un webinar
webinar:write:batch_registrants:admin Aggiungi partecipanti registrati a un webinar
webinar:delete:webinar:admin Elimina un webinar
webinar:write:panelist Aggiungi relatori a un webinar
webinar:delete:registrant Rimuovi un partecipante registrato da un webinar
webinar:write:webinar Crea un webinar per un utente
webinar:update:status Aggiorna lo stato di un webinar
webinar:delete:panelist Rimuovi un relatore da un webinar
webinar:update:webinar Aggiorna un webinar
webinar:write:registrant Aggiungi un partecipante registrato a un webinar

Webinar

scope desc
webinar:read:list_panelists:admin Visualizza i relatori di un webinar
webinar:read:list_absentees:admin Visualizza gli assenti di un webinar passato
webinar:read:webinar:admin Visualizza un webinar
webinar:read:registrant:admin Visualizza un partecipante registrato a un webinar
webinar:read:list_registrants:admin Visualizza i partecipanti registrati a un webinar
webinar:write:batch_registrants:admin Aggiungi partecipanti registrati a un webinar
webinar:delete:webinar:admin Elimina un webinar
webinar:write:panelist Aggiungi relatori a un webinar
webinar:delete:registrant Rimuovi un partecipante registrato da un webinar
webinar:write:webinar Crea un webinar per un utente
webinar:update:status Aggiorna lo stato di un webinar
webinar:delete:panelist Rimuovi un relatore da un webinar
webinar:update:webinar Aggiorna un webinar
webinar:write:registrant Aggiungi un partecipante registrato a un webinar

Passaggio 7: Crea un’app Meeting SDK

:warning: Zoom ha apportato modifiche sul loro lato; stiamo lavorando per aggiornare la guida.


L’app Meeting SDK autentica l’utente in modo che possa partecipare alla riunione del webinar


Inizia creando un’app General App e, sotto Select how the app is managed, seleziona User-managed.

Sotto la scheda Informazioni di base nella tua app General App, copia e incolla il Client ID/ SDK key nel campo zoom sdk key e il Client Secret/SDK secret nel campo zoom sdk secret.

Scorrendo verso il basso, troverai la sezione OAuth Information; nel campo OAuth Redirect URL inserisci l’URL del tuo sito, ad esempio https://TUOSITO.com.

Passaggio 8: Specifica l’utilizzo della tua app

Sotto la scheda Features, seleziona la sotto-scheda Embed e abilita Meeting SDK.

Limitazioni

Il plugin funziona solo con webinar che non richiedono registrazione su Zoom.

Avviso sulle modifiche che interrompono la compatibilitĂ 

A causa delle deprecazioni nell’API di Zoom, le vecchie istanze del plugin dovranno essere configurate seguendo i passaggi indicati in questo post.

:discourse2: Ospitato da noi? Questo plugin è disponibile nei nostri piani Enterprise.

63 Mi Piace

Grazie mille per il lavoro svolto su questa funzionalità, è ottima!

Sono riuscito a installare il plugin, creare l’app JWT su Zoom e configurare il mio Discourse come descritto.
Tuttavia, sto riscontrando problemi quando utilizzo il pulsante Webinar di Zoom nell’editor per associare una riunione programmata al post.

Sarebbe ottimo se poteste aggiungere una spiegazione su cosa esattamente si debba inserire nel campo di testo sotto “Aggiungi Webinar”. Né l’ID della riunione né l’URL completo sembrano funzionare per me.

Un’altra piccola nota: l’URL del repository collegato nella pagina “Plugin” della dashboard di amministrazione punta a https://github.com/discourse-org/discourse-zoom, mentre dovrebbe puntare a GitHub - discourse/discourse-zoom: Integrate Zoom events in Discourse. · GitHub

2 Mi Piace

Concetto interessante, e sembra un’ottima esperienza per i membri della community!

Mi chiedo se sia già stato preso in considerazione l’idea di abilitare un flusso di lavoro più generico (agnostico rispetto al fornitore) con questo plugin; essenzialmente per offrire lo stesso embedding di un timer di countdown per una data e un’ora specifiche, specificando un host e/o un relatore, un link all’URL del webinar, link successivi alle registrazioni, ecc.

Jiti (open source) sarebbe l’esempio che avevo in mente, ma esistono ovviamente diverse opzioni in questo ambito.

2 Mi Piace

Devi inserire l’ID del webinar. Nei log del tuo sito in /logs, dovresti essere in grado di vedere ulteriori dettagli se non riesce ancora ad aggiungere l’evento nella finestra modale. Ho anche risolto il problema dell’URL che hai menzionato, grazie per averlo segnalato.

Purtroppo, al momento, questo non fornisce un flusso di lavoro agnostico rispetto al fornitore. Le chiamate all’API di Zoom sono comunque astratte, quindi è possibile aggiungere il supporto per un altro fornitore con un po’ di impegno (anche se il plugin dovrebbe essere rinominato in qualcosa di meno legato a Zoom).

8 Mi Piace

C’è la possibilità di aggiungere il supporto per le riunioni senza registrazione a questo plugin, così come per i webinar? Ottimo lavoro!

7 Mi Piace

Ora che Zoom richiede una password per tutte le riunioni e i webinar, penso che il plugin non funzioni. Ho provato a creare un webinar e quando provo a entrarci ricevo questo errore: ‘La connessione è scaduta e non puoi entrare nella riunione. Verifica la connettività di rete e riprova’.

3 Mi Piace

Ci darò un’occhiata oggi. È possibile che si tratti di un problema temporaneo: il client web di Zoom è contrassegnato come “in manutenzione” sulla loro pagina di stato all’indirizzo status.zoom.us.

5 Mi Piace

Voglio solo precisare che l’uso dei webinar richiede un abbonamento minimo di 40,00 al mese per l'attivazione, più il piano Pro da 14,99 al mese. Saluti.

2 Mi Piace

SĂŹ, purtroppo sembra che il Web SDK di Zoom sia offline al momento. Dicono che stanno lavorando per riportarlo online (non sono del tutto sicuro di cosa significhi).

Per il momento, quindi, ho aggiunto una soluzione alternativa al plugin: quando si partecipa a un webinar, se il tentativo di accesso tramite SDK fallisce, verrĂ  mostrata questa schermata:

8 Mi Piace

Per tua informazione, una cooperativa che ho co-fondato ha scelto https://bigbluebutton.org/. L’auto-ospitazione ci è costata molto meno di un account webinar di Zoom.

11 Mi Piace

Ciao Penar, ho appena notato che c’è una scheda Webinar nel profilo degli utenti. Come amministratore, posso visualizzarla come previsto, ma come utente regolare ricevo questo errore:

Accesso negato

mentre si tenta di caricare [/topics/webinar-registrations/chris_murray.json](https://community.naturephotographers.network/topics/webinar-registrations/chris_murray.json)

Dai log:

Errore: Vietato
URL: https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js
Riga: 1
Colonna: 267206
Posizione della finestra: https://community.naturephotographers.network/u/chris_murray/activity


o/t</<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:267206
o/t<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:267309
o@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:267390
trigger@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:545370
A</e._onError/<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:550247
f</t.invoke@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:490055
f</t.flush@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:489055
p</t.flush@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:491070
t</t._end@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:496499
t</t.end@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:493035
t</t._run@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:497037
t</t.run@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:493643
c@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:359842
i/r.error@https://community.naturephotographers.network/assets/application-54c82e8fd96fa4eb82fa7465a602da175078108feb909cfeec95f696f02b5854.js:1:203298
i@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:27754
fireWith@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:28522
l@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:78753
o/<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:81055

1 Mi Piace

Non riesco a riprodurlo. Ho testato su piĂš siti con diversi nomi utente, incluso localmente con un nome utente contenente un trattino basso.

SĂŹ, il plugin utilizza il WebSDK di Zoom e presenta problemi in alcuni browser.

1 Mi Piace

Per tua informazione, ho appena tenuto un webinar usando questa funzione e il pulsante “Unisciti” non ha funzionato per nulla: tutti hanno ricevuto un timeout da Zoom, ma ho indirizzato tutti al link regolare di Zoom, che ha funzionato perfettamente. Sembra quindi che il WebSDK stia avendo molti problemi. Forse potremmo aggiungere un’opzione per inserire manualmente l’URL nel pulsante “Unisciti”, invece di fare affidamento sul WebSDK, dato che sta fallendo?

1 Mi Piace

L’SDK di Zoom dovrebbe funzionare se fai il deploy: ho aggiornato il plugin la settimana scorsa. Tuttavia, hanno bloccato tutte le versioni precedenti, quindi se non hai effettuato il deploy di recente, questo potrebbe spiegarlo. Inoltre, aggiungere il link di Zoom come opzione ha senso.

2 Mi Piace

Grazie, Penar, non sapevo che ci fosse un aggiornamento; speriamo che questo risolva il problema per la prossima volta.

Una domanda sul video che puoi aggiungere in seguito: funziona solo per le registrazioni cloud di Zoom? Se uso Vimeo o YouTube, mi dice che non è un formato supportato. Solo per curiosità, non è un grosso problema dato che posso semplicemente includerlo nel post.

1 Mi Piace

Sì, assolutamente. Quel campo funziona solo con un URL a un file video diretto. YouTube o Vimeo non funzionano, ma come hai detto, è molto più semplice utilizzare l’oneboxing per gli URL di YouTube/Vimeo.

3 Mi Piace

Vedi: BigBlueButton video conference

1 Mi Piace

Solo un piccolo feedback dopo averlo utilizzato alcune volte.

  1. Il pulsante “Unisciti” nascosto fino all’inizio del webinar non è user-friendly. Ricevo diverse email prima dell’inizio del webinar che chiedono dove si trovi il link per unirsi, anche se l’ho specificato chiaramente nella descrizione del webinar e nella notifica che apparirà all’inizio. La gente semplicemente non legge. Personalmente, preferirei avere il pulsante “Unisciti” sempre visibile; se qualcuno ci clicca in anticipo, gli verrà semplicemente comunicato che il webinar non è ancora iniziato e tornerà a controllare l’orario effettivo di inizio.

  2. Sarebbe possibile supportare le sessioni di prova? Con i webinar, esiste l’opzione per questo: l’host e i panelisti possono parlare tra loro prima senza essere in diretta per i partecipanti. Possono cliccare sul link della riunione Zoom durante questo periodo e riceveranno un avviso che indica che la riunione non è ancora iniziata, ma si trovano in una sorta di sala d’attesa; si uniranno automaticamente non appena andremo in diretta. Questo risolverebbe molti problemi per gli utenti.

3 Mi Piace

Scusa per il ritardo, David.

C’è un’impostazione che probabilmente può aiutarti:

Se imposti questo valore a 30, il pulsante apparirà 30 minuti prima dell’orario programmato del webinar.

Dovresti poter utilizzare anche questo con l’impostazione sopra. L’ultima volta che ho controllato, i webhook di Zoom non vengono attivati quando la sessione di prova diventa un evento completo, il che rende un po’ complicata l’altra dinamica.

3 Mi Piace

Grazie Penar, ma non è proprio quello il problema.

Per prima cosa, il mio pulsante “Iscriviti ora” non funziona più affatto:

In passato funzionava, ma questo problema è iniziato nelle ultime due settimane. Inoltre, non vedo nemmeno che appaia il link di fallback.

Poi, c’è un problema separato che ho già descritto prima: il problema della modalità prova. Quando avevo il problema menzionato in precedenza, funzionava così: quando avviavo il webinar in modalità prova, il pulsante “Unisciti” non appariva, indipendentemente da come era impostato zoom join x mins before start; appariva solo quando iniziavo effettivamente la trasmissione, cosa che preferisco fare solo 5 minuti prima dell’inizio. Idealmente, il pulsante “Unisciti” dovrebbe apparire non appena viene impostato il tempo previsto, così gli utenti riceverebbero la notifica di Zoom che il webinar non è ancora iniziato.

Pensi che potresti aggiungere un’opzione per cambiare semplicemente il pulsante di registrazione in “Unisciti” al tempo impostato, usando direttamente il link di Zoom? Non un link di fallback, ma un link forzato per aggirare completamente questo problema. Grazie ancora, Penar!