Google Calendar & Meet
AktifHubungkan 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.
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.
| Data | Arah | Keterangan |
|---|---|---|
| Waktu acara | Termilo → Calendar | Mulai & selesai booking dalam waktu acara kalender. |
| Judul acara | Termilo → Calendar | Nama layanan dan pelanggan pada judul acara. |
| Peserta (attendee) | Termilo → Calendar | Hanya peserta yang dibutuhkan untuk booking ini. |
| Status sibuk/luang | Calendar → Termilo | Jendela freebusy dipakai untuk menyaring slot bentrok. |
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.
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.
- Buka Integrasi → Google Calendar lalu klik “Hubungkan”.
- Setujui kedua scope di layar izin Google.
- Google mengarahkan kembali ke
oauth/callback; Termilo menukarcode, mengenkripsi token, dan menyimpannya di sisi server. - Status berubah menjadi
connecteddan booking berikutnya langsung membuat acara serta link Meet.
Endpoint OAuth#
Empat endpoint menangani siklus koneksi. Endpoint POST mengubah state dan memerlukan token CSRF; endpoint OAuth bekerja lewat redirect browser.
| Metode | Path | CSRF | Keterangan |
|---|---|---|---|
| GET | /api/integrations/google/oauth/start | — | Mengarahkan ke layar izin Google untuk memulai koneksi. |
| GET | /api/integrations/google/oauth/callback | — | Tujuan balik dari Google; menukar code menjadi token dan menyimpannya. |
| POST | /api/integrations/google/disconnect | wajib | Memutus koneksi dan menghapus token tersimpan. |
| POST | /api/integrations/google/health-check | wajib | Menguji koneksi dan menyetel status terbaru. |
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:
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.
join_url — yang ditampilkan.Status koneksi#
Endpoint health-check dan layar Integrasi menampilkan satu dari empat status berikut:
| Status | Arti |
|---|---|
connected | Token aktif; acara & link Meet dibuat otomatis. |
needs_reauth | Izin kedaluwarsa atau dicabut di Google. Hubungkan ulang. |
disabled_by_user | Anda memutus koneksi dari layar Integrasi. |
error | Panggilan Google gagal. Cek kembali lalu uji koneksi. |