Discourse Zoom

:discourse2: Zusammenfassung Discourse Zoom befähigt Discourse-Administratoren und -Nutzer mit einem kostenpflichtigen Zoom-Abonnement, Zoom-Webinare direkt von ihrer Discourse-Plattform aus 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 Themen zugeordnet werden; Discourse-Nutzer können sich für Webinare registrieren und daran teilnehmen, sobald sie starten.

:warning: Da Zoom die JWT-Authentifizierung deprecated hat, hat sich der Authentifizierungsmechanismus des Plugins ab dem 1. August 2023 von JWT (jetzt deprecated, Zoom wird es am 1. September entfernen) auf Server-zu-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”. Beim Klicken wird das Webinar über das Zoom SDK an einem dedizierten Endpunkt innerhalb Ihrer Discourse-Community gestartet.
  • Benachrichtigt angemeldete Teilnehmer automatisch N Minuten vor dem Ereignis (N ist in den Plugin-Einstellungen konfigurierbar; standardmäßig sind Erinnerungen deaktiviert).
  • Administratoren können in Discourse Panelisten zu einem Webinar hinzufügen.
  • Administratoren können einen Link zu Videoaufzeichnungen des Webinars in Discourse hinzufügen, der nach Ende des Ereignisses den Nutzern angezeigt wird.
  • Zoom-Veranstalter 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 den Zugangsdaten Ihrer Zoom Server-to-Server OAuth-App konfigurieren. Sobald das Plugin eingerichtet ist, können Sie ein neues Zoom-Webinar erstellen, indem Sie ein neues Thema anlegen und es mit dem Webinar verknüpfen. Nutzer können sich dann direkt über das Thema für das Webinar registrieren.

Installation

Schritt 1: Plugin in Ihrer Discourse-Instanz installieren

Sie können das Plugin in Ihrer Discourse-Instanz installieren, indem Sie den Anweisungen hier folgen.

Schritt 2: Erstellen einer 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: Plugin konfigurieren

Nach der Installation des Plugins gehen Sie zu den Einstellungen Ihrer Discourse-Site und aktivieren das Kontrollkästchen zoom enabled, dann speichern Sie.

Gehen Sie im Zoom Marketplace zum Tab App Credentials:

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

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

Schritt 4: Webhook-Geheimnistoken festlegen

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

Schritt 5: Ereignis-Abonnements aktivieren

Während Sie sich noch auf dem Tab Feature Ihrer Zoom Server-to-Server OAuth-App befinden, aktivieren Sie “Event Subscriptions” und klicken Sie auf die Schaltfläche Add Event Subscription:

Setzen Sie anschließend die “Event notification endpoint URL” auf:

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

und wählen Sie die Schaltfläche + Add Events:

Öffnen Sie den Tab Webinar aus der Liste der Ereignistypen und aktivieren Sie alle aufgeführten Ereignisse. Wenn Sie die Webinar-Ereignisberechtigungen nicht sehen können, prüfen Sie wie man die Berechtigungen aktiviert.

Unter der zuvor festgelegten “Event notification endpoint URL” finden Sie die Schaltfläche Validate:

Wenn alles funktioniert hat, sollte Ein Häkchen-Symbol mit "Validated" in Grün angezeigt werden.

Schließlich wählen Sie die Schaltfläche Save am unteren Rand der Seite.

Schritt 6: Scopes

Sobald Sie die Ereignis-Abonnements festgelegt haben, wechseln Sie zum Tab Scopes und klicken Sie auf die Schaltfläche Add Scopes. Hier wählen Sie die folgenden Scopes aus, indem Sie entweder nach den in den Tabellen angegebenen Werten suchen, manuell oder mit Teilwerten suchen. Zum Beispiel: Suchen Sie statt nach webinar:read:list_panelists:admin nach webinar:read:. Dies schränkt die angezeigten Elemente ein, sodass es einfacher ist, die benötigten zu finden.

Klicken Sie in der Server-to-Server OAuth-App unter dem Tab Scopes auf die Schaltfläche Add Scopes, und ein Fenster wird angezeigt:

Suchen Sie im Suchfeld nach dem vollständigen oder teilweise Namen. Um dies zu erleichtern, können Sie jeden der Scopes aus den folgenden Tabellen kopieren und einfügen oder sie unter dem entsprechenden Tab suchen:

Users

scope desc
user:read:user:admin Einen Benutzer anzeigen
user:read:email:admin E-Mail-Adresse eines Benutzers verifizieren
user:read:list_users:admin Benutzer anzeigen

Webinar

scope desc
webinar:read:list_panelists:admin Panelisten eines Webinars anzeigen
webinar:read:list_absentees:admin Abwesende eines vergangenen Webinars anzeigen
webinar:read:webinar:admin Ein Webinar anzeigen
webinar:read:registrant:admin Einen Anmelder eines Webinars anzeigen
webinar:read:list_registrants:admin Anmelder eines Webinars anzeigen
webinar:write:batch_registrants:admin Anmelder 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 Anmelder eines Webinars entfernen
webinar:write:webinar Ein Webinar für einen Benutzer erstellen
webinar:update:status Status eines Webinars aktualisieren
webinar:delete:panelist Einen Panelisten eines Webinars entfernen
webinar:update:webinar Ein Webinar aktualisieren
webinar:write:registrant Einen Anmelder zu einem Webinar hinzufügen

Webinar

scope desc
webinar:read:list_panelists:admin Panelisten eines Webinars anzeigen
webinar:read:list_absentees:admin Abwesende eines vergangenen Webinars anzeigen
webinar:read:webinar:admin Ein Webinar anzeigen
webinar:read:registrant:admin Einen Anmelder eines Webinars anzeigen
webinar:read:list_registrants:admin Anmelder eines Webinars anzeigen
webinar:write:batch_registrants:admin Anmelder 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 Anmelder eines Webinars entfernen
webinar:write:webinar Ein Webinar für einen Benutzer erstellen
webinar:update:status Status eines Webinars aktualisieren
webinar:delete:panelist Einen Panelisten eines Webinars entfernen
webinar:update:webinar Ein Webinar aktualisieren
webinar:write:registrant Einen Anmelder zu einem Webinar hinzufügen

Schritt 7: Meeting SDK-App erstellen

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


Die SDK-Meeting-App authentifiziert den Benutzer, damit dieser am Webinar teilnehmen kann.


Beginnen Sie mit der Erstellung einer General App und wählen Sie unter Select how the app is managed die Option User-managed.

Kopieren Sie unter dem Tab Basic Information in Ihrer General App die Client ID/ SDK key in das Feld zoom sdk key und die Client Secret/SDK secret in das Feld zoom sdk secret.

Scrollen Sie nach unten, und Sie finden den Abschnitt OAuth Information. Geben Sie im Feld OAuth Redirect URL die URL Ihrer Site ein, z. B. https://IHRESITE.com.

Schritt 8: App-Nutzung angeben

Wählen Sie unter dem Tab Features den Untertab Embed und aktivieren Sie die Meeting SDK.

Einschränkungen

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

Hinweis zu Breaking Changes

Aufgrund von Deprecated-Funktionen in der Zoom-API müssen alte Instanzen des Plugins gemäß den in diesem Beitrag beschriebenen 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