Zoom de Discourse

:discourse2: Resumen Discourse Zoom permite a los administradores y usuarios de Discourse, con una suscripción de pago a Zoom, programar, gestionar y participar en seminarios web de Zoom directamente desde su plataforma Discourse.
:hammer_and_wrench: Enlace al repositorio https://github.com/discourse/discourse-zoom
:open_book: Guía de instalación Cómo instalar complementos en Discourse

Descripción general

Este complemento integra seminarios web de Zoom en una instancia de Discourse. Los seminarios web de Zoom pueden asociarse a temas; los usuarios de Discourse pueden registrarse en seminarios web y unirse a ellos cuando comienzan.

:warning: Debido a que Zoom ha descontinuado la autenticación JWT, a partir del 1 de agosto de 2023, el mecanismo de autenticación del complemento ha cambiado de JWT (ahora obsoleto; Zoom lo eliminará el 1 de septiembre) a OAuth de servidor a servidor. Los usuarios existentes del complemento deben actualizar su configuración.

Características

  • Cuando comienza un seminario web de Zoom, el botón “Registrarse” cambia automáticamente a “Unirse”, y al hacer clic se inicia el seminario web utilizando el SDK de Zoom en un punto final dedicado dentro de tu comunidad Discourse.
  • Recuerda automáticamente a los inscritos en el seminario web N minutos antes del evento (N es configurable en la configuración del complemento; por defecto, las notificaciones están desactivadas).
  • Los administradores pueden añadir ponentes a un seminario web en Discourse.
  • Los administradores pueden añadir un enlace a las grabaciones en video del seminario web en Discourse, que se mostrará a los usuarios después de que finalice el evento.
  • Los anfitriones y ponentes de eventos de Zoom se asocian con cuentas de usuario de Discourse.

Uso

Para usar el complemento Discourse Zoom, primero debes instalarlo en tu instancia de Discourse y configurarlo con las credenciales de tu aplicación OAuth de servidor a servidor de Zoom. Una vez configurado el complemento, puedes crear un nuevo seminario web de Zoom creando un nuevo tema y asociándolo con el seminario web. Los usuarios pueden registrarse en el seminario web directamente desde el tema.

Instalación

Paso 1: Instala el complemento en tu instancia de Discourse

Puedes instalar el complemento en tu instancia de Discourse siguiendo las instrucciones aquí.

Paso 2: Crea una aplicación OAuth de servidor a servidor en el Marketplace de Zoom


Para comenzar, necesitarás crear una aplicación OAuth de servidor a servidor en el Marketplace de Zoom. Esta aplicación será necesaria para realizar solicitudes a la API de Zoom y recibir notificaciones de eventos a través de webhooks.


Paso 3: Configura el complemento

Una vez instalado el complemento, ve a la configuración de tu sitio de Discourse, marca la casilla zoom enabled y guarda.

Desde el Marketplace de Zoom, ve a la pestaña Credenciales de la aplicación:

Luego, copia y pega los valores en la configuración del sitio correspondiente de tu instancia de Discourse:

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

Paso 4: Establece el token secreto del webhook

En la pestaña Funcionalidad de tu aplicación OAuth de servidor a servidor de Zoom, copia el “Token secreto” y añádelo a la configuración del sitio zoom webhooks secret token de tu sitio de Discourse.

Paso 5: Habilita las suscripciones a eventos

Mientras sigues en la pestaña Funcionalidad de tu aplicación OAuth de servidor a servidor de Zoom, habilita “Suscripciones a eventos” y haz clic en el botón Agregar suscripción a evento:

Luego, establece la “URL del punto final de notificación de eventos” en:

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

y selecciona el botón + Agregar eventos:

Abre la pestaña Seminario web desde la lista de tipos de eventos y marca todos los eventos listados. Si no puedes ver los permisos de evento Seminario web, consulta cómo habilitar los permisos.

Bajo la “URL del punto final de notificación de eventos” que estableciste anteriormente, busca el botón Validar:

Debería mostrar Un icono de marca de verificación con "Validado" en verde si todo funcionó correctamente.

Finalmente, selecciona el botón Guardar en la parte inferior de la página.

Paso 6: Ámbitos

Una vez que hayas configurado las suscripciones a eventos, ve a la pestaña Ámbitos y haz clic en el botón Agregar ámbitos. Aquí seleccionarás los siguientes ámbitos buscando ya sea por los valores dados en las tablas, manualmente o usando valores parciales. Por ejemplo, en lugar de buscar webinar:read:list_panelists:admin, busca webinar:read:; esto reducirá los elementos mostrados para facilitar la búsqueda de los requeridos.

En la aplicación OAuth de servidor a servidor, bajo la pestaña ámbitos, haz clic en el botón Agregar ámbitos y aparecerá una ventana:

En la búsqueda de ámbitos, busca por nombre completo o parcial. Para facilitar esto, puedes copiar y pegar cada uno de los ámbitos en las siguientes tablas o buscarlos en la pestaña correspondiente:

Usuarios

ámbito descripción
user:read:user:admin Ver un usuario
user:read:email:admin Verificar el correo electrónico de un usuario
user:read:list_users:admin Ver usuarios

Seminario web

ámbito descripción
webinar:read:list_panelists:admin Ver los ponentes de un seminario web
webinar:read:list_absentees:admin Ver los ausentes de un seminario web pasado
webinar:read:webinar:admin Ver un seminario web
webinar:read:registrant:admin Ver un inscrito en un seminario web
webinar:read:list_registrants:admin Ver los inscritos en un seminario web
webinar:write:batch_registrants:admin Agregar inscritos a un seminario web
webinar:delete:webinar:admin Eliminar un seminario web
webinar:write:panelist Agregar ponentes a un seminario web
webinar:delete:registrant Eliminar un inscrito de un seminario web
webinar:write:webinar Crear un seminario web para un usuario
webinar:update:status Actualizar el estado de un seminario web
webinar:delete:panelist Eliminar un ponente de un seminario web
webinar:update:webinar Actualizar un seminario web
webinar:write:registrant Agregar un inscrito a un seminario web

Seminario web

ámbito descripción
webinar:read:list_panelists:admin Ver los ponentes de un seminario web
webinar:read:list_absentees:admin Ver los ausentes de un seminario web pasado
webinar:read:webinar:admin Ver un seminario web
webinar:read:registrant:admin Ver un inscrito en un seminario web
webinar:read:list_registrants:admin Ver los inscritos en un seminario web
webinar:write:batch_registrants:admin Agregar inscritos a un seminario web
webinar:delete:webinar:admin Eliminar un seminario web
webinar:write:panelist Agregar ponentes a un seminario web
webinar:delete:registrant Eliminar un inscrito de un seminario web
webinar:write:webinar Crear un seminario web para un usuario
webinar:update:status Actualizar el estado de un seminario web
webinar:delete:panelist Eliminar un ponente de un seminario web
webinar:update:webinar Actualizar un seminario web
webinar:write:registrant Agregar un inscrito a un seminario web

Paso 7: Crea una aplicación Meeting SDK

:warning: Zoom ha cambiado cosas de su lado; estamos trabajando para actualizar la guía.


La aplicación Meeting SDK autentica al usuario para que pueda unirse a la reunión del seminario web.


Comienza creando una Aplicación general y, bajo Selecciona cómo se gestiona la aplicación, elige Gestionada por el usuario.

En la pestaña Información básica de tu aplicación general, copia y pega el Client ID/ SDK key en el campo zoom sdk key y el Client Secret/SDK secret en el campo zoom sdk secret.

Desplázate hacia abajo y encontrarás la sección Información de OAuth; en URL de redirección OAuth, coloca la URL de tu sitio, por ejemplo, https://TU_SITIO.com.

Paso 8: Especifica el uso de tu aplicación

En la pestaña Funcionalidades, selecciona la subpestaña Insertar y habilita el Meeting SDK.

Limitaciones

El complemento solo funciona con seminarios web que no requieren registro en Zoom.

Aviso sobre cambios disruptivos

Debido a las descontinuaciones en la API de Zoom, las instancias antiguas del complemento deberán configurarse siguiendo los pasos mencionados en esta publicación.

:discourse2: ¿Te lo ofrecemos nosotros? Este complemento está disponible en nuestros planes Empresariales.

63 Me gusta

¡Muchas gracias por trabajar en esto, es una gran función!

Logré instalar el plugin, crear la aplicación JWT en Zoom y configurar mi Discourse según lo descrito.

Sin embargo, tengo problemas al usar el botón de Webinar de Zoom en el editor para asociar una reunión programada con la publicación.

Sería excelente si pudieras agregar una explicación sobre qué se debe ingresar exactamente en el campo de texto bajo “Agregar Webinar”. Ni el ID de la reunión ni la URL completa parecen funcionar para mí.

Otro problema menor que noté: La URL del repositorio enlazada en la página de “Plugins” del panel de administración de administrador apunta a https://github.com/discourse-org/discourse-zoom, cuando debería enlazar a GitHub - discourse/discourse-zoom: Integrate Zoom events in Discourse. · GitHub.

2 Me gusta

¡Concepto interesante y parece una buena experiencia para los miembros de la comunidad!

Me pregunto si ya se ha considerado permitir un flujo de trabajo más genérico (independiente del proveedor) con este plugin; básicamente, ofrecer la misma integración de un temporizador de cuenta regresiva para una fecha y hora específicas, especificando un anfitrión y/o panelista, un enlace al URL del webinar, enlaces posteriores a las grabaciones, etc.

Jiti (código abierto) sería el ejemplo que tenía en mente, pero obviamente hay varias opciones en este ámbito.

2 Me gusta

Necesitas ingresar el ID del webinar. En los registros de tu sitio en /logs, deberías poder ver más detalles si aún no se puede agregar el evento en la ventana modal. También solucioné el problema de la URL que mencionaste, gracias por reportarlo.

Desafortunadamente, no, actualmente no proporciona un flujo de trabajo agóstico del proveedor. Las llamadas a la API de Zoom están abstraídas, por lo que es posible agregar soporte para otro proveedor con un poco de esfuerzo (aunque el plugin necesitaría ser renombrado a algo menos específico de Zoom).

8 Me gusta

¿Existe alguna posibilidad de añadir soporte para reuniones sin registro a este plugin, así como para webinars? ¡Gran trabajo!

7 Me gusta

Ahora que Zoom requiere una contraseña para todas las reuniones y seminarios web, creo que el plugin está roto. Intenté crear un seminario web y al unirme aparece este error: «Tu conexión ha expirado y no puedes unirte a la reunión. Verifica la conectividad de tu red e inténtalo de nuevo».

3 Me gusta

Lo revisaré hoy. Es posible que se trate de un problema temporal; el cliente web de Zoom aparece marcado como “en mantenimiento” en su página de estado en status.zoom.us.

5 Me gusta

Solo quiero mencionar que el uso de webinars tiene un costo mínimo de $40.00 al mes para habilitarlo, más el plan Pro de $14.99 al mes. Saludos.

2 Me gusta

Sí, por desgracia parece que el SDK web de Zoom está fuera de línea por ahora. Dicen que están trabajando en traerlo de nuevo a línea (no estoy muy seguro de lo que eso significa).

Por el momento, entonces, he añadido una solución alternativa al plugin; al unirse a un seminario web, ahora mostrará esta pantalla cuando falle la unión mediante SDK:

8 Me gusta

Por si acaso, una cooperativa que cofundé optó por https://bigbluebutton.org/. El autoalojamiento nos costó mucho menos que una cuenta de webinars de Zoom.

11 Me gusta

Hola Penar, acabo de notar que hay una pestaña Webinar en el perfil de los usuarios. Como administrador, puedo verla como se espera, pero como usuario normal obtengo este error:

Acceso denegado

al intentar cargar [/topics/webinar-registrations/chris_murray.json](https://community.naturephotographers.network/topics/webinar-registrations/chris_murray.json)

De los registros:

Error: Prohibido
URL: https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js
Línea: 1
Columna: 267206
Ubicación de la ventana: 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 me gusta

No puedo reproducirlo. Lo he probado en varios sitios con diferentes nombres de usuario, incluido localmente con un nombre que contiene un guion bajo.

Sí, el plugin utiliza el WebSDK de Zoom y tiene problemas en algunos navegadores.

1 me gusta

Para tu información, acabo de realizar un webinar usando esto y el botón Unirse no funcionó en absoluto; todos recibieron un error de tiempo de espera de Zoom, pero dirigí a todos al enlace regular de Zoom, que funcionó correctamente. Parece que el WebSDK está teniendo muchos problemas. ¿Podríamos tener una opción para ingresar la URL del botón Unirse en lugar de depender del WebSDK, ya que está fallando?

1 me gusta

El SDK de Zoom debería funcionar si lo implementas; actualicé el plugin la semana pasada. Sin embargo, bloquearon todas las versiones anteriores, así que si no has implementado recientemente, eso podría explicarlo. Además, agregar el enlace de Zoom como una opción tiene sentido.

2 Me gusta

Gracias, Penar, no me había dado cuenta de que había una actualización; espero que eso lo solucione para la próxima vez.

Una pregunta sobre el video que puedes agregar después: ¿esto solo funciona con grabaciones en la nube de Zoom? Si uso Vimeo o YouTube, dice que no es un formato compatible. Solo por curiosidad, no es un gran problema, ya que puedo simplemente incluirlo en la publicación.

1 me gusta

Sí, ese campo solo funciona con una URL a un archivo de video directo. YouTube o Vimeo no funcionarán, pero como bien dices, es mucho más fácil usar oneboxing para las URL de YouTube/Vimeo.

3 Me gusta

Vea: BigBlueButton video conference

1 me gusta

Un poco de feedback después de usarlo varias veces.

  1. Que el botón de unirse esté oculto hasta que comience el webinar no es amigable para el usuario. Recibo varios correos electrónicos antes de que comience el webinar preguntando dónde está el enlace para unirse, aunque lo he especificado claramente en la descripción del webinar y en la notificación de que aparecerá cuando comience. La gente simplemente no lee. Personalmente, preferiría que el botón de unirse siempre estuviera visible; si hacen clic en él antes de tiempo, simplemente les indicará que el webinar aún no ha comenzado y volverán a mirar para ver a qué hora comienza realmente.

  2. ¿Sería posible admitir sesiones de prueba? Con un webinar, tienes la opción de hacerlo, donde el anfitrión y los panelistas pueden hablar entre sí antes sin estar en vivo para los participantes. Pueden hacer clic en el enlace de la reunión de Zoom durante este tiempo y recibirán una notificación indicando que la reunión aún no ha comenzado, pero estarán en una especie de sala de espera, y se unirán automáticamente en cuanto comencemos la transmisión en vivo. Esto aliviaría muchos problemas para los usuarios.

3 Me gusta

Disculpa la demora, David.

Hay una configuración que probablemente te ayude con esto:

Si configuras esto en 30, el botón aparecerá 30 minutos antes de la hora programada del seminario web.

Deberías poder usar esto con la configuración anterior también. La última vez que verifiqué, los webhooks de Zoom no se activan cuando la sesión de práctica se convierte en un evento completo, lo que hace que la otra dinámica sea un poco complicada.

3 Me gusta

Gracias, Penar, pero ese no es exactamente el problema.

En primer lugar, mi botón “Únete ahora” ya no funciona en absoluto:

Antes funcionaba, pero esto comenzó hace un par de semanas. Tampoco veo que aparezca el enlace de respaldo.

Luego, hay un problema separado que mencioné antes: el problema del modo de práctica. Cuando tenía el problema mencionado anteriormente, funcionaba así: cuando iniciaba el seminario web en modo de práctica, el botón de unirse no aparecía, sin importar cómo se configuraba zoom join x mins before start; solo aparecía cuando realmente comenzaba la transmisión, lo cual prefiero hacer solo 5 minutos antes del inicio. Idealmente, el botón de unirse debería aparecer en el momento configurado, y así los usuarios recibirían la notificación de Zoom de que el seminario web aún no ha comenzado.

¿Crees que podrías ofrecer una opción para cambiar simplemente el botón de registro por uno de unirse en el momento establecido, y que sea solo el enlace de Zoom? No un enlace de respaldo, sino un enlace forzado para evitar esto por completo. ¡Gracias de nuevo, Penar!