Google Calendar & Meet

Aktif

Hubungkan Google Calendar ke Termilo untuk menyinkronkan acara kalender dan menambahkan link Google Meet otomatis di setiap booking. Token disimpan terenkripsi di sisi server dan tidak pernah mencapai browser.

Lihat .md

Apa yang disinkronkan#

Setelah terhubung, Termilo menulis satu acara Google Calendar untuk tiap booking dan membaca status sibuk/luang Anda agar slot tidak bentrok. Termilo hanya menyentuh data yang dibutuhkan booking — bukan seluruh isi kalender Anda.

DataArahKeterangan
Waktu acaraTermilo → CalendarMulai & selesai booking dalam waktu acara kalender.
Judul acaraTermilo → CalendarNama layanan dan pelanggan pada judul acara.
Peserta (attendee)Termilo → CalendarHanya peserta yang dibutuhkan untuk booking ini.
Status sibuk/luangCalendar → TermiloJendela freebusy dipakai untuk menyaring slot bentrok.
Satu provider, dua kemampuan
Provider google_calendar menangani sinkron kalender sekaligus link Google Meet. Anda tidak perlu menghubungkan Google Meet terpisah.

Scope (akses minimum)#

Saat menghubungkan akun, Termilo meminta dua scope dengan prinsip akses minimum. Keduanya wajib agar slot akurat dan acara bisa dibuat.

PARAMETERTIPEWAJIBKETERANGAN
calendar.freebusyreadwajibMembaca jendela sibuk/luang untuk menghitung slot. Tidak membaca isi acara.
calendar.events.ownedwritewajibMembuat, memperbarui, dan membatalkan acara kalender milik Termilo untuk tiap booking.

Menghubungkan akun#

Hubungkan dari layar Integrasi di dashboard, atau mulai langsung dari endpoint oauth/start. Termilo menangani redirect Google dan callback-nya; Anda tidak menyentuh token sama sekali.

  1. Buka Integrasi → Google Calendar lalu klik “Hubungkan”.
  2. Setujui kedua scope di layar izin Google.
  3. Google mengarahkan kembali ke oauth/callback; Termilo menukar code, mengenkripsi token, dan menyimpannya di sisi server.
  4. Status berubah menjadi connected dan booking berikutnya langsung membuat acara serta link Meet.
# 1. Arahkan pengguna ke layar izin Google. # Sertakan cookie sesi dashboard agar koneksi terikat ke tenant Anda. curl -i -b "$TERMILO_SESSION" \ "https://app.termilo.id/api/integrations/google/oauth/start" # 2. Google mengalihkan kembali ke /callback; Termilo menukar code, # mengenkripsi token, dan menyimpannya di sisi server.

Endpoint OAuth#

Empat endpoint menangani siklus koneksi. Endpoint POST mengubah state dan memerlukan token CSRF; endpoint OAuth bekerja lewat redirect browser.

MetodePathCSRFKeterangan
GET/api/integrations/google/oauth/startMengarahkan ke layar izin Google untuk memulai koneksi.
GET/api/integrations/google/oauth/callbackTujuan balik dari Google; menukar code menjadi token dan menyimpannya.
POST/api/integrations/google/disconnectwajibMemutus koneksi dan menghapus token tersimpan.
POST/api/integrations/google/health-checkwajibMenguji koneksi dan menyetel status terbaru.
Endpoint Google bekerja dengan sesi dashboard tenant Anda, bukan API key publik. Mulai koneksi dari peramban yang sudah login agar token terikat ke tenant yang benar.

Link Google Meet#

Link Meet dibuat melalui acara Google Calendar — bukan API Meet terpisah. Termilo menyertakan conferenceData.createRequest saat membuat acara dengan conferenceDataVersion=1. Kemampuan ini bernama meetViaCalendarConferenceData.

URL gabung peserta (join_url) ditulis ke booking_locations dan ditampilkan ke pelanggan. Contoh ringkas isi conferenceData yang dikirim saat membuat acara:

POST events?conferenceDataVersion=1application/json
{
"conferenceData": {
"createRequest": {
"requestId": "bk_8f24c1a0",
"conferenceSolutionKey": { "type": "hangoutsMeet" }
}
}
}
Google Meet REST (Spaces) — Tidak tersedia
Pembuatan ruang Meet langsung lewat Google Meet REST API (google_meet_rest) tidak tersedia. Semua link Meet berasal dari conferenceData pada acara Calendar.

Keamanan token#

Token Google dienkripsi AES-GCM dengan kunci server (TOKEN_ENCRYPTION_KEY) dan disimpan di kolom provider_oauth_tokens.encrypted_token_payload. Token tidak pernah dikirim ke browser, konfigurasi embed, cache publik, log, maupun payload antrean.

Aturan universal integrasi
Token provider dan data meeting khusus host tetap di sisi server. Hanya referensi yang aman untuk pelanggan — seperti join_url — yang ditampilkan.

Status koneksi#

Endpoint health-check dan layar Integrasi menampilkan satu dari empat status berikut:

StatusArti
connectedToken aktif; acara & link Meet dibuat otomatis.
needs_reauthIzin kedaluwarsa atau dicabut di Google. Hubungkan ulang.
disabled_by_userAnda memutus koneksi dari layar Integrasi.
errorPanggilan Google gagal. Cek kembali lalu uji koneksi.

Pertanyaan umum#

Tidak. Termilo hanya membaca status sibuk/luang (freebusy) untuk menyaring slot, dan hanya menulis acara milik booking. Isi acara lain tidak dibaca.