Google Meet (Plugin)
دعم المشاركين في Google Meet لـ OpenClaw. تم تصميم الـ Plugin ليكون صريحًا:- لا ينضم إلا إلى عنوان URL صريح من
https://meet.google.com/.... - يكون الصوت
realtimeهو الوضع الافتراضي. - يمكن للصوت في الوقت الفعلي الرجوع إلى وكيل OpenClaw الكامل عند الحاجة إلى استدلال أعمق أو أدوات.
- تبدأ المصادقة عبر Google OAuth الشخصي أو ملف Chrome شخصي مسجّل الدخول بالفعل.
- لا يوجد إعلان موافقة تلقائي.
- الواجهة الخلفية الصوتية الافتراضية لـ Chrome هي
BlackHole 2ch. - يمكن أن يعمل Chrome محليًا أو على مضيف Node مقترن.
- يقبل Twilio رقم اتصال هاتفي بالإضافة إلى PIN اختياري أو تسلسل DTMF.
- أمر CLI هو
googlemeet؛ أماmeetفهو محجوز لسير عمل المؤتمرات الهاتفية الأوسع للوكلاء.
البدء السريع
ثبّت تبعيات الصوت المحلية وقم بتكوين موفّر صوت في الوقت الفعلي للواجهة الخلفية. OpenAI هو الافتراضي؛ كما يعمل Google Gemini Live أيضًا معrealtime.provider: "google":
blackhole-2ch بتثبيت جهاز الصوت الافتراضي BlackHole 2ch. يتطلب
مثبّت Homebrew إعادة تشغيل قبل أن يتيح macOS هذا الجهاز:
google_meet:
BlackHole 2ch لمسار الميكروفون/مكبر الصوت الذي يستخدمه OpenClaw. للحصول على صوت مزدوج نظيف، استخدم أجهزة افتراضية منفصلة أو مخططًا على نمط Loopback؛ يكفي جهاز BlackHole واحد لاختبار دخاني أولي لكنه قد يسبب صدى.
Gateway محلي + Chrome على Parallels
أنت لا تحتاج إلى OpenClaw Gateway كامل أو مفتاح API للنموذج داخل VM على macOS فقط لكي يكون Chrome مملوكًا لـ VM. شغّل Gateway والوكيل محليًا، ثم شغّل مضيف Node داخل VM. فعّل الـ Plugin المضمّن على VM مرة واحدة حتى يعلن Node عن أمر Chrome: ما الذي يعمل وأين:- مضيف Gateway: OpenClaw Gateway ومساحة عمل الوكيل ومفاتيح النموذج/API وموفّر
realtimeوتكوين Plugin الخاص بـ Google Meet. - Parallels macOS VM: OpenClaw CLI/مضيف Node وGoogle Chrome وSoX وBlackHole 2ch وملف Chrome شخصي مسجّل الدخول إلى Google.
- غير مطلوب داخل VM: خدمة Gateway أو تكوين الوكيل أو مفتاح OpenAI/GPT أو إعداد موفّر النموذج.
BlackHole 2ch:
<gateway-host> عنوان IP ضمن LAN ولم تكن تستخدم TLS، فسيرفض Node اتصال WebSocket النصي الصريح إلا إذا وافقت عليه لهذه الشبكة الخاصة الموثوقة:
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 هو متغير بيئة للعملية، وليس إعدادًا في
openclaw.json. يخزّن openclaw node install هذا المتغير في بيئة LaunchAgent
عندما يكون موجودًا في أمر التثبيت.
وافق على Node من مضيف Gateway:
googlemeet.chrome:
google_meet مع transport: "chrome-node".
إذا تم حذف chromeNode.node، فسيجري OpenClaw اختيارًا تلقائيًا فقط عندما يعلن Node واحد متصل بالضبط عن googlemeet.chrome. إذا كانت هناك عدة Nodes قادرة ومتّصلة، فاضبط chromeNode.node على معرّف Node أو اسمه المعروض أو عنوان IP البعيد.
فحوصات الأعطال الشائعة:
No connected Google Meet-capable node: ابدأopenclaw node runداخل VM، ووافق على الاقتران، وتأكد من تشغيلopenclaw plugins enable google-meetداخل VM. أكّد أيضًا أن مضيف Gateway يسمح بأمر Node باستخدامgateway.nodes.allowCommands: ["googlemeet.chrome"].BlackHole 2ch audio device not found on the node: ثبّتblackhole-2chداخل VM وأعد تشغيل VM.- يفتح Chrome لكنه لا يستطيع الانضمام: سجّل الدخول إلى Chrome داخل VM وأكّد أن ذلك الملف الشخصي يمكنه الانضمام إلى عنوان Meet URL يدويًا.
- لا يوجد صوت: في Meet، وجّه الميكروفون/مكبر الصوت عبر مسار جهاز الصوت الافتراضي الذي يستخدمه OpenClaw؛ استخدم أجهزة افتراضية منفصلة أو توجيهًا على نمط Loopback للحصول على صوت مزدوج نظيف.
ملاحظات التثبيت
يستخدم وضع Chrome الافتراضي في الوقت الفعلي أداتين خارجيتين:sox: أداة صوت من سطر الأوامر. يستخدم الـ Plugin الأمرينrecوplayللجسر الصوتي الافتراضي بتنسيق 8 كيلوهرتز G.711 mu-law.blackhole-2ch: برنامج تشغيل صوت افتراضي لـ macOS. ينشئ جهاز الصوتBlackHole 2chالذي يمكن لـ Chrome/Meet التوجيه عبره.
LGPL-2.0-only AND GPL-2.0-only؛ أما BlackHole فترخيصه GPL-3.0. إذا كنت تبني مثبّتًا أو جهازًا مخصصًا يضمّن BlackHole مع OpenClaw، فراجع شروط ترخيص BlackHole الأصلية أو احصل على ترخيص منفصل من Existential Audio.
وسائل النقل
Chrome
تفتح وسيلة النقل Chrome عنوان Meet URL في Google Chrome وتنضم باستخدام ملف Chrome الشخصي المسجّل الدخول. على macOS، يتحقق الـ Plugin من وجودBlackHole 2ch قبل التشغيل. وإذا تم تكوين ذلك، فإنه يشغّل أيضًا أمر فحص سلامة الجسر الصوتي وأمر بدء التشغيل قبل فتح Chrome. استخدم chrome عندما يكون Chrome/الصوت موجودًا على مضيف Gateway؛ واستخدم chrome-node عندما يكون Chrome/الصوت موجودًا على Node مقترن مثل Parallels macOS VM.
BlackHole 2ch مثبتًا، فسيفشل الانضمام بخطأ إعداد بدلًا من الانضمام بصمت من دون مسار صوتي.
Twilio
وسيلة النقل Twilio هي خطة اتصال صارمة مفوّضة إلى Plugin مكالمات الصوت. وهي لا تحلّل صفحات Meet لاستخراج أرقام الهواتف.--dtmf-sequence عندما يحتاج الاجتماع إلى تسلسل مخصص:
OAuth والفحص المسبق
يستخدم الوصول إلى Google Meet Media API عميل OAuth شخصيًا أولًا. قم بتكوينoauth.clientId واختياريًا oauth.clientSecret، ثم شغّل:
oauth تحتوي على refresh token. وهو يستخدم PKCE،
واستدعاء localhost على http://localhost:8085/oauth2callback، وتدفق نسخ/لصق يدوي مع --manual.
تُقبل متغيرات البيئة التالية كبدائل:
OPENCLAW_GOOGLE_MEET_CLIENT_IDأوGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETأوGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENأوGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENأوGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATأوGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGأوGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKأوGOOGLE_MEET_PREVIEW_ACK
spaces/{id} عبر spaces.get:
preview.enrollmentAcknowledged: true فقط بعد التأكد من أن مشروع Cloud الخاص بك، وهوية OAuth، والمشاركين في الاجتماع مسجّلون في Google Workspace Developer Preview Program لواجهات Meet media APIs.
التكوين
لا يحتاج مسار Chrome الشائع في الوقت الفعلي إلا إلى تفعيل الـ Plugin وBlackHole وSoX ومفتاح موفّر صوت في الوقت الفعلي للواجهة الخلفية. OpenAI هو الافتراضي؛ اضبطrealtime.provider: "google" لاستخدام Google Gemini Live:
plugins.entries.google-meet.config:
defaultTransport: "chrome"defaultMode: "realtime"chromeNode.node: معرّف/اسم/IP اختياري لـ Node من أجلchrome-nodechrome.audioBackend: "blackhole-2ch"chrome.audioInputCommand: أمر SoXrecيكتب صوت 8 كيلوهرتز G.711 mu-law إلى stdoutchrome.audioOutputCommand: أمر SoXplayيقرأ صوت 8 كيلوهرتز G.711 mu-law من stdinrealtime.provider: "openai"realtime.toolPolicy: "safe-read-only"realtime.instructions: ردود منطوقة موجزة، معopenclaw_agent_consultللإجابات الأعمقrealtime.introMessage: فحص جاهزية منطوق قصير عند اتصال جسر الوقت الفعلي؛ اضبطه على""للانضمام بصمت
الأداة
يمكن للوكلاء استخدام أداةgoogle_meet:
transport: "chrome" عندما يعمل Chrome على مضيف Gateway. واستخدم
transport: "chrome-node" عندما يعمل Chrome على Node مقترن مثل Parallels
VM. في كلتا الحالتين، يعمل نموذج realtime وopenclaw_agent_consult على مضيف Gateway، لذا تبقى بيانات اعتماد النموذج هناك.
استخدم action: "status" لسرد الجلسات النشطة أو فحص معرّف جلسة. واستخدم
action: "speak" مع sessionId وmessage لجعل وكيل الوقت الفعلي يتحدث فورًا. واستخدم action: "leave" لوضع علامة على انتهاء الجلسة.
استشارة وكيل الوقت الفعلي
تم تحسين وضع Chromerealtime ليعمل ضمن حلقة صوتية مباشرة. يسمع موفّر الصوت في الوقت الفعلي صوت الاجتماع ويتحدث عبر الجسر الصوتي المُكوَّن. وعندما يحتاج نموذج الوقت الفعلي إلى استدلال أعمق أو معلومات حديثة أو أدوات OpenClaw العادية، يمكنه استدعاء openclaw_agent_consult.
تعمل أداة الاستشارة على تشغيل وكيل OpenClaw العادي في الخلفية باستخدام سياق حديث من نص الاجتماع، وتُرجع إجابة منطوقة موجزة إلى جلسة الصوت في الوقت الفعلي. ويمكن لنموذج الصوت بعد ذلك نطق هذه الإجابة داخل الاجتماع.
يتحكم realtime.toolPolicy في تشغيل الاستشارة:
safe-read-only: يعرض أداة الاستشارة ويقيّد الوكيل العادي بـreadوweb_searchوweb_fetchوx_searchوmemory_searchوmemory_get.owner: يعرض أداة الاستشارة ويتيح للوكيل العادي استخدام سياسة أدوات الوكيل العادية.none: لا يعرض أداة الاستشارة لنموذج الصوت في الوقت الفعلي.
ملاحظات
إن واجهة media API الرسمية في Google Meet موجهة للاستقبال، لذلك لا يزال التحدث داخل مكالمة Meet يحتاج إلى مسار مشارك. يُبقي هذا الـ Plugin هذه الحدود واضحة: يتولى Chrome المشاركة عبر المتصفح وتوجيه الصوت المحلي؛ ويتولى Twilio المشاركة عبر الاتصال الهاتفي. يحتاج وضع Chromerealtime إلى أحد الخيارين التاليين:
chrome.audioInputCommandبالإضافة إلىchrome.audioOutputCommand: يمتلك OpenClaw جسر نموذج الوقت الفعلي ويُمرّر صوت 8 كيلوهرتز G.711 mu-law بين هذين الأمرين وموفّر الصوت في الوقت الفعلي المحدد.chrome.audioBridgeCommand: يمتلك أمر جسر خارجي مسار الصوت المحلي بالكامل، ويجب أن يخرج بعد بدء خدمته الخلفية أو التحقق منها.
googlemeet speak إلى تشغيل الجسر الصوتي النشط في الوقت الفعلي لجلسة Chrome.
ويؤدي googlemeet leave إلى إيقاف ذلك الجسر. وبالنسبة إلى جلسات Twilio المفوّضة عبر Plugin مكالمات الصوت، فإن leave ينهي أيضًا مكالمة الصوت الأساسية.