Calendario y programación
Control Center se conecta a Google Calendar para que tu día conviva con tu flota. Sincroniza tus eventos, los muestra en las vistas de mes, semana, día y agenda, te avisa antes de que empiece una reunión y convierte cualquier evento en una reunión grabada y resumida.
Qué cambia en Google
Sección titulada «Qué cambia en Google»Casi nada. La integración extrae los eventos y los representa. No crea, edita ni
elimina nada, ni responde a invitaciones. Toda conexión mediante código de
dispositivo, ya sea la integrada o la tuya propia, solicita calendar.readonly
además de openid email.
Los eventos se sincronizan en la base de datos propia del espacio de trabajo
en el servidor (<dataDir>/<workspaceId>/workspace.db) y cada cliente los
representa por RPC. Ningún cliente guarda credenciales de Google.
Cuentas por espacio de trabajo
Sección titulada «Cuentas por espacio de trabajo»Las cuentas de calendario pertenecen al espacio de trabajo, como todo lo demás en Control Center. Cada espacio de trabajo conecta su propia cuenta de Google (o varias), y los eventos y tokens de un espacio de trabajo nunca son visibles desde otro. Cambiar de espacio de trabajo cambia los calendarios que ves.
Un espacio de trabajo puede conectar varias cuentas de Google, como una del trabajo y otra personal, y sus eventos se combinan en las mismas vistas.
Por qué el inicio de sesión es un código de dispositivo
Sección titulada «Por qué el inicio de sesión es un código de dispositivo»El cc_server headless no tiene ningún navegador que recoja una redirección de
OAuth. Por eso no usa ninguna: se autoriza con la concesión de código de
dispositivo (RFC 8628). El servidor muestra un código de usuario corto y una
URL de Google, tú apruebas en cualquier dispositivo que tenga navegador y el
servidor sondea hasta que lo hagas. Una instalación headless puede conectar una
cuenta precisamente porque no hay ningún endpoint de redirección que alojar.
La consecuencia que conviene conocer antes de usar tus propias credenciales: el
tipo de cliente debe ser el que Google denomina «TV and Limited Input devices».
Google solo concede a ese tipo de cliente un conjunto de ámbitos de la lista
permitida, y un proyecto en el que Calendar no esté permitido para él falla con
invalid_scope; en su lugar necesitarías un cliente de loopback o web.
Los tokens nunca salen del servidor. Se escriben en el secrets.json del
servidor, en su directorio de datos, con la clave
google_google:<workspaceId>:<email>, junto a las bases de datos y bajo el
mismo límite de confianza del sistema de archivos del host. El servidor renueva
el acceso automáticamente y, cuando Google invalida una cuenta de forma
permanente (una sesión revocada o caducada hace tiempo), publica
CalendarAuthExpired y muestra un banner de Reconectar en lugar de fallar
en silencio.
Una compilación desde el código fuente no incluye credenciales de Google en
absoluto: tú aportas tu propio ID de cliente y tu secreto. Las compilaciones
oficiales integran un cliente de código de dispositivo no confidencial para que
el flujo de conexión funcione sin configuración previa; el servidor solo guarda
un marcador que lo referencia, nunca una copia. GOOGLE_OAUTH_CLIENT_ID (y su
secreto) en el entorno siempre tienen prioridad sobre el par integrado. No
existe a propósito ninguna opción --google-client-id: las opciones
desconocidas se ignoran, y un secreto en una línea de comandos se puede leer con
ps.
Para gestionar tu propio proyecto de Google, consulta Conectar un Google Calendar.
Sincronización
Sección titulada «Sincronización»El servidor descarga una ventana móvil de los eventos de cada cuenta conectada —todos los calendarios de la cuenta, no solo el principal— cada dos minutos, además de cuando se solicita (al iniciar, al conectar o al actualizar manualmente). Esta cadencia tan corta es asumible porque el barrido es incremental: cada calendario tiene su propio token de sincronización, de modo que un calendario sin cambios cuesta una única respuesta casi vacía en lugar de volver a descargar una ventana de cinco meses.
Los eventos recurrentes se expanden en el servidor, así que ningún cliente analiza jamás una regla de recurrencia. Al navegar a un mes fuera de la ventana actual, ese intervalo se carga de forma diferida. Los eventos eliminados o que han salido del intervalo se reconcilian y desaparecen en la siguiente sincronización.
| Vista | Qué muestra |
|---|---|
| Mes | Una cuadrícula de un mes completo (con el paquete kalender) |
| Semana | Los eventos con hora de una semana en una cuadrícula temporal |
| Día | Los eventos con hora de un solo día en una cuadrícula temporal |
| Agenda | Una lista desplazable de próximos eventos |
Abre el calendario en /calendar; al seleccionar un evento se abre su detalle
en /calendar/:eventId. La vista que elijas se guarda en las preferencias de
ese cliente, así que no te acompaña a otro dispositivo.
Avisos de reunión
Sección titulada «Avisos de reunión»Un planificador que se ejecuta cada minuto busca eventos que empiecen dentro de
una ventana de antelación configurable y lanza una notificación de «Reunión a
punto de empezar» (un evento de
dominio MeetingStartingSoon). La
notificación incluye la URL para unirse cuando existe, y al hacer clic en ella
se abre el detalle del evento. Los avisos se deduplican con el alertedAt del
evento, así que una misma reunión nunca avisa dos veces, ni siquiera entre
reinicios, y un evento cuya hora de inicio pasó mientras la aplicación estaba
cerrada nunca se repite.
Hay dos límites con los que es fácil tropezar. El planificador se ejecuta en el cliente de escritorio y solo para el espacio de trabajo que tengas abierto en ese momento: un espacio de trabajo en el que no estés no genera ningún aviso. Y la versión web no tiene ninguna canalización de notificaciones del sistema, así que tampoco genera ninguno.
Grabar y vincular
Sección titulada «Grabar y vincular»Desde un evento del calendario puedes iniciar una grabación de reunión precargada con el título del evento. Control Center guarda un vínculo uno a uno entre la grabación y el evento, de modo que las notas de la reunión y la entrada del calendario permanecen conectadas sin que ninguna de las dos funciones dependa de la otra.
Grabar y vincular solo está disponible en el escritorio. En el cliente web, la acción informa de que la grabación no está disponible, aunque el propio flujo de grabación de la pantalla de reuniones sí funciona en el navegador.
Consulta también
Sección titulada «Consulta también»- Reuniones y transcripción: qué ocurre después de iniciar una grabación
- Espacios de trabajo y aislamiento: por qué las cuentas de calendario son de cada espacio de trabajo
- Eventos de dominio:
MeetingStartingSoonyCalendarAuthExpired - Conectar un Google Calendar
- Grabar y resumir una reunión