URLs de suscripción al calendario para aplicaciones de calendario externas

Hemos añadido una nueva pestaña Calendario a las preferencias del usuario que te permite suscribirte a las fuentes de Discourse en aplicaciones de calendario externas como Google Calendar, Apple Calendar y Microsoft Outlook.

:down_arrow:

Cómo funciona

Navega a tu pestaña Preferencias → Calendario y haz clic en Generar URLs de Suscripción. Obtendrás botones de suscripción con un solo clic para:

  • Google Calendar — abre Google Calendar con la fuente precargada
  • Microsoft Outlook — abre el diálogo de suscripción web de Outlook
  • Apple Calendar — activa la aplicación nativa Calendario a través de webcal://
  • Copiar URL — para cualquier otra aplicación de calendario que admita fuentes ICS

Fuentes disponibles

Siempre disponibles:

  • Recordatorios Marcados — tus marcadores que tienen fechas de recordatorio

Con el plugin discourse-calendar habilitado:

  • Todos los Eventos — todos los eventos del foro
  • Mis Eventos — eventos a los que vas a asistir o que te interesan

Para desarrolladores de plugins

Los plugins pueden registrar fuentes ICS adicionales usando la nueva API register_calendar_subscription_feed. Las fuentes registradas de esta manera aparecen automáticamente en la pestaña de preferencias de Calendario cuando el plugin está habilitado.

Seguridad

Las URLs de suscripción utilizan claves de API de usuario limitadas restringidas al acceso de solo lectura en formato ICS. Las claves tienen límites de velocidad y las URLs se muestran una sola vez en el momento de la generación; los usuarios pueden regenerarlas en cualquier momento, lo que revoca las URLs antiguas.

25 Me gusta

Gracias @Falco, pero ¿cómo se eliminan las opciones corporativas? Me parece ofensivo para mi comunidad tener que ver publicidad de servicios propietarios.

1 me gusta

Puedes ocultarlo con CSS.

2 Me gusta

¡Muchas gracias por esta implementación; esto aumentará la usabilidad del complemento de calendario/eventos para muchas comunidades!

Tengo la misma objeción que @hellekin: dentro de Discourse, estamos en un entorno de código abierto. En nuestra comunidad, nadie utiliza Google Calendar ni Microsoft. Si los usuarios necesitan un enlace para estos servicios propietarios, deberían decidirlo ellos mismos, no la aplicación. Por lo tanto, preferiría seleccionar el tipo de servicio de calendario externo durante el paso de creación de las URL de suscripción (por ejemplo, con algunas casillas de verificación), no más tarde.

1 me gusta

Mejora de “filtro”

Tenemos múltiples comunidades en nuestra instancia de Discourse. Están separadas por permisos de grupo y algunos usuarios son miembros de más de una comunidad. Sería conveniente filtrar la URL de “Discourse Calendar - All Events” para que solo muestre las entradas del calendario de una comunidad en particular. URL de ejemplo

https://discourse.example.com/discourse-post-event/events.ics?user_api_key=c2aa22d800dd473b62d199d796742382&group=[nombre_del_grupo]

Con esta mejora sería posible compartir los eventos de Discourse de una comunidad en particular (!) en su propio sitio web, por ejemplo, con el complemento de WordPress “ICS calendar”.

2 Me gusta

Otra pequeña mejora propuesta: si deseas suscribir los eventos de Discourse en dos clientes diferentes (por ejemplo, Thunderbird en dos dispositivos), necesitas copiar la URL dos veces. Pero actualmente la URL solo se muestra una vez. Si agregas un segundo cliente, tienes que regenerar las URL y pierdes las primeras.

1 me gusta

¿No funciona ya de esa manera un feed generado por un usuario en uno de esos grupos? ¿Lo probaste?

Solo necesitas copiar una vez, luego pegar en los dos clientes que necesites.

Y si olvidas un cliente, puedes regenerar con un clic.

2 Me gusta

Esto es bastante bueno. Una idea de feed podría ser también el complemento Búsquedas guardadas (Saved Searches).

[quote=“Falco, post:7, topic:398902”]Solo necesitas copiar una vez y luego pegar en los dos clientes que necesites.

Y si olvidas un cliente, puedes regenerar con un solo clic.

[/quote]

Entiendo, pero mi punto es la regeneración necesaria después de que se muestren las URL por primera vez.

Si utilizo el enlace del calendario en dos dispositivos diferentes, es probable que no estén disponibles para configuración al mismo tiempo. Accedería a mi perfil de Discourse desde el primer dispositivo y más tarde de nuevo desde el segundo dispositivo. Sería mejor mostrar la URL antigua de nuevo y solo invalidarla mediante solicitud explícita.

Si soy miembro de dos comunidades diferentes (y sus grupos de permisos), la URL “https://discourse.example.com/discourse-post-event/events.ics“ muestra los eventos de ambas comunidades. Eso es correcto hasta ahora. Pero ambas comunidades pueden tener su propio sitio web. Si quiero compartir los eventos de Discourse en sus sitios web, solo querría ver los eventos de la “comunidad A” pero no de la “comunidad B”. Y viceversa.

1 me gusta

He estado usando esto con Google Calendar y ¡realmente es genial!

Sin embargo, los cambios en los eventos no parecen reflejarse aquí, ya sean ediciones o eliminaciones.

Aquí está el código de inserción del calendario de Google:

Y aquí está el calendario en mi sitio, donde puedes ver que he eliminado Test event number 5 y movido A fourth test event:

https://spokes.nz/upcoming-events/month/2026/3/1

¿Tienes alguna idea de por qué no parecen estar sincronizándose con Google?

1 me gusta

Google Calendar obtiene actualizaciones dos veces al día en promedio, por lo que los cambios pueden tardar algunas horas en reflejarse.

2 Me gusta

¡Ah, sí! Ahora ya están sincronizados.

Es muy bueno saberlo. ¡No esperes que los cambios de última hora se publiquen o comuniquen automáticamente!

¿Es similar para otros servicios?

1 me gusta

Si hablas de los servicios de calendario de otros proveedores, el principio es el mismo: 1 o 2 veces al día. En su momento, no encontré ninguna solución para aumentar la frecuencia de sincronización. Después, me di cuenta de que es totalmente normal, dado el número de calendarios que hay que sincronizar en todo el mundo :rofl: Creo que lo limita para no saturar sus servidores.

Quizás me equivoque.

2 Me gusta

Comentarios tras algunas pruebas reales:

Contexto: nuestra instancia de Discourse es compartida entre varios grupos de usuarios/comunidades que tienen sus propios grupos de permisos. Tenemos una categoría principal para cada uno de estos grupos. Esta categoría es visible públicamente y su contenido se federado en el Fediverse (Discourse ActivityPub). También muestra un calendario público. Ejemplo (https://forum.netzwissen.de/c/meshcore-str/84):

Pasted image 20260401075142.png

El calendario muestra eventos de publicaciones en la categoría principal y también de subcategorías. Las publicaciones de eventos en las subcategorías (que solo son visibles para usuarios “con sesión iniciada” del grupo de permisos de la comunidad) no aparecen en el calendario principal para usuarios anónimos (sin iniciar sesión). Perfecto, esto es el comportamiento esperado.

Veo dos requisitos que harían que el enlace del calendario ICS esté “completo en cuanto a funcionalidad”. Usamos el nuevo enlace del calendario ICS para compartir eventos creados en Discourse en los sitios web públicos de las comunidades (CMS: WordPress).

  1. Los eventos mostrados en el archivo ICS deberían ser “filtrables” por comunidad/grupo de permisos. Sintaxis propuesta:
[ics_calendar url="https://discourse.example.com/discourse-post-event/events.ics?user_api_key=[xxxx];group=[discourse_group_id]"]

  1. El archivo ICS solo debería mostrar eventos con estado “público”. Los eventos con estado “privado” o “independiente” generalmente no deberían publicarse en el archivo ICS. Nota: aún no he probado si esto ya está implementado…
1 me gusta

¡Qué gran añadido! :clap:

Lamentablemente, aunque el complemento Calendario está habilitado (y lo hemos estado usando con regularidad), al generar las URLs para mi usuario solo se crea la suscripción a Favoritos. ¿Alguna idea sobre por qué podría ocurrir esto?

También estoy de acuerdo con @Thomas_Rother en que las URLs de suscripción deberían mostrarse hasta que se revocen o regeneren. Los dispositivos y las aplicaciones cambian con el tiempo, y tener que volver a suscribirse en todos los dispositivos solo porque se quiera añadir uno más es tedioso y parece innecesario. Quizás podría ser una opción de configuración del complemento, dependiendo de la sensibilidad de los datos de los eventos.

1 me gusta

Debes tener la opción Eventos de publicaciones de Discourse habilitados activada para que se muestre.

1 me gusta

Hemos estado utilizando eventos de publicación durante años:

¿Podría ser un problema con las instalaciones que usaban el plugin por separado antes? También intenté desactivar y reactivar el plugin, pero no solucionó el problema.

1 me gusta

¡Vine aquí buscando exactamente esta función, así que me alegra mucho que se haya implementado!

Comparto la opinión de @hellekin y @Thomas_Rother sobre los enlaces corporativos. Sería genial si pudieran hacerse opcionales. Muchas personas usan Discourse porque creen en la soberanía digital, por lo que mostrar estos logotipos no es apropiado.

Lo más importante es la visibilidad de la función. Está oculta en las preferencias del usuario, pero sería muy bien recibida directamente en la navegación de la interfaz del calendario. Hacer clic en “Próximos eventos” y luego ver un enlace para suscribirse sería oro. :1st_place_medal:

2 Me gusta

Tienes la solución aquí

1 me gusta