Kalendarz i planowanie
Control Center łączy się z Kalendarzem Google, aby Twój plan dnia był widoczny obok floty. Synchronizuje wydarzenia, pokazuje je w widokach miesiąca, tygodnia, dnia i agendy, ostrzega przed rozpoczęciem spotkania i zamienia dowolne wydarzenie w nagrane i podsumowane spotkanie.
Co zmienia w Google
Dział zatytułowany „Co zmienia w Google”Prawie nic. Integracja pobiera wydarzenia i wyświetla je. Nie tworzy, nie edytuje,
nie usuwa wydarzeń ani nie odpowiada na zaproszenia. Każde połączenie przez kod
urządzenia — wbudowane lub własne — żąda zakresów calendar.readonly oraz
openid email.
Wydarzenia są synchronizowane do własnej bazy danych obszaru roboczego na serwerze
(<dataDir>/<workspaceId>/workspace.db) i wyświetlane przez każdego klienta przez
RPC. Żaden klient nie przechowuje poświadczeń Google.
Konta w obrębie obszaru roboczego
Dział zatytułowany „Konta w obrębie obszaru roboczego”Konta kalendarza działają w zakresie obszaru roboczego, podobnie jak wszystko inne w Control Center. Każdy obszar roboczy łączy własne konto Google (lub kilka), a wydarzenia i tokeny jednego obszaru roboczego nigdy nie są widoczne z innego. Przełączenie obszaru roboczego zmienia to, które kalendarze widzisz.
Obszar roboczy może połączyć wiele kont Google, na przykład konto służbowe i prywatne, a ich wydarzenia są scalane w tych samych widokach.
Dlaczego logowanie odbywa się przez kod urządzenia
Dział zatytułowany „Dlaczego logowanie odbywa się przez kod urządzenia”Działający bez interfejsu cc_server nie ma przeglądarki, która przechwyciłaby
przekierowanie OAuth. Dlatego z niego nie korzysta: autoryzuje się za pomocą
grantu kodu urządzenia (RFC 8628). Serwer wyświetla krótki kod użytkownika i adres
URL Google, zatwierdzasz na dowolnym urządzeniu z przeglądarką, a serwer odpytuje, aż
to zrobisz. Instalacja headless może połączyć konto właśnie dlatego, że nie trzeba
hostować punktu końcowego przekierowania.
Konsekwencja, o której trzeba wiedzieć przed użyciem własnych poświadczeń: typ klienta
musi być ustawiony na Google „TV and Limited Input devices”. Google przyznaje temu
typowi klienta tylko dozwolony zestaw zakresów, a projekt, w którym Kalendarz nie jest
dla niego dozwolony, kończy się błędem invalid_scope — zamiast tego potrzebny byłby
klient loopback lub web.
Tokeny nigdy nie opuszczają serwera. Są zapisywane w pliku secrets.json serwera w
jego katalogu danych, pod kluczem google_google:<workspaceId>:<email>, obok baz
danych i w tej samej granicy zaufania systemu plików hosta. Serwer odświeża dostęp
automatycznie, a gdy Google trwale unieważni konto (unieważniona lub dawno wygasła
sesja), publikuje CalendarAuthExpired i pokazuje baner Połącz ponownie zamiast
po cichu zawodzić.
Kompilacja ze źródeł nie zawiera żadnych poświadczeń Google — dostarczasz własny
identyfikator klienta i sekret. Oficjalne kompilacje wydania mają wbudowanego
niepoufnego klienta kodu urządzenia, dzięki czemu przepływ łączenia działa od razu;
serwer przechowuje tylko znacznik odwołujący się do niego, nigdy kopię. Zmienna
GOOGLE_OAUTH_CLIENT_ID (i jej sekret) w środowisku zawsze mają pierwszeństwo przed
wbudowaną parą. Celowo nie ma flagi --google-client-id: nieznane flagi są
ignorowane, a sekret w wierszu poleceń można odczytać przez ps.
Aby uruchomić własny projekt Google, zobacz Połącz Google Calendar.
Synchronizacja
Dział zatytułowany „Synchronizacja”Serwer pobiera ruchome okno wydarzeń każdego połączonego konta — wszystkie kalendarze na koncie, nie tylko główny — co dwie minuty, a także na żądanie (start, połączenie, ręczne odświeżenie). Tak krótki interwał jest opłacalny, bo przegląd jest przyrostowy: każdy kalendarz ma własny token synchronizacji, więc niezmieniony kalendarz kosztuje jedną niemal pustą odpowiedź zamiast ponownego pobierania pięciomiesięcznego okna.
Wydarzenia cykliczne są rozwijane po stronie serwera, więc żaden klient nie analizuje reguły powtarzania. Przejście do miesiąca poza bieżącym oknem leniwie wczytuje ten zakres. Usunięte wydarzenia lub te przeniesione poza zakres są uzgadniane przy następnej synchronizacji.
| Widok | Co pokazuje |
|---|---|
| Miesiąc | Pełna siatka miesiąca (obsługiwana przez pakiet kalender) |
| Tydzień | Wydarzenia z godzinami z całego tygodnia w siatce czasu |
| Dzień | Wydarzenia z godzinami z jednego dnia w siatce czasu |
| Agenda | Przewijana lista nadchodzących wydarzeń |
Otwórz kalendarz pod /calendar; wybranie wydarzenia otwiera jego szczegóły pod
/calendar/:eventId. Wybrany widok jest zapisywany we własnych preferencjach tego
klienta, więc nie przenosi się na inne urządzenie.
Alerty o spotkaniach
Dział zatytułowany „Alerty o spotkaniach”Uruchamiany co minutę harmonogram skanuje wydarzenia rozpoczynające się w
konfigurowalnym oknie wyprzedzenia i wywołuje powiadomienie „Spotkanie wkrótce się
rozpocznie” (MeetingStartingSoon — zdarzenie
domenowe). Powiadomienie zawiera adres URL do
dołączenia, gdy jest dostępny, a kliknięcie go otwiera szczegóły wydarzenia. Alerty są
deduplikowane na podstawie alertedAt wydarzenia, więc to samo spotkanie nigdy nie
wywołuje alertu dwa razy, nawet po restarcie, a wydarzenie, którego początek minął,
gdy aplikacja była zamknięta, nie zostaje odtworzone.
Dwa ograniczenia łatwo przeoczyć. Harmonogram działa po stronie klienta na komputerze i tylko dla obszaru roboczego, który masz aktualnie otwarty — obszar roboczy, w którym nie jesteś, nie wywołuje alertu. A kompilacja webowa nie ma w ogóle potoku powiadomień systemowych, więc również nie wywołuje żadnych alertów.
Nagrywanie i powiązanie
Dział zatytułowany „Nagrywanie i powiązanie”Z wydarzenia w kalendarzu możesz rozpocząć nagranie spotkania z wstępnie wypełnionym tytułem wydarzenia. Control Center przechowuje powiązanie jeden do jednego między nagraniem a wydarzeniem, dzięki czemu notatki ze spotkania i wpis w kalendarzu pozostają połączone, a żadna z tych funkcji nie zależy od drugiej.
Rozpocznij nagrywanie i powiąż jest dostępne tylko na komputerze. W kliencie webowym ta akcja zgłasza, że nagrywanie jest niedostępne — mimo że własny przepływ nagrywania na ekranie spotkań działa w przeglądarce.
Zobacz też
Dział zatytułowany „Zobacz też”- Spotkania i transkrypcja: co się dzieje po rozpoczęciu nagrywania
- Obszary robocze i izolacja: dlaczego konta kalendarza są przypisane do obszaru roboczego
- Zdarzenia domenowe:
MeetingStartingSooniCalendarAuthExpired - Połącz Google Calendar
- Nagraj i podsumuj spotkanie