Discourse Zoom

:discourse2: Zusammenfassung Discourse Zoom ermöglicht es Discourse-Administratoren und -Nutzern mit einem kostenpflichtigen Zoom-Abonnement, Zoom-Webinare direkt aus ihrer Discourse-Plattform heraus zu planen, zu verwalten und daran teilzunehmen.
:hammer_and_wrench: Repository-Link https://github.com/discourse/discourse-zoom
:open_book: Installationsanleitung So installieren Sie Plugins in Discourse

Überblick

Dieses Plugin integriert Zoom-Webinare in eine Discourse-Instanz. Zoom-Webinare können mit Themen verknüpft werden, Discourse-Nutzer können sich für Webinare registrieren und daran teilnehmen, sobald sie beginnen.

:warning: Aufgrund der Abschaffung der JWT-Authentifizierung durch Zoom hat sich der Authentifizierungsmechanismus des Plugins ab dem 1. August 2023 von JWT (jetzt veraltet, Zoom wird es am 1. September entfernen) auf Server-to-Server OAuth geändert. Bestehende Nutzer des Plugins müssen ihre Einstellungen aktualisieren.

Funktionen

  • Wenn ein Zoom-Webinar startet, wechselt die Schaltfläche „Registrieren“ automatisch zu „Beitreten“, und ein Klick darauf startet das Webinar mit dem Zoom SDK auf einem dedizierten Endpunkt innerhalb Ihrer Discourse-Community
  • Automatische Erinnerung an Webinar-Registrierte N Minuten vor dem Ereignis (N ist in den Plugin-Einstellungen konfigurierbar, standardmäßig sind Erinnerungen deaktiviert)
  • Administratoren können Panelisten zu einem Webinar in Discourse hinzufügen
  • Administratoren können einen Link zu Videoaufzeichnungen des Webinars in Discourse hinzufügen, der den Nutzern nach Ende des Ereignisses angezeigt wird
  • Zoom-Event-Hosts und Panelisten werden Discourse-Nutzerkonten zugeordnet

Verwendung

Um das Discourse Zoom-Plugin zu verwenden, müssen Sie es zunächst in Ihrer Discourse-Instanz installieren und mit Ihren Zoom Server-to-Server OAuth-App-Anmeldedaten konfigurieren. Sobald das Plugin eingerichtet ist, können Sie ein neues Zoom-Webinar erstellen, indem Sie ein neues Thema erstellen und es mit dem Webinar verknüpfen. Nutzer können sich dann direkt über das Thema für das Webinar registrieren.

Installation

Schritt 1: Installieren Sie das Plugin in Ihrer Discourse-Instanz

Sie können das Plugin in Ihre Discourse-Instanz installieren, indem Sie die Anweisungen hier befolgen.

Schritt 2: Erstellen Sie eine Server-to-Server OAuth-App im Zoom Marketplace


Um zu beginnen, müssen Sie eine Server-to-Server OAuth-App im Zoom Marketplace erstellen. Diese App wird benötigt, um Anfragen an die Zoom-API zu stellen und Ereignisbenachrichtigungen über Webhooks zu empfangen.


Schritt 3: Konfigurieren Sie das Plugin

Sobald das Plugin installiert ist, gehen Sie zu Ihren Discourse-Site-Einstellungen und aktivieren Sie das Kontrollkästchen zoom enabled (Zoom aktiviert) und speichern Sie.

Gehen Sie im Zoom Marketplace zum Tab App Credentials (App-Anmeldedaten):

Kopieren Sie dann die Werte und fügen Sie sie in die entsprechenden Site-Einstellungen in Ihrer Discourse-Instanz ein:

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

Schritt 4: Legen Sie das Webhook-Geheimnis-Token fest

Kopieren Sie auf dem Tab Feature (Funktionen) Ihrer Zoom Server-to-Server OAuth-App das „Secret Token“ (Geheimnis-Token) und fügen Sie es in die Site-Einstellung zoom webhooks secret token (Geheimnis-Token für Zoom-Webhooks) Ihrer Discourse-Site ein.

Schritt 5: Ereignisabonnements aktivieren

Bleiben Sie auf dem Tab Feature (Funktionen) Ihrer Zoom Server-to-Server OAuth-App, aktivieren Sie „Event Subscriptions“ (Ereignisabonnements) und klicken Sie auf die Schaltfläche Add Event Subscription (Ereignisabonnement hinzufügen):

Legen Sie als Nächstes die „Event notification endpoint URL“ (URL des Ereignisbenachrichtigungs-Endpunkts) fest auf:

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

und klicken Sie dann auf die Schaltfläche + Add Events (+ Ereignisse hinzufügen):

Öffnen Sie den Tab Webinar aus der Liste der Ereignistypen und aktivieren Sie alle aufgeführten Ereignisse. Wenn Sie die Berechtigungen für das Webinar-Ereignis nicht sehen können, lesen Sie wie Sie die Berechtigungen aktivieren.

Finden Sie unter der zuvor festgelegten „Event notification endpoint URL“ die Schaltfläche Validate (Validieren):

Es sollte A checkmark icon with "Validated" in green angezeigt werden, wenn alles funktioniert hat.

Wählen Sie abschließend die Schaltfläche Save (Speichern) unten auf der Seite aus.

Schritt 6: Berechtigungen (Scopes)

Sobald Sie die Ereignisabonnements festgelegt haben, wechseln Sie zum Tab Scopes (Berechtigungen) und klicken Sie auf die Schaltfläche Add Scopes (Berechtigungen hinzufügen). Hier wählen Sie die folgenden Berechtigungen aus, entweder durch Suche nach den in den Tabellen angegebenen Werten, manuell oder unter Verwendung von Teilwerten. Beispielsweise suchen Sie statt nach webinar:read:list_panelists:admin nach webinar:read:. Dies verengt die angezeigten Elemente ein, sodass es einfacher ist, die erforderlichen zu finden.

Klicken Sie in der Server-to-Server OAuth-App unter dem Tab Berechtigungen auf die Schaltfläche Add Scopes (Berechtigungen hinzufügen), und es wird ein Fenster angezeigt:

Suchen Sie im Suchfeld für Berechtigungen nach dem vollständigen oder teilweisen Namen. Um dies zu erleichtern, können Sie jede der Berechtigungen in die folgenden Tabellen kopieren und einfügen oder sie unter dem entsprechenden Tab suchen:

Nutzer

scope desc
user:read:user:admin Einen Nutzer anzeigen
user:read:email:admin Die E-Mail-Adresse eines Nutzers verifizieren
user:read:list_users:admin Nutzer anzeigen

Webinar

scope desc
webinar:read:list_panelists:admin Die Panelisten eines Webinars anzeigen
webinar:read:list_absentees:admin Die Abwesenden eines vergangenen Webinars anzeigen
webinar:read:webinar:admin Ein Webinar anzeigen
webinar:read:registrant:admin Die registrierten Nutzer eines Webinars anzeigen
webinar:read:list_registrants:admin Die registrierten Nutzer eines Webinars anzeigen
webinar:write:batch_registrants:admin Registrierte Nutzer zu einem Webinar hinzufügen
webinar:delete:webinar:admin Ein Webinar löschen
webinar:write:panelist Panelisten zu einem Webinar hinzufügen
webinar:delete:registrant Einen registrierten Nutzer eines Webinars entfernen
webinar:write:webinar Ein Webinar für einen Nutzer erstellen
webinar:update:status Den Status eines Webinars aktualisieren
webinar:delete:panelist Einen Panelisten eines Webinars entfernen
webinar:update:webinar Ein Webinar aktualisieren
webinar:write:registrant Einen registrierten Nutzer zu einem Webinar hinzufügen

Webinar

scope desc
webinar:read:list_panelists:admin Die Panelisten eines Webinars anzeigen
webinar:read:list_absentees:admin Die Abwesenden eines vergangenen Webinars anzeigen
webinar:read:webinar:admin Ein Webinar anzeigen
webinar:read:registrant:admin Die registrierten Nutzer eines Webinars anzeigen
webinar:read:list_registrants:admin Die registrierten Nutzer eines Webinars anzeigen
webinar:write:batch_registrants:admin Registrierte Nutzer zu einem Webinar hinzufügen
webinar:delete:webinar:admin Ein Webinar löschen
webinar:write:panelist Panelisten zu einem Webinar hinzufügen
webinar:delete:registrant Einen registrierten Nutzer eines Webinars entfernen
webinar:write:webinar Ein Webinar für einen Nutzer erstellen
webinar:update:status Den Status eines Webinars aktualisieren
webinar:delete:panelist Einen Panelisten eines Webinars entfernen
webinar:update:webinar Ein Webinar aktualisieren
webinar:write:registrant Einen registrierten Nutzer zu einem Webinar hinzufügen

Schritt 7: Erstellen Sie eine Meeting SDK App

:warning: Zoom hat auf ihrer Seite Änderungen vorgenommen. Wir arbeiten daran, die Anleitung zu aktualisieren.


Die SDK-Meeting-App authentifiziert den Nutzer, damit dieser dem Webinar-Meeting beitreten kann.


Beginnen Sie damit, eine General App (Allgemeine App) zu erstellen, und wählen Sie unter Select how the app is managed (Auswählen, wie die App verwaltet wird) User-managed (Vom Nutzer verwaltet) aus.

Kopieren Sie auf dem Tab „Basic Information“ (Grundlegende Informationen) Ihrer Allgemeinen App den Client ID/ SDK key (Client-ID/SDK-Schlüssel) und fügen Sie ihn in das Feld zoom sdk key ein, und den Client Secret/SDK secret (Client-Geheimnis/SDK-Geheimnis) in das Feld zoom sdk secret.

Scrollen Sie nach unten, und Sie finden den Abschnitt OAuth Information (OAuth-Informationen). Geben Sie in OAuth Redirect URL (OAuth-Weiterleitungs-URL) die URL Ihrer Site ein, z. B. https://YOURSITE.com.

Schritt 8: Legen Sie die Verwendung Ihrer App fest

Wählen Sie unter dem Tab Features (Funktionen) den Unter-Tab Embed (Einbetten) aus und aktivieren Sie den Meeting SDK.

Einschränkungen

Das Plugin funktioniert nur mit Webinaren, für die in Zoom keine Registrierung erforderlich ist.

Hinweis zu Breaking Changes

Aufgrund von Abschaffungen in der Zoom-API müssen alte Instanzen des Plugins gemäß den in diesem Beitrag genannten Schritten konfiguriert werden.

:discourse2: Von uns gehostet? Dieses Plugin ist in unseren Enterprise-Plänen verfügbar.

63 „Gefällt mir“

Vielen Dank für die Arbeit an dieser großartigen Funktion!

Ich konnte das Plugin installieren, die JWT-App in Zoom erstellen und mein Discourse wie beschrieben konfigurieren. Allerdings habe ich Probleme, wenn ich die Zoom-Webinar-Schaltfläche im Editor verwende, um einen geplanten Meeting mit einem Beitrag zu verknüpfen.

Es wäre toll, wenn Sie erklären könnten, was genau in das Textfeld unter „Webinar hinzufügen

2 „Gefällt mir“

Spannendes Konzept, und es sieht nach einer tollen Erfahrung für Community-Mitglieder aus!

Mich würde interessieren, ob es bereits Überlegungen gibt, mit diesem Plugin einen allgemeineren, herstellerunabhängigen Workflow zu ermöglichen; im Wesentlichen also die gleiche Einbettung eines Countdown-Timers für ein bestimmtes Datum und eine bestimmte Uhrzeit anzubieten, mit Angabe von Host und/oder Panelist, Link zur Webinar-URL, späteren Links zu Aufzeichnungen usw.

Jiti (Open Source) wäre das Beispiel, das ich im Sinn hatte, aber es gibt offensichtlich mehrere Optionen in diesem Bereich.

2 „Gefällt mir“

Du musst die Webinar-ID eingeben. In den Protokolldateien deiner Website unter /logs solltest du weitere Details finden, falls das Hinzufügen des Events im Modal-Fenster weiterhin nicht funktioniert. Ich habe zudem das von dir erwähnte URL-Problem behoben – vielen Dank für die Meldung.

Leider bietet dies derzeit keinen herstellerunabhängigen Workflow. Die Zoom-API-Aufrufe sind jedoch abstrahiert, sodass es mit etwas Aufwand möglich ist, die Unterstützung für einen anderen Anbieter hinzuzufügen (obwohl das Plugin dann in etwas umbenannt werden müsste, das weniger stark an Zoom erinnert).

8 „Gefällt mir“

Gibt es die Möglichkeit, die Unterstützung für Meetings ohne Registrierung sowie für Webinare zu diesem Plugin hinzuzufügen? Tolle Arbeit!

7 „Gefällt mir“

Da Zoom nun für alle Meetings/Webinare ein Passwort verlangt, ist der Plugin vermutlich defekt. Ich habe versucht, ein Webinar zu erstellen, und beim Betreten erscheint dieser Fehler: ‘Ihre Verbindung ist abgelaufen, und Sie können dem Meeting nicht beitreten. Überprüfen Sie Ihre Netzwerkverbindung und versuchen Sie es erneut.’

3 „Gefällt mir“

Ich werde mich heute darum kümmern. Es könnte sich um ein vorübergehendes Problem handeln. Der Webclient für Zoom ist auf der Statusseite unter status.zoom.us als „in Wartung

5 „Gefällt mir“

Ich möchte nur erwähnen, dass die Nutzung von Webinaren mindestens 40,00 pro Monat für die Aktivierung plus 14,99 pro Monat für den Pro-Plan kostet. Cheers.

2 „Gefällt mir“

Ja, leider scheint Zooms Web SDK vorübergehend offline zu sein. Sie geben an, dass sie daran arbeiten, es wieder online zu bringen (ich bin mir nicht ganz sicher, was das genau bedeutet).

Derzeit habe ich daher eine Workaround-Lösung in das Plugin integriert. Beim Beitreten zu einem Webinar wird nun dieser Bildschirm angezeigt, wenn das Beitreten über das SDK fehlschlägt:

8 „Gefällt mir“

Zur Info: Eine Genossenschaft, die ich mitgegründet habe, hat sich für https://bigbluebutton.org/ entschieden. Die Selbsthosting-Lösung hat uns deutlich weniger gekostet als ein Zoom-Webinar-Konto.

11 „Gefällt mir“

Hallo Penar, mir ist gerade aufgefallen, dass es im Benutzerprofil einen Reiter „Webinar“ gibt. Als Administrator kann ich diesen wie erwartet einsehen, aber als regulärer Benutzer erhalte ich folgende Fehlermeldung:

Zugriff verweigert

Beim Laden von [/topics/webinar-registrations/chris_murray.json](https://community.naturephotographers.network/topics/webinar-registrations/chris_murray.json)

Aus den Logs:

Error: Forbidden
Url: https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js
Line: 1
Column: 267206
Window Location: 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 „Gefällt mir“

Ich kann das nicht reproduzieren. Ich habe es auf mehreren Websites mit verschiedenen Benutzernamen getestet, einschließlich lokal mit einem Benutzernamen, der ein Unterstrich enthält.

Ja, das Plugin nutzt das WebSDK von Zoom und hat in einigen Browsern Probleme.

1 „Gefällt mir“

Zur Info: Ich habe gerade ein Webinar mit dieser Funktion durchgeführt, und der „Join“-Button hat überhaupt nicht funktioniert. Alle haben einen Timeout von Zoom erhalten. Ich habe alle jedoch auf den regulären Zoom-Link verwiesen, der problemlos funktioniert hat. Es scheint also, dass das WebSDK viele Probleme verursacht. Vielleicht könnten wir eine Option einfügen, um die URL für den Join-Button manuell einzugeben, anstatt sich auf das WebSDK zu verlassen, da es fehlschlägt?

1 „Gefällt mir“

Der Zoom SDK sollte funktionieren, wenn Sie deployen. Ich habe das Plugin letzte Woche aktualisiert. Sie haben jedoch alle vorherigen Versionen blockiert, also könnte das erklären, warum es nicht funktioniert, wenn Sie nicht kürzlich deployed haben. Und die Zoom-Link-Option hinzuzufügen, ergibt Sinn.

2 „Gefällt mir“

Danke, Penar, ich wusste nicht, dass es ein Update gibt. Hoffentlich wird das das Problem beim nächsten Mal beheben.

Frage zu dem Video, das du später hinzufügen kannst: Funktioniert das nur für Zoom-Cloud-Aufnahmen? Wenn ich Vimeo oder YouTube verwende, heißt es, dass es kein unterstütztes Format ist. Nur aus Neugier, ist nicht so schlimm, da ich es einfach in den Beitrag aufnehmen kann.

1 „Gefällt mir“

[quote=“davidkingham, Beitrag: 48, Thema: 142711”]
Funktioniert das nur für Zoom-Cloud-Aufnahmen?[/quote]

Ja, genau. Dieses Feld funktioniert nur mit einer URL zu einer direkten Videodatei. YouTube oder Vimeo funktionieren nicht, aber wie du schon sagst, ist es viel einfacher, Oneboxing für YouTube-/Vimeo-URLs zu verwenden.

3 „Gefällt mir“

Siehe: BigBlueButton video conference

1 „Gefällt mir“

Ein kleines Feedback nach mehrfacher Nutzung.

  1. Dass der „Beitreten“-Button erst beim Start des Webinars sichtbar ist, ist nicht benutzerfreundlich. Ich erhalte mehrere E-Mails vor dem Webinar, in denen gefragt wird, wo der Link zum Beitragen ist, obwohl ich ihn in der Webinar-Beschreibung und in der Benachrichtigung, dass er beim Start erscheint, deutlich erwähnt habe. Die meisten Leute lesen einfach nicht. Persönlich würde ich es vorziehen, wenn der „Beitreten“-Button immer sichtbar wäre. Wenn Nutzer ihn zu früh anklicken, würde ihnen lediglich mitgeteilt, dass das Webinar noch nicht begonnen hat, und sie würden zurückblicken, um die tatsächliche Startzeit zu prüfen.

  2. Wäre es möglich, auch Probesitzungen zu unterstützen? Bei einem Webinar besteht die Möglichkeit, dass Gastgeber und Podiumsteilnehmer sich vorab untereinander austauschen können, ohne für die Teilnehmer live zu sein. Sie können in dieser Zeit den Link zum Zoom-Meeting anklicken und erhalten eine Meldung, dass das Meeting noch nicht gestartet ist, befinden sich aber gewissermaßen in einem Warteraum. Sobald wir live gehen, werden sie automatisch verbunden. Dies würde viele Probleme für die Nutzer beheben.

3 „Gefällt mir“

Entschuldige bitte die Verzögerung, David.

Es gibt eine Einstellung, die dir hier wahrscheinlich helfen kann:

Wenn du dies auf 30 stellst, erscheint der Button 30 Minuten vor der geplanten Zeit des Webinars.

Du solltest dies auch mit der oben genannten Einstellung nutzen können. Soweit ich zuletzt geprüft habe, werden die Zoom-Webhooks nicht ausgelöst, wenn die Übungssitzung in eine vollständige Veranstaltung übergeht, was die andere Dynamik etwas kompliziert macht.

3 „Gefällt mir“

Danke, Penar, aber das ist nicht ganz das Problem.

Zunächst einmal funktioniert mein „Jetzt beitreten"-Button überhaupt nicht mehr:

Früher hat er funktioniert, aber das Problem trat in den letzten zwei Wochen auf. Außerdem wird auch der Fallback-Link nicht angezeigt.

Dann gibt es noch ein separates Problem, das ich bereits zuvor beschrieben habe: das Problem mit dem Übungsmodus. Als ich das oben genannte Problem hatte, verlief es so: Wenn ich das Webinar im Übungsmodus starte, erscheint der „Beitreten"-Button nicht, egal wie „zoom join x mins before start