google-meet bergabung ke URL Meet eksplisit atas nama agen OpenClaw. Cakupannya sengaja dibatasi:
- Plugin ini hanya bergabung ke URL
https://meet.google.com/...; plugin ini tidak pernah melakukan panggilan masuk ke rapat dari nomor telepon yang ditemukannya sendiri. googlemeet createdapat membuat URL Meet baru melalui Google Meet API (atau mekanisme cadangan browser) dan secara default bergabung ke URL tersebut.- Partisipasi Chrome menggunakan profil Chrome yang sudah login, secara opsional pada node yang dipasangkan. Partisipasi Twilio memanggil nomor telepon beserta PIN/DTMF melalui Plugin panggilan suara; Twilio tidak dapat memanggil URL Meet secara langsung.
mode: "agent"(default) mentranskripsikan ucapan peserta dengan penyedia realtime, meneruskannya ke agen OpenClaw yang dikonfigurasi, lalu mengucapkan jawaban dengan TTS OpenClaw biasa.mode: "bidi"memungkinkan model suara realtime menjawab secara langsung.mode: "transcribe"bergabung hanya sebagai pengamat tanpa balasan suara.- Tidak ada pengumuman persetujuan otomatis saat plugin bergabung ke panggilan.
- Perintah CLI-nya adalah
googlemeet;meetdisediakan untuk alur kerja telekonferensi agen yang lebih luas.
Mulai cepat
Instal dependensi audio lokal, lalu tetapkan kunci penyedia realtime. OpenAI adalah penyedia transkripsi default untuk modeagent; Google Gemini Live tersedia sebagai penyedia suara mode bidi:
blackhole-2ch menginstal perangkat audio virtual BlackHole 2ch yang digunakan sebagai jalur audio Chrome. Penginstal Homebrew memerlukan mulai ulang sebelum macOS menampilkan perangkat tersebut:
setup dapat dibaca agen serta mempertimbangkan mode/transport: output ini melaporkan profil Chrome, penyematan node, dan, untuk sesi Chrome realtime, jembatan audio BlackHole/SoX serta pemeriksaan pengantar tertunda. Sesi hanya-pengamat melewati prasyarat realtime:
setup juga melaporkan apakah voice-call, kredensial Twilio, dan eksposur Webhook publik sudah siap. Perlakukan setiap pemeriksaan ok: false sebagai penghalang bagi transport/mode tersebut sebelum agen bergabung. Gunakan --json untuk output yang dapat dibaca mesin, dan --transport chrome|chrome-node|twilio untuk memeriksa lebih awal transport tertentu:
google_meet:
google_meet tetap tersedia untuk tindakan artefak, kalender, penyiapan, transkripsi, Twilio, dan chrome-node, tetapi balasan suara Chrome lokal (transport: "chrome" dengan mode: "agent" atau "bidi") diblokir sebelum mencapai jembatan audio karena jalur tersebut saat ini bergantung pada BlackHole 2ch macOS. Gunakan mode: "transcribe", panggilan masuk Twilio, atau host chrome-node macOS sebagai gantinya.
Membuat rapat
create memiliki dua jalur, yang dilaporkan dalam bidang source pada hasil:
api: digunakan saat kredensial OAuth Google Meet dikonfigurasi. Deterministik; tidak bergantung pada status UI browser.browser: digunakan tanpa kredensial OAuth. OpenClaw membukahttps://meet.google.com/newpada node Chrome yang disematkan dan menunggu Google mengalihkan ke URL kode rapat yang sebenarnya; profil Chrome OpenClaw pada node tersebut harus sudah login ke Google. Proses bergabung dan membuat sama-sama menggunakan kembali tab Meet yang sudah ada (atau tab perintah.../new/ akun Google yang sedang berlangsung) sebelum membuka tab baru; pencocokan tab mengabaikan string kueri yang tidak berbahaya sepertiauthuser.
create bergabung secara default dan mengembalikan joined: true beserta sesi bergabung. Teruskan --no-join (CLI) atau "join": false (alat) untuk hanya membuat URL.
Untuk ruang yang dibuat melalui API, tetapkan kebijakan akses eksplisit alih-alih mewarisi default akun Google:
Ini hanya berlaku untuk ruang yang dibuat melalui API, sehingga OAuth harus dikonfigurasi. Jika Anda melakukan autentikasi sebelum opsi ini tersedia, jalankan ulang
openclaw googlemeet auth login --json setelah menambahkan cakupan meetings.space.settings ke layar persetujuan OAuth.
Jika mekanisme cadangan browser mengalami penghalang login Google atau izin Meet, alat akan mengembalikan manualActionRequired: true dengan manualActionReason, manualActionMessage, dan browser.nodeId/browser.targetId/browserUrl. Laporkan pesan tersebut dan berhenti membuka tab Meet baru hingga operator menyelesaikan langkah di browser.
Bergabung hanya sebagai pengamat
Tetapkan"mode": "transcribe" untuk melewati jembatan realtime dupleks (tidak memerlukan BlackHole/SoX dan tanpa balasan suara). Sesi Chrome mode transkripsi juga melewati pemberian izin mikrofon/kamera oleh OpenClaw dan jalur Meet Use microphone; jika Meet menampilkan layar perantara pilihan audio, otomatisasi terlebih dahulu mencoba Continue without microphone. Transport Chrome terkelola dalam mode ini memasang pengamat teks layar Meet dengan upaya terbaik. googlemeet status --json dan googlemeet doctor melaporkan captioning, captionsEnabledAttempted, transcriptLines, lastCaptionAt, lastCaptionSpeaker, lastCaptionText, dan ekor recentTranscript.
Untuk transkrip sesi terbatas, baca tab Meet terlacak yang tepat:
nextIndex tidak dapat melewatkan perluasan teks berikutnya; keluar akan menyelesaikan baris yang terlihat sebelum snapshot. droppedLines melaporkan baris yang hilang dari bagian awal ketika batas terlampaui. Transkrip dari empat sesi yang paling baru berakhir tetap dapat dibaca hingga Gateway dimulai ulang. Transkrip sesi lama yang telah berakhir mengembalikan evicted: true. Ini sengaja menggunakan memori runtime, bukan penyimpanan riwayat rapat yang tahan lama: memulai ulang Gateway, menutup tab sebelum snapshot, atau melampaui batas yang didokumentasikan dapat menghilangkan teks layar.
Untuk pemeriksaan dengar ya/tidak:
listenVerified, listenTimedOut, bidang tindakan manual, dan kesehatan teks layar saat ini.
Kesehatan sesi realtime
Selama sesi balasan suara, statusgoogle_meet melaporkan kesehatan Chrome/jembatan audio: inCall, manualActionRequired, providerConnected, realtimeReady, audioInputActive, audioOutputActive, stempel waktu input/output terakhir, penghitung byte, dan status jembatan tertutup. Sesi Chrome terkelola hanya mengucapkan frasa pengantar/pengujian setelah kesehatan melaporkan inCall: true; jika tidak, speechReady: false dan upaya pengucapan diblokir alih-alih tidak melakukan apa pun secara diam-diam.
Sesi Chrome lokal menggunakan profil browser OpenClaw yang sudah login dan memerlukan BlackHole 2ch untuk jalur mikrofon/speaker. Satu perangkat BlackHole cukup untuk pengujian awal, tetapi dapat menimbulkan gema; gunakan perangkat virtual terpisah atau grafik bergaya Loopback untuk audio dupleks yang bersih.
Gateway lokal + Chrome Parallels
Gateway lengkap atau kunci API model tidak diperlukan di dalam VM macOS jika hanya digunakan untuk menyediakan Chrome. Jalankan Gateway dan agen secara lokal; jalankan host node di VM.
Instal dependensi VM, mulai ulang, lalu verifikasi:
<gateway-host> adalah IP LAN tanpa TLS, aktifkan secara eksplisit untuk jaringan privat tepercaya tersebut:
openclaw.json):
googlemeet.chrome serta kemampuan browser/browser.proxy:
manualActionRequired: true dengan manualActionReason dan manualActionMessage. Hentikan percobaan ulang, laporkan pesan tersebut beserta browserUrl/browserTitle, dan coba lagi hanya setelah tindakan manual selesai.
Jika chromeNode.node dihilangkan, OpenClaw memilih secara otomatis hanya ketika tepat satu node yang terhubung mengiklankan googlemeet.chrome sekaligus kontrol browser; tetapkan chromeNode.node (ID node, nama tampilan, atau IP jarak jauh) ketika beberapa node yang mampu terhubung.
Pemeriksaan kegagalan umum
Catatan instalasi
Konfigurasi bawaan respons suara Chrome menggunakan dua alat eksternal yang tidak dibundel atau didistribusikan ulang oleh OpenClaw; instal alat tersebut sebagai dependensi host melalui Homebrew:sox: utilitas audio baris perintah. Plugin mengeluarkan perintah perangkat CoreAudio eksplisit untuk jembatan audio PCM16 24 kHz bawaan.blackhole-2ch: driver audio virtual macOS yang menyediakan perangkatBlackHole 2chuntuk dirutekan melalui Chrome/Meet.
LGPL-2.0-only AND GPL-2.0-only; BlackHole menggunakan GPL-3.0. Jika Anda membuat penginstal atau appliance yang membundel BlackHole dengan OpenClaw, tinjau lisensi hulu BlackHole atau dapatkan lisensi terpisah dari Existential Audio.
Transport
Chrome
Membuka URL Meet melalui kontrol browser OpenClaw dan bergabung sebagai profil browser OpenClaw yang sudah masuk. Pada macOS, Plugin memeriksaBlackHole 2ch sebelum peluncuran dan, jika dikonfigurasi, menjalankan perintah kesehatan/permulaan jembatan audio sebelum membuka Chrome. Untuk Chrome lokal, pilih profil dengan browser.defaultProfile; sebagai gantinya, chrome.browserProfile diteruskan ke host chrome-node.
BlackHole 2ch tidak terinstal, proses bergabung gagal dengan kesalahan penyiapan, alih-alih bergabung tanpa jalur audio.
Twilio
Rencana panggilan ketat yang didelegasikan kepada Plugin panggilan suara. Rencana ini tidak mengurai halaman Meet untuk mencari nomor telepon; Google Meet harus menyediakan nomor telepon panggilan masuk dan PIN untuk rapat. Aktifkan Voice Call pada host Gateway, bukan node Chrome:openclaw.json:
realtime.provider: "openai" dengan OPENAI_API_KEY jika OpenAI adalah penyedia suara waktu nyata.
Mulai ulang atau muat ulang Gateway setelah mengaktifkan voice-call; perubahan konfigurasi Plugin tidak berlaku hingga dimuat ulang. Verifikasi:
googlemeet setup mencakup pemeriksaan twilio-voice-call-plugin, twilio-voice-call-credentials, dan twilio-voice-call-webhook.
--dtmf-sequence untuk urutan khusus, dengan w di awal atau koma untuk jeda sebelum PIN:
OAuth dan pra-pemeriksaan
OAuth bersifat opsional untuk membuat tautan Meet, karenagooglemeet create dapat beralih ke otomatisasi browser sebagai fallback. Konfigurasikan OAuth untuk pembuatan melalui API resmi, resolusi ruang, atau pra-pemeriksaan Meet Media API. Proses bergabung melalui Chrome/Chrome-node tidak pernah bergantung pada OAuth; proses tersebut tetap menggunakan profil Chrome yang sudah masuk, BlackHole/SoX, dan (untuk chrome-node) node yang terhubung.
Membuat kredensial Google
Di Google Cloud Console:1
Buat atau pilih proyek
2
Aktifkan Google Meet REST API
3
Konfigurasikan layar persetujuan OAuth
Internal adalah pilihan paling sederhana untuk organisasi Google Workspace. External dapat digunakan untuk penyiapan pribadi/pengujian; selama aplikasi berada dalam Testing, tambahkan setiap akun Google yang akan memberikan otorisasi sebagai pengguna uji.
4
Tambahkan cakupan yang diminta
https://www.googleapis.com/auth/meetings.space.createdhttps://www.googleapis.com/auth/meetings.space.readonlyhttps://www.googleapis.com/auth/meetings.space.settingshttps://www.googleapis.com/auth/meetings.conference.media.readonlyhttps://www.googleapis.com/auth/calendar.events.readonly(pencarian Kalender)https://www.googleapis.com/auth/drive.meet.readonly(ekspor isi dokumen transkrip/catatan pintar)
5
Buat ID klien OAuth
Jenis aplikasi Web application. URI pengalihan yang diotorisasi:
6
Salin ID klien dan rahasia klien
meetings.space.created diwajibkan oleh spaces.create. meetings.space.readonly menguraikan URL/kode Meet menjadi ruang. meetings.space.settings memungkinkan OpenClaw meneruskan pengaturan SpaceConfig seperti accessType selama pembuatan ruang melalui API. meetings.conference.media.readonly digunakan untuk pra-pemeriksaan Meet Media API dan pekerjaan media; Google mungkin mewajibkan pendaftaran Developer Preview untuk penggunaan Media API yang sebenarnya. calendar.events.readonly hanya diperlukan untuk pencarian kalender --today/--event. drive.meet.readonly hanya diperlukan untuk ekspor --include-doc-bodies. Jika Anda hanya memerlukan proses bergabung berbasis browser melalui Chrome, lewati OAuth sepenuhnya.
Membuat token penyegaran
Konfigurasikanoauth.clientId dan secara opsional oauth.clientSecret (atau teruskan sebagai variabel lingkungan), lalu jalankan:
http://localhost:8085/oauth2callback, lalu mencetak blok konfigurasi oauth dengan token penyegaran. Tambahkan --manual untuk alur salin/tempel ketika browser tidak dapat menjangkau callback lokal:
oauth di bawah konfigurasi Plugin:
openclaw googlemeet auth login --json agar token penyegaran mencakup rangkaian cakupan saat ini.
Memverifikasi OAuth dengan doctor
ok, configured, tokenSource, expiresAt, pesan pemeriksaan) dan tidak pernah mencetak token akses, token penyegaran, atau rahasia klien.
Buktikan pengaktifan Meet API dan cakupan
spaces.create dengan pemeriksaan pembuatan yang memiliki efek samping:
403 dari pemeriksaan ini biasanya berarti Meet REST API dinonaktifkan, token penyegaran tidak memiliki cakupan yang diperlukan, atau akun Google tidak dapat mengakses ruang tersebut. Kesalahan token penyegaran berarti jalankan ulang openclaw googlemeet auth login --json dan simpan blok oauth yang baru.
OAuth tidak diperlukan untuk fallback browser; autentikasi Google di sana berasal dari profil Chrome yang telah masuk pada node yang dipilih, bukan dari konfigurasi OpenClaw.
Variabel lingkungan berikut diterima sebagai fallback:
OPENCLAW_GOOGLE_MEET_CLIENT_IDatauGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETatauGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENatauGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENatauGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATatauGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGatauGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKatauGOOGLE_MEET_PREVIEW_ACK
Mengurai, melakukan prapemeriksaan, dan membaca artefak
--meeting, artifacts, dan attendance, catatan konferensi terbaru digunakan secara default; berikan --all-conference-records untuk setiap catatan yang dipertahankan.
Pencarian Kalender mengurai URL rapat dari Google Calendar sebelum membaca artefak (memerlukan token penyegaran yang menyertakan cakupan baca-saja acara Kalender):
--today mencari acara dengan tautan Meet dalam kalender primary hari ini; --event <query> mencari teks acara yang cocok; --calendar <id> menargetkan kalender nonutama. calendar-events menampilkan pratinjau acara yang cocok dan menandai acara yang akan dipilih oleh latest/artifacts/attendance/export.
Jika Anda sudah mengetahui ID catatan konferensi, akses secara langsung:
spaces.endActiveConference dan memerlukan OAuth dengan cakupan meetings.space.created untuk ruang yang dapat dikelola oleh akun yang diotorisasi. Menerima URL Meet, kode rapat, atau spaces/{id}, lalu terlebih dahulu mengurainya menjadi sumber daya ruang API. Ini terpisah dari googlemeet leave: leave menghentikan partisipasi lokal/sesi OpenClaw; end-active-conference meminta Google Meet mengakhiri konferensi aktif untuk ruang tersebut.
Tulis laporan yang mudah dibaca:
artifacts mengembalikan metadata catatan konferensi beserta metadata sumber daya peserta, rekaman, transkrip, entri transkrip terstruktur, dan catatan cerdas saat Google menyediakannya. --no-transcript-entries melewati pencarian entri untuk rapat besar. attendance mengembangkan peserta menjadi baris sesi peserta dengan waktu pertama/terakhir terlihat, total durasi sesi, penanda terlambat/keluar lebih awal, serta menggabungkan sumber daya peserta duplikat berdasarkan pengguna yang masuk atau nama tampilan; --no-merge-duplicates mempertahankan sumber daya mentah secara terpisah, sedangkan --late-after-minutes/--early-before-minutes menyesuaikan ambang batas.
export menulis folder yang berisi summary.md, attendance.csv, transcript.md, artifacts.json, attendance.json, dan manifest.json. manifest.json mencatat masukan yang dipilih, opsi ekspor, catatan konferensi, berkas keluaran, jumlah, sumber token, acara Kalender yang digunakan, dan peringatan pengambilan parsial. --zip juga menulis arsip portabel di samping folder. --include-doc-bodies mengekspor teks Google Docs dari transkrip/catatan cerdas tertaut melalui Drive files.export (memerlukan cakupan baca-saja Drive Meet); tanpanya, ekspor hanya menyertakan metadata Meet dan entri transkrip terstruktur. Kegagalan artefak parsial (kesalahan pencantuman catatan cerdas, entri transkrip, atau isi dokumen) mempertahankan peringatan dalam ringkasan/manifes alih-alih menggagalkan seluruh ekspor. --dry-run mengambil data yang sama dan mencetak JSON manifes tanpa membuat folder atau ZIP.
Agen menggunakan tindakan yang sama melalui alat google_meet (export, create dengan accessType, end_active_conference, test_listen); lihat Alat.
Uji singkat langsung
Uji singkat artefak/kehadiran dasar memerlukan
meetings.space.readonly dan meetings.conference.media.readonly. Pencarian Kalender memerlukan calendar.events.readonly. Ekspor isi dokumen Drive memerlukan drive.meet.readonly.
Contoh pembuatan
google_meet mengembalikan detail terstruktur, bukan string biasa:
manualActionRequired: true atau kesalahan fallback browser dan meminta operator menyelesaikan login Google sebelum mencoba lagi.
Tetapkan preview.enrollmentAcknowledged: true hanya setelah memastikan proyek Cloud, prinsipal OAuth, dan peserta rapat Anda terdaftar dalam Google Workspace Developer Preview Program untuk API media Meet.
Konfigurasi
Jalur agen Chrome umum hanya memerlukan Plugin diaktifkan, BlackHole, SoX, kunci penyedia waktu nyata, dan penyedia TTS OpenClaw yang dikonfigurasi:Default
chrome.audioBridgeCommand dan chrome.audioBridgeHealthCommand memungkinkan jembatan eksternal mengendalikan seluruh jalur audio lokal sebagai pengganti chrome.audioInputCommand/chrome.audioOutputCommand; lihat Catatan untuk batasan mengenai mode yang dapat menggunakannya.
Tersedia migrasi openclaw doctor --fix untuk bentuk lama realtime.provider: "google": migrasi tersebut memindahkan maksud itu ke realtime.voiceProvider: "google" beserta realtime.transcriptionProvider: "openai" ketika bidang-bidang tersebut belum disetel.
Penggantian opsional
messages.tts.providers.elevenlabs.speakerVoiceId. Jawaban agen juga dapat menggunakan arahan [[tts:speakerVoiceId=... model=eleven_v3]] per jawaban ketika penggantian model TTS diaktifkan, tetapi konfigurasi merupakan default deterministik untuk rapat. Saat bergabung, log menampilkan transcriptionProvider=elevenlabs, dan setiap jawaban lisan dicatat sebagai provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>.
Konfigurasi khusus Twilio:
voiceCall.enabled: true (default) dan transport Twilio, Voice Call menjalankan urutan DTMF sebelum membuka aliran media waktu nyata, lalu menggunakan teks pembuka yang tersimpan sebagai salam awal waktu nyata. Jika voice-call tidak diaktifkan, Google Meet tetap dapat memvalidasi dan mencatat rencana panggilan, tetapi tidak dapat melakukan panggilan Twilio.
Biarkan voiceCall.gatewayUrl tidak disetel untuk menggunakan runtime Gateway tepercaya lokal, yang mempertahankan
agen pemanggil selama keseluruhan panggilan. URL Gateway yang dikonfigurasi tetap menjadi target WebSocket eksplisit dan
tidak dapat mengautentikasi asal-usul plugin; penggabungan agen non-default gagal secara tertutup alih-alih secara diam-diam
menggunakan agen lain. Jalankan Google Meet dan Voice Call dalam proses Gateway yang sama ketika perutean per agen
diperlukan.
Alat
Agen menggunakan alatgoogle_meet:
test_speech selalu memaksakan mode: "agent" atau "bidi" dan gagal jika diminta berjalan dalam mode: "transcribe", karena sesi khusus pengamatan tidak dapat menghasilkan ucapan. Hasil speechOutputVerified didasarkan pada peningkatan byte keluaran audio waktu nyata selama panggilan tersebut, sehingga sesi yang digunakan kembali dengan audio lama tidak dihitung sebagai pemeriksaan baru.
Untuk transportasi Chrome, leave membiarkan tab milik pengguna yang digunakan kembali tetap terbuka setelah mengeklik tombol keluar dari panggilan milik Meet. Tab yang dibuka oleh OpenClaw ditutup setelah keluar.
Gunakan transport: "chrome" ketika Chrome berjalan pada host Gateway, transport: "chrome-node" ketika berjalan pada node yang dipasangkan. Dalam kedua kasus, penyedia model dan openclaw_agent_consult berjalan pada host Gateway, sehingga kredensial model tetap berada di sana. Log mode agen menyertakan penyedia/model transkripsi yang telah diuraikan saat bridge dimulai serta penyedia/model/suara/format keluaran/laju sampel TTS setelah setiap balasan yang disintesis. mode: "realtime" mentah masih diterima sebagai alias kompatibilitas lama untuk mode: "agent", tetapi tidak lagi ditampilkan dalam enum mode milik alat.
create dengan ruang yang didukung API dan kebijakan akses eksplisit:
status menyertakan status Chrome jika tersedia:
Mode agen dan bidi
Mode
agent: penyedia transkripsi waktu nyata mendengar audio rapat, transkrip akhir peserta dirutekan melalui agen OpenClaw yang dikonfigurasi, dan jawaban diucapkan melalui TTS OpenClaw biasa. Fragmen transkrip akhir yang berdekatan digabungkan sebelum konsultasi agar satu giliran ucapan tidak menghasilkan beberapa jawaban parsial yang kedaluwarsa; masukan waktu nyata ditekan saat audio asisten dalam antrean masih diputar, dan gema transkrip terbaru yang menyerupai asisten diabaikan sebelum konsultasi agar loopback BlackHole tidak membuat agen menjawab ucapannya sendiri.
Mode bidi: model suara waktu nyata menjawab secara langsung dan dapat memanggil openclaw_agent_consult untuk penalaran yang lebih mendalam, informasi terkini, atau alat OpenClaw normal. Alat konsultasi menjalankan agen OpenClaw biasa di balik layar dengan konteks transkrip rapat terbaru dan mengembalikan jawaban lisan yang ringkas; dalam mode agent, OpenClaw mengirim jawaban tersebut langsung ke TTS, sedangkan dalam mode bidi, model suara waktu nyata dapat mengucapkannya kembali. Mode ini menggunakan mekanisme konsultasi bersama yang sama dengan Voice Call.
Secara default, konsultasi dijalankan terhadap agen main; setel realtime.agentId untuk mengarahkan jalur Meet ke ruang kerja agen khusus, default model, kebijakan alat, memori, dan riwayat sesi. Konsultasi mode agen menggunakan kunci sesi agent:<id>:subagent:google-meet:<session> per rapat agar pertanyaan lanjutan mempertahankan konteks rapat sekaligus mewarisi kebijakan agen normal. Ketika agen memanggil google_meet dalam mode agen, sesi konsultan membuat percabangan dari transkrip pemanggil saat ini sebelum menjawab ucapan peserta; sesi Meet tetap terpisah agar tindak lanjut rapat tidak secara langsung mengubah transkrip pemanggil.
realtime.toolPolicy mengontrol proses konsultasi:
Kunci sesi konsultasi dicakup per sesi Meet, sehingga panggilan konsultasi lanjutan menggunakan kembali konteks konsultasi sebelumnya selama rapat yang sama.
Paksa pemeriksaan kesiapan lisan setelah Chrome sepenuhnya bergabung:
Daftar periksa pengujian langsung
Sebelum menyerahkan rapat kepada agen tanpa pengawasan:googlemeet setupseluruhnya hijau, dan menyertakanchrome-node-connectedketika Chrome-node merupakan transportasi default atau sebuah node disematkan.nodes statusmenampilkan node yang dipilih dalam keadaan terhubung, mengiklankangooglemeet.chromedanbrowser.proxy.- Tab Meet bergabung, dan
test-speechmengembalikan status Chrome denganinCall: true.
googlemeet setupmencakup pemeriksaantwilio-voice-call-plugin,twilio-voice-call-credentials, dantwilio-voice-call-webhookberwarna hijau.voicecalltersedia di CLI setelah Gateway dimuat ulang.- Sesi yang dikembalikan memiliki
transport: "twilio"dan sebuahtwilio.voiceCallId. openclaw logs --followmenunjukkan TwiML DTMF disajikan sebelum TwiML waktu nyata, lalu bridge waktu nyata dengan salam awal dimasukkan ke antrean.googlemeet leave <sessionId>mengakhiri panggilan suara yang didelegasikan.
Pemecahan masalah
Agen tidak dapat melihat alat Google Meet
Pastikan plugin diaktifkan dan muat ulang Gateway; agen yang sedang berjalan hanya melihat alat plugin yang didaftarkan oleh proses Gateway saat ini:google_meet tetap terlihat, tetapi tindakan bicara balik Chrome lokal diblokir sebelum mencapai bridge audio. Gunakan mode: "transcribe", panggilan masuk Twilio, atau host chrome-node macOS sebagai pengganti jalur agen Chrome lokal default.
Tidak ada Node berkemampuan Google Meet yang terhubung
Pada host Node:googlemeet.chrome serta browser.proxy; konfigurasi Gateway harus mengizinkan keduanya:
googlemeet setup gagal pada chrome-node-connected, atau log Gateway melaporkan gateway token mismatch, instal ulang atau mulai ulang Node dengan token Gateway saat ini:
Browser terbuka tetapi agen tidak dapat bergabung
Jalankangooglemeet test-listen untuk bergabung hanya sebagai pengamat atau googlemeet test-speech untuk bergabung secara waktu nyata, lalu periksa status kesehatan Chrome yang dikembalikan. Jika salah satunya melaporkan manualActionRequired: true, tampilkan manualActionMessage kepada operator dan hentikan percobaan ulang hingga tindakan browser selesai.
Tindakan manual umum: masuk ke profil Chrome; izinkan tamu masuk dari akun host Meet; berikan izin mikrofon/kamera Chrome ketika dialog native muncul; tutup atau perbaiki dialog izin Meet yang macet.
Jangan laporkan “belum masuk” hanya karena Meet bertanya “Do you want people to hear you in the meeting?”; itu adalah layar perantara pilihan audio Meet. OpenClaw mengeklik Use microphone melalui otomatisasi browser jika tersedia dan terus menunggu status rapat yang sebenarnya; untuk fallback browser khusus pembuatan, OpenClaw mungkin mengeklik Continue without microphone sebagai gantinya karena pembuatan URL tidak memerlukan jalur audio waktu nyata.
Pembuatan rapat gagal
googlemeet create menggunakan API Meet spaces.create ketika OAuth dikonfigurasi; jika tidak, browser Node Chrome yang disematkan digunakan. Pastikan:
- Pembuatan melalui API:
oauth.clientIddanoauth.refreshToken(atau variabel lingkunganOPENCLAW_GOOGLE_MEET_*yang sesuai) tersedia, dan token penyegaran dibuat setelah dukungan pembuatan ditambahkan; token lama mungkin tidak memilikimeetings.space.created, jadi jalankan kembaliopenclaw googlemeet auth login --json. - Fallback browser:
defaultTransport: "chrome-node"danchromeNode.nodemengarah ke Node terhubung yang memilikibrowser.proxydangooglemeet.chrome; profil Chrome OpenClaw pada Node tersebut sudah masuk dan dapat membukahttps://meet.google.com/new. - Percobaan ulang fallback browser: gunakan kembali tab prompt
.../newatau akun Google yang sudah ada sebelum membuka tab baru; coba ulang panggilan alat, bukan membuka tab lain secara manual. - Tindakan manual: jika alat mengembalikan
manualActionRequired: true, gunakanbrowser.nodeId,browser.targetId,browserUrl, danmanualActionMessageuntuk memandu operator; jangan mencoba ulang dalam perulangan. - Layar perantara pilihan audio: jika Meet menampilkan “Do you want people to hear you in the meeting?”, biarkan tab tetap terbuka. OpenClaw seharusnya mengeklik Use microphone atau (khusus pembuatan) Continue without microphone dan terus menunggu URL yang dihasilkan; jika tidak dapat melakukannya, galat seharusnya menyebutkan
meet-audio-choice-required, bukangoogle-login-required.
Agen bergabung tetapi tidak berbicara
mode: "agent" untuk jalur STT -> agen OpenClaw -> TTS, dan mode: "bidi" untuk fallback suara waktu nyata langsung. mode: "transcribe" sengaja tidak memulai bridge bicara balik. Untuk debugging hanya sebagai pengamat, jalankan openclaw googlemeet status --json <session-id> setelah peserta berbicara dan periksa captioning, transcriptLines, lastCaptionText. Jika inCall bernilai true tetapi transcriptLines tetap 0, teks layar Meet mungkin dinonaktifkan, belum ada yang berbicara sejak pengamat dipasang, UI Meet berubah, atau teks layar langsung tidak tersedia untuk bahasa/akun rapat tersebut.
googlemeet test-speech selalu memeriksa jalur waktu nyata dan melaporkan apakah byte keluaran bridge teramati untuk pemanggilan tersebut. Jika speechOutputVerified bernilai false dan speechOutputTimedOut bernilai true, penyedia waktu nyata mungkin telah menerima ucapan tersebut, tetapi OpenClaw tidak melihat byte keluaran baru mencapai bridge audio Chrome.
Pastikan juga: kunci penyedia waktu nyata (OPENAI_API_KEY atau GEMINI_API_KEY) tersedia pada host Gateway; BlackHole 2ch terlihat pada host Chrome; sox tersedia di sana; mikrofon/speaker Meet dirutekan melalui jalur audio virtual (doctor seharusnya menampilkan meet output routed: yes untuk proses bergabung waktu nyata melalui Chrome lokal).
googlemeet doctor [session-id] mencetak sesi, Node, status dalam panggilan, alasan tindakan manual, koneksi penyedia waktu nyata, realtimeReady, aktivitas masukan/keluaran audio, stempel waktu audio terakhir, penghitung byte, dan URL browser. Gunakan googlemeet status [session-id] --json untuk JSON mentah, serta googlemeet doctor --oauth (tambahkan --meeting atau --create-space) untuk memverifikasi penyegaran OAuth tanpa mengekspos token.
Jika waktu agen habis dan tab Meet sudah terbuka, periksa tab tersebut tanpa membuka tab lain:
recover_current_tab: tindakan ini memfokuskan dan memeriksa tab Meet yang sudah ada untuk transport yang dipilih (kontrol browser lokal untuk chrome, Node yang dikonfigurasi untuk chrome-node) tanpa membuka tab atau sesi baru, serta melaporkan penghambat saat ini (login, izin bergabung, perizinan, status pilihan audio). Perintah CLI berkomunikasi dengan Gateway yang dikonfigurasi, yang harus sedang berjalan; chrome-node juga mengharuskan Node terhubung.
Pemeriksaan penyiapan Twilio gagal
twilio-voice-call-plugin gagal ketika voice-call tidak diizinkan atau tidak diaktifkan: tambahkan ke plugins.allow, aktifkan plugins.entries.voice-call, lalu muat ulang Gateway.
twilio-voice-call-credentials gagal ketika backend Twilio tidak memiliki SID akun, token autentikasi, atau nomor penelepon:
twilio-voice-call-webhook gagal ketika voice-call tidak memiliki eksposur Webhook publik, atau publicUrl mengarah ke ruang jaringan loopback/pribadi. Jangan gunakan localhost, 127.0.0.1, 0.0.0.0, 10.x, 172.16.x-172.31.x, 192.168.x, 169.254.x, fc00::/7, atau fd00::/8 sebagai publicUrl; callback operator telepon tidak dapat menjangkaunya. Atur plugins.entries.voice-call.config.publicUrl ke URL publik, atau konfigurasikan eksposur tunnel/Tailscale:
voicecall smoke hanya memeriksa kesiapan. Lakukan uji coba tanpa eksekusi untuk nomor tertentu:
--yes hanya jika Anda sengaja ingin melakukan panggilan keluar langsung:
Panggilan Twilio dimulai tetapi tidak pernah memasuki rapat
Pastikan acara Meet menyediakan detail panggilan masuk telepon, lalu teruskan nomor panggilan masuk serta PIN yang tepat atau urutan DTMF khusus:w di awal atau koma dalam --dtmf-sequence untuk memberi jeda sebelum PIN.
Jika panggilan dibuat tetapi daftar peserta Meet tidak pernah menampilkan peserta panggilan masuk:
openclaw googlemeet doctor <session-id>: pastikan ID panggilan Twilio yang didelegasikan, apakah DTMF dimasukkan ke antrean, dan apakah salam pembuka diminta.openclaw voicecall status --call-id <id>: pastikan panggilan masih aktif.openclaw voicecall tail: pastikan Webhook Twilio tiba di Gateway.openclaw logs --follow: cari urutan Twilio Meet: Google Meet mendelegasikan proses bergabung, Voice Call menyimpan dan menyajikan TwiML DTMF prapenyambungan, Voice Call menyajikan TwiML waktu nyata untuk panggilan Twilio, lalu Google Meet meminta ucapan pembuka denganvoicecall.speak.- Jalankan kembali
openclaw googlemeet setup --transport twilio; pemeriksaan penyiapan berwarna hijau diwajibkan, tetapi tidak membuktikan bahwa urutan PIN rapat sudah benar. - Pastikan nomor panggilan masuk berasal dari undangan dan wilayah Meet yang sama dengan PIN.
- Naikkan
voiceCall.dtmfDelayMsdari nilai default 12 detik jika Meet lambat menjawab atau transkrip panggilan masih menampilkan prompt PIN setelah DTMF prapenyambungan dikirim. - Jika peserta berhasil bergabung tetapi salam tidak terdengar, periksa
openclaw logs --followuntuk permintaanvoicecall.speakpasca-DTMF dan pemutaran TTS aliran media atau fallback<Say>Twilio. Jika transkrip masih menampilkan “enter the meeting PIN”, sambungan telepon belum bergabung ke ruang Meet, sehingga peserta tidak akan mendengar ucapan.
plugins.entries.voice-call.config.publicUrl atau tunnel yang dikonfigurasi. Lihat Pemecahan masalah panggilan suara.
Catatan
API media resmi Google Meet berorientasi pada penerimaan, sehingga berbicara ke dalam panggilan tetap memerlukan jalur peserta. Plugin ini membuat batas tersebut tetap terlihat: Chrome menangani partisipasi melalui browser dan perutean audio lokal; Twilio menangani partisipasi melalui panggilan masuk telepon. Mode bicara balik Chrome memerlukanBlackHole 2ch serta salah satu dari:
chrome.audioInputCommandpluschrome.audioOutputCommand: OpenClaw mengelola bridge dan menyalurkan audio dalamchrome.audioFormatantara perintah-perintah tersebut dan penyedia yang dipilih. Modeagentmenggunakan transkripsi waktu nyata serta TTS reguler; modebidimenggunakan penyedia suara waktu nyata. Jalur default adalah PCM16 24 kHz denganchrome.audioBufferBytes: 4096; G.711 mu-law 8 kHz tetap tersedia untuk pasangan perintah lama.chrome.audioBridgeCommand: perintah bridge eksternal mengelola seluruh jalur audio lokal dan harus keluar setelah memulai atau memvalidasi daemon-nya. Hanya valid untukbidi, karena modeagentmemerlukan akses langsung ke pasangan perintah untuk TTS.
chrome.bargeInInputCommand dapat mendengarkan mikrofon lokal terpisah dan menghentikan pemutaran asisten saat seseorang mulai berbicara, sehingga ucapan manusia tetap didahulukan daripada keluaran asisten meskipun input loopback BlackHole bersama dinonaktifkan sementara selama pemutaran asisten. Seperti chrome.audioInputCommand/chrome.audioOutputCommand, ini adalah perintah lokal yang dikonfigurasi operator: gunakan jalur perintah tepercaya atau daftar argumen yang eksplisit, jangan pernah menggunakan skrip dari lokasi yang tidak tepercaya.
Untuk audio dupleks yang bersih, rutekan keluaran Meet dan mikrofon Meet melalui perangkat virtual terpisah atau grafik perangkat virtual bergaya Loopback; satu perangkat BlackHole bersama dapat memantulkan suara peserta lain kembali ke panggilan.
googlemeet speak memicu bridge audio balas bicara yang aktif untuk sesi Chrome; googlemeet leave menghentikannya (dan, untuk sesi Twilio yang didelegasikan melalui Voice Call, mengakhiri panggilan yang mendasarinya). Gunakan googlemeet end-active-conference untuk sekaligus menutup konferensi Google Meet yang aktif pada ruang yang dikelola melalui API.