Skip to main content
ينضم Plugin ‏google-meet إلى عناوين URL صريحة لاجتماعات Meet نيابةً عن وكيل OpenClaw. وقد صُمم بنطاق محدود عمدًا:
  • لا ينضم إلا إلى عناوين URL من نوع https://meet.google.com/...؛ ولا يتصل أبدًا باجتماع عبر رقم هاتف يكتشفه بنفسه.
  • يمكن لـ googlemeet create إنشاء عنوان URL جديد لاجتماع Meet عبر Google Meet API (أو آلية احتياطية عبر المتصفح) والانضمام إليه افتراضيًا.
  • تستخدم المشاركة عبر Chrome ملفًا شخصيًا مسجل الدخول في Chrome، ويمكن أن يكون ذلك اختياريًا على Node مقترنة. أما المشاركة عبر Twilio فتتصل برقم هاتف مع رمز PIN/نغمات DTMF من خلال Plugin المكالمات الصوتية؛ ولا يمكنها الاتصال بعنوان URL لاجتماع Meet مباشرةً.
  • يقوم mode: "agent" (الافتراضي) بنسخ كلام المشاركين باستخدام موفر آني، ويوجهه إلى وكيل OpenClaw المكوَّن، وينطق الإجابة باستخدام تحويل النص إلى كلام المعتاد في OpenClaw. يتيح mode: "bidi" لنموذج صوتي آني الإجابة مباشرةً. وينضم mode: "transcribe" للمراقبة فقط من دون رد صوتي.
  • لا يوجد إعلان تلقائي عن الموافقة عندما ينضم Plugin إلى مكالمة.
  • أمر CLI هو googlemeet؛ أما meet فهو محجوز لسير عمل المؤتمرات الهاتفية الأوسع للوكلاء.

البدء السريع

ثبّت تبعيات الصوت المحلية، ثم عيّن مفتاح موفر آني. يُعد OpenAI موفر النسخ الافتراضي لوضع agent؛ ويتوفر Google Gemini Live بوصفه موفر الصوت لوضع bidi:
يثبّت blackhole-2ch جهاز الصوت الافتراضي BlackHole 2ch الذي يوجّه Chrome الصوت عبره. يتطلب مُثبّت Homebrew إعادة التشغيل قبل أن يعرض macOS الجهاز:
بعد إعادة التشغيل، تحقّق من المكوّنين:
فعّل Plugin:
تحقّق من الإعداد، ثم انضم:
مخرجات setup قابلة للقراءة بواسطة الوكيل ومراعية للوضع والنقل: فهي تعرض ملف Chrome الشخصي، وتثبيت Node، وبالنسبة إلى عمليات الانضمام الآنية عبر Chrome، جسر الصوت BlackHole/SoX وفحص المقدمة المؤجلة. تتخطى عمليات الانضمام للمراقبة فقط المتطلبات الآنية الأساسية:
عند تكوين التفويض إلى Twilio، يعرض setup أيضًا ما إذا كانت voice-call وبيانات اعتماد Twilio وإتاحة Webhook للعامة جاهزة. تعامل مع أي فحص ok: false بوصفه مانعًا لذلك النقل/الوضع قبل أن ينضم الوكيل. استخدم --json للحصول على مخرجات قابلة للقراءة آليًا، و--transport chrome|chrome-node|twilio لإجراء فحص مسبق لنقل محدد:
أو دع وكيلًا ينضم من خلال أداة google_meet:
على مضيفي Gateway الذين لا يستخدمون macOS، يظل google_meet ظاهرًا لإجراءات العناصر، والتقويم، والإعداد، والنسخ، وTwilio، وchrome-node، لكن الرد الصوتي المحلي عبر Chrome (transport: "chrome" مع mode: "agent" أو "bidi") يُحظر قبل وصوله إلى جسر الصوت، لأن هذا المسار يعتمد حاليًا على BlackHole 2ch في macOS. استخدم mode: "transcribe"، أو الاتصال الهاتفي عبر Twilio، أو مضيف chrome-node يعمل بنظام macOS بدلًا من ذلك.

إنشاء اجتماع

لدى create مساران، ويُبلّغ عنهما في حقل source بالنتيجة:
  • api: يُستخدم عند تكوين بيانات اعتماد OAuth لـ Google Meet. وهو حتمي ولا يعتمد على حالة واجهة مستخدم المتصفح.
  • browser: يُستخدم من دون بيانات اعتماد OAuth. يفتح OpenClaw ‏https://meet.google.com/new على Node المثبّتة لـ Chrome وينتظر Google لإعادة التوجيه إلى عنوان URL حقيقي يحتوي على رمز الاجتماع؛ ويجب أن يكون ملف Chrome الشخصي الخاص بـ OpenClaw على تلك Node مسجل الدخول إلى Google مسبقًا. يعيد كل من الانضمام والإنشاء استخدام علامة تبويب Meet موجودة (أو علامة تبويب مطالبة .../new / حساب Google قيد التنفيذ) قبل فتح علامة جديدة؛ وتتجاهل مطابقة علامات التبويب سلاسل الاستعلام غير المؤثرة مثل authuser.
ينضم create افتراضيًا ويعيد joined: true إلى جانب جلسة الانضمام. مرّر --no-join ‏(CLI) أو "join": false (الأداة) لإنشاء عنوان URL فقط. بالنسبة إلى الغرف المنشأة عبر API، عيّن سياسة وصول صريحة بدلًا من توريث الإعداد الافتراضي لحساب Google:
ينطبق هذا فقط على الغرف المنشأة عبر API، لذلك يجب تكوين OAuth. إذا أجريت المصادقة قبل توفر هذا الخيار، فأعد تشغيل openclaw googlemeet auth login --json بعد إضافة نطاق meetings.space.settings إلى شاشة موافقة OAuth. إذا واجهت الآلية الاحتياطية للمتصفح عائقًا متعلقًا بتسجيل الدخول إلى Google أو أذونات Meet، فتعيد الأداة manualActionRequired: true مع manualActionReason وmanualActionMessage وbrowser.nodeId/browser.targetId/browserUrl. أبلغ عن تلك الرسالة وتوقف عن فتح علامات تبويب Meet جديدة حتى يُكمل المشغّل الخطوة في المتصفح.

الانضمام للمراقبة فقط

عيّن "mode": "transcribe" لتخطي الجسر الآني مزدوج الاتجاه (من دون متطلبات BlackHole/SoX ومن دون رد صوتي). تتخطى عمليات الانضمام عبر Chrome في وضع النسخ أيضًا منح OpenClaw إذن الميكروفون/الكاميرا ومسار Meet Use microphone؛ وإذا عرض Meet الشاشة الوسيطة لاختيار الصوت، فتحاول الأتمتة اختيار Continue without microphone أولًا. تثبّت عمليات نقل Chrome المُدارة في هذا الوضع مراقبًا لترجمات Meet بأفضل جهد ممكن. يعرض googlemeet status --json وgooglemeet doctor القيم captioning وcaptionsEnabledAttempted وtranscriptLines وlastCaptionAt وlastCaptionSpeaker وlastCaptionText وذيل recentTranscript. لقراءة نص الجلسة المحدود، اقرأ علامة تبويب Meet الدقيقة التي يجري تتبعها:
يحتفظ المراقب بما لا يزيد على 2,000 سطر مكتمل من الترجمات في صفحة Meet. يظل النص التدريجي المرئي في ذيل حالة السلامة حتى يكتمل صف الترجمة، ولذلك لا يمكن أن يؤدي حفظ nextIndex إلى تخطي توسع نص لاحق؛ ويؤدي المغادرة إلى إنهاء الصفوف المرئية قبل اللقطة. يعرض droppedLines عدد الأسطر المفقودة من البداية عند تجاوز الحد. تظل نصوص الجلسات الأربع الأحدث انتهاءً قابلة للقراءة حتى إعادة تشغيل Gateway. تعيد النصوص الأقدم للجلسات المنتهية evicted: true. هذه ذاكرة وقت تشغيل مقصودة، وليست تخزينًا دائمًا لسجل الاجتماعات: قد تؤدي إعادة تشغيل Gateway، أو إغلاق علامة التبويب قبل أخذ لقطة، أو تجاوز الحدود الموثقة إلى فقدان الترجمات. لإجراء اختبار استماع بنعم/لا:
ينضم في وضع النسخ، وينتظر حركة جديدة في الترجمات/النص، ويعيد listenVerified وlistenTimedOut وحقول الإجراء اليدوي وحالة الترجمات الحالية.

سلامة الجلسة الآنية

أثناء جلسات الرد الصوتي، تعرض حالة google_meet سلامة Chrome/جسر الصوت: inCall وmanualActionRequired وproviderConnected وrealtimeReady وaudioInputActive وaudioOutputActive، والطوابع الزمنية لآخر إدخال/إخراج، وعدادات البايت، وحالة إغلاق الجسر. لا تنطق جلسات Chrome المُدارة عبارة المقدمة/الاختبار إلا بعد أن تعرض السلامة inCall: true؛ وإلا يُعرض speechReady: false وتُحظر محاولة النطق بدلًا من عدم تنفيذ أي إجراء بصمت. تنضم عمليات Chrome المحلية عبر ملف متصفح OpenClaw الشخصي المسجل الدخول، وتحتاج إلى BlackHole 2ch لمسار الميكروفون/مكبر الصوت. يكفي جهاز BlackHole واحد لإجراء اختبار أولي، لكنه قد يسبب صدى؛ استخدم أجهزة افتراضية منفصلة أو مخططًا شبيهًا بـ Loopback للحصول على صوت نظيف مزدوج الاتجاه.

Gateway محلي + Chrome عبر Parallels

لا يلزم وجود Gateway كامل أو مفتاح API للنموذج داخل جهاز macOS افتراضي لمجرد إتاحة Chrome له. شغّل Gateway والوكيل محليًا، وشغّل مضيف Node داخل الجهاز الافتراضي. ثبّت تبعيات الجهاز الافتراضي، ثم أعد التشغيل وتحقّق:
فعّل Plugin في الجهاز الافتراضي وشغّل مضيف Node:
إذا كان <gateway-host> عنوان IP على شبكة LAN من دون TLS، فوافق صراحةً على استخدام تلك الشبكة الخاصة الموثوقة:
استخدم العلامة نفسها عند التثبيت بوصفه LaunchAgent (فهي متغير في بيئة العملية، وتُخزَّن في بيئة LaunchAgent عند وجودها في أمر التثبيت، وليست إعداد openclaw.json):
وافق على Node من مضيف Gateway، ثم تأكد من أنها تعلن عن كل من googlemeet.chrome وقدرة المتصفح/browser.proxy:
وجّه Meet عبر تلك Node:
انضم الآن كالمعتاد من مضيف Gateway:
لإجراء اختبار أولي بأمر واحد يُنشئ جلسة أو يعيد استخدامها، وينطق عبارة معروفة، ويطبع سلامة الجلسة:
أثناء الانضمام الآني، تملأ أتمتة المتصفح اسم الضيف، وتنقر على Join/Ask to join، وتقبل مطالبة Meet الأولى “Use microphone” عند ظهورها (أو “Continue without microphone” أثناء الانضمام للمراقبة فقط وإنشاء اجتماع عبر المتصفح فقط). إذا كان الملف الشخصي مسجل الخروج، أو كان Meet ينتظر موافقة المضيف على الدخول، أو كان Chrome يحتاج إلى إذن الميكروفون/الكاميرا، أو كان Meet عالقًا عند مطالبة لم تُحل، فتعرض النتيجة manualActionRequired: true مع manualActionReason وmanualActionMessage. توقف عن إعادة المحاولة، وأبلغ عن تلك الرسالة مع browserUrl/browserTitle، ولا تعد المحاولة إلا بعد اكتمال الإجراء اليدوي. إذا حُذف chromeNode.node، فلن يختار OpenClaw تلقائيًا إلا عندما تعلن Node متصلة واحدة بالضبط عن كل من googlemeet.chrome والتحكم في المتصفح؛ ثبّت chromeNode.node (معرّف Node أو اسم العرض أو عنوان IP البعيد) عند اتصال عدة عُقد قادرة.

فحوص الأعطال الشائعة

ملاحظات التثبيت

يستخدم الإعداد الافتراضي للرد الصوتي في Chrome أداتين خارجيتين لا يضمّنهما OpenClaw ولا يعيد توزيعهما؛ ثبّتهما كتبعيّات على المضيف عبر Homebrew:
  • sox: أداة صوت لسطر الأوامر. يصدر Plugin أوامر صريحة لأجهزة CoreAudio لجسر الصوت الافتراضي PCM16 بتردد 24 kHz.
  • blackhole-2ch: برنامج تشغيل صوت افتراضي لنظام macOS يوفّر توجيه جهاز BlackHole 2ch عبر Chrome/Meet.
يُرخَّص SoX بموجب LGPL-2.0-only AND GPL-2.0-only؛ ويُرخَّص BlackHole بموجب GPL-3.0. إذا أنشأت مُثبّتًا أو جهازًا يضم BlackHole مع OpenClaw، فراجع ترخيص BlackHole لدى المنبع أو احصل على ترخيص منفصل من Existential Audio.

وسائل النقل

Chrome

يفتح عنوان URL الخاص بـMeet عبر التحكم في متصفح OpenClaw وينضم باستخدام ملف متصفح OpenClaw المسجّل دخوله. على macOS، يتحقق Plugin من BlackHole 2ch قبل التشغيل، وإذا كان مضبوطًا، يشغّل أمر فحص صحة/بدء تشغيل جسر الصوت قبل فتح Chrome. بالنسبة إلى Chrome المحلي، اختر الملف الشخصي باستخدام browser.defaultProfile؛ بينما يُمرَّر chrome.browserProfile إلى مضيفي chrome-node بدلًا من ذلك.
يُوجَّه صوت ميكروفون/مكبر صوت Chrome عبر جسر صوت OpenClaw المحلي. إذا لم يكن BlackHole 2ch مثبّتًا، يفشل الانضمام برسالة خطأ في الإعداد بدلًا من الانضمام من دون مسار صوتي.

Twilio

خطة اتصال صارمة مفوّضة إلى Plugin المكالمات الصوتية. لا تحلّل صفحات Meet بحثًا عن أرقام هاتف؛ يجب أن يوفّر Google Meet رقم اتصال هاتفي ورمز PIN للاجتماع. فعّل المكالمات الصوتية على مضيف Gateway، وليس على Node الخاصة بـChrome:
وفّر بيانات اعتماد Twilio عبر البيئة لإبقاء الأسرار خارج openclaw.json:
استخدم realtime.provider: "openai" مع OPENAI_API_KEY بدلًا من ذلك إذا كان OpenAI هو موفّر الصوت في الوقت الفعلي. أعد تشغيل Gateway أو أعد تحميله بعد تمكين voice-call؛ لا تصبح تغييرات إعداد Plugin سارية حتى إعادة التحميل. تحقّق باستخدام:
عند توصيل تفويض Twilio، يتضمن googlemeet setup فحوص twilio-voice-call-plugin وtwilio-voice-call-credentials وtwilio-voice-call-webhook.
استخدم --dtmf-sequence لتسلسل مخصّص، مع w بادئة أو فواصل لإضافة توقّف مؤقت قبل رمز PIN:

OAuth والفحص المسبق

OAuth اختياري لإنشاء رابط Meet، لأن googlemeet create يمكنه الرجوع إلى أتمتة المتصفح. اضبط OAuth للإنشاء عبر API الرسمي، أو تحليل المساحة، أو الفحص المسبق لـMeet Media API. لا تعتمد عمليات الانضمام عبر Chrome/Chrome-node على OAuth مطلقًا؛ فهي تستخدم ملف Chrome شخصيًا مسجّل الدخول، وBlackHole/SoX، وNode متصلة (بالنسبة إلى chrome-node) في كلتا الحالتين.

إنشاء بيانات اعتماد Google

في Google Cloud Console:
1

إنشاء مشروع أو تحديده

2

تفعيل Google Meet REST API

3

إعداد شاشة موافقة OAuth

يُعد Internal الخيار الأبسط لمؤسسة Google Workspace. ويعمل External للإعدادات الشخصية/الاختبارية؛ وأثناء وجود التطبيق في Testing، أضف كل حساب Google سيمنحه الإذن كمستخدم اختباري.
4

إضافة النطاقات المطلوبة

  • https://www.googleapis.com/auth/meetings.space.created
  • https://www.googleapis.com/auth/meetings.space.readonly
  • https://www.googleapis.com/auth/meetings.space.settings
  • https://www.googleapis.com/auth/meetings.conference.media.readonly
  • https://www.googleapis.com/auth/calendar.events.readonly (البحث في التقويم)
  • https://www.googleapis.com/auth/drive.meet.readonly (تصدير نص الاجتماع/محتوى مستند الملاحظات الذكية)
5

إنشاء معرّف عميل OAuth

نوع التطبيق Web application. عنوان URI المعتمد لإعادة التوجيه:
6

نسخ معرّف العميل وسر العميل

يتطلب spaces.create وجود meetings.space.created. يحوّل meetings.space.readonly عناوين URL/رموز Meet إلى مساحات. يتيح meetings.space.settings لـOpenClaw تمرير إعدادات SpaceConfig مثل accessType أثناء إنشاء الغرفة عبر API. يُستخدم meetings.conference.media.readonly للفحص المسبق لـMeet Media API والعمل على الوسائط؛ وقد تتطلب Google التسجيل في Developer Preview للاستخدام الفعلي لـMedia API. لا يلزم calendar.events.readonly إلا للبحث في تقويم --today/--event. ولا يلزم drive.meet.readonly إلا لتصدير --include-doc-bodies. إذا كنت تحتاج فقط إلى عمليات الانضمام عبر Chrome المستندة إلى المتصفح، فتجاوز OAuth بالكامل.

إصدار رمز التحديث

اضبط oauth.clientId وoauth.clientSecret اختياريًا (أو مرّرهما كمتغيرات بيئة)، ثم شغّل:
يشغّل هذا تدفق PKCE مع رد اتصال على localhost عبر http://localhost:8085/oauth2callback، ويطبع كتلة إعداد oauth تحتوي على رمز تحديث. أضف --manual لتدفق النسخ/اللصق عندما يتعذر على المتصفح الوصول إلى رد الاتصال المحلي:
مخرجات JSON:
خزّن كائن oauth ضمن إعداد Plugin:
فضّل متغيرات البيئة عندما لا تريد وضع رمز التحديث في الإعداد؛ يُحل الإعداد أولًا، ثم تُستخدم البيئة كخيار احتياطي. إذا أجريت المصادقة قبل توفر دعم إنشاء الاجتماعات أو البحث في التقويم أو تصدير محتوى المستند، فأعد تشغيل openclaw googlemeet auth login --json لكي يغطي رمز التحديث مجموعة النطاقات الحالية.

التحقق من OAuth باستخدام doctor

يتحقق هذا من وجود إعداد OAuth ومن قدرة رمز التحديث على إصدار رمز وصول، من دون تحميل وقت تشغيل Chrome أو اشتراط وجود Node متصلة. لا يتضمن التقرير سوى حقول الحالة (ok وconfigured وtokenSource وexpiresAt ورسائل الفحص)، ولا يطبع أبدًا رمز الوصول أو رمز التحديث أو سر العميل. أثبت تفعيل Meet API ونطاق spaces.create باستخدام فحص الإنشاء ذي الأثر الجانبي:
أثبت صلاحية قراءة مساحة موجودة:
عادةً ما يعني ظهور 403 من هذه الفحوص أن Meet REST API معطّلة، أو أن رمز التحديث يفتقد النطاق المطلوب، أو أن حساب Google لا يمكنه الوصول إلى تلك المساحة. ويعني خطأ رمز التحديث أنه يجب إعادة تشغيل openclaw googlemeet auth login --json وتخزين كتلة oauth الجديدة. لا يلزم OAuth لاستخدام البديل عبر المتصفح؛ إذ تأتي مصادقة Google هناك من ملف Chrome الشخصي المسجّل الدخول على Node المحددة، وليس من إعدادات OpenClaw. تُقبل متغيرات البيئة هذه بوصفها بدائل:
  • OPENCLAW_GOOGLE_MEET_CLIENT_ID أو GOOGLE_MEET_CLIENT_ID
  • OPENCLAW_GOOGLE_MEET_CLIENT_SECRET أو GOOGLE_MEET_CLIENT_SECRET
  • OPENCLAW_GOOGLE_MEET_REFRESH_TOKEN أو GOOGLE_MEET_REFRESH_TOKEN
  • OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN أو GOOGLE_MEET_ACCESS_TOKEN
  • OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT أو GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT
  • OPENCLAW_GOOGLE_MEET_DEFAULT_MEETING أو GOOGLE_MEET_DEFAULT_MEETING
  • OPENCLAW_GOOGLE_MEET_PREVIEW_ACK أو GOOGLE_MEET_PREVIEW_ACK

حلّ المساحة، والفحص المسبق، وقراءة العناصر

بعد أن ينشئ Meet سجلات المؤتمر:
مع --meeting، يستخدم artifacts وattendance أحدث سجل مؤتمر افتراضيًا؛ مرّر --all-conference-records لاستخدام كل سجل محتفَظ به. يحلّ البحث في التقويم عنوان URL للاجتماع من Google Calendar قبل قراءة العناصر (ويتطلب رمز تحديث يتضمن نطاق القراءة فقط لأحداث Calendar):
يبحث --today في تقويم primary لليوم عن حدث يتضمن رابط Meet؛ ويبحث --event <query> في نص الحدث المطابق؛ ويستهدف --calendar <id> تقويمًا غير أساسي. يعاين calendar-events الأحداث المطابقة ويحدد الحدث الذي ستختاره latest/artifacts/attendance/export. إذا كنت تعرف معرّف سجل المؤتمر مسبقًا، فاستهدفه مباشرةً:
أغلق الغرفة لمساحة أُنشئت عبر API:
يستدعي spaces.endActiveConference ويتطلب OAuth بنطاق meetings.space.created لمساحة يستطيع الحساب المخوّل إدارتها. يقبل عنوان URL من Meet أو رمز اجتماع أو spaces/{id}، ويحلّه أولًا إلى مورد مساحة API. وهذا منفصل عن googlemeet leave: يوقف leave مشاركة OpenClaw المحلية/ضمن الجلسة؛ بينما يطلب end-active-conference من Google Meet إنهاء المؤتمر النشط للمساحة. اكتب تقريرًا سهل القراءة:
يعيد artifacts بيانات تعريف سجل المؤتمر، إضافةً إلى بيانات تعريف موارد المشاركين والتسجيل والنص المنسوخ وإدخالات النص المنسوخ المنظّمة والملاحظات الذكية عندما تتيحها Google. يتخطى --no-transcript-entries البحث عن الإدخالات للاجتماعات الكبيرة. يوسّع attendance المشاركين إلى صفوف جلسات المشاركين تتضمن أوقات أول وآخر ظهور، والمدة الإجمالية للجلسة، وعلامات التأخر/المغادرة المبكرة، مع دمج موارد المشاركين المكررة بحسب المستخدم المسجّل دخوله أو اسم العرض؛ ويبقي --no-merge-duplicates الموارد الأولية منفصلة، بينما يضبط --late-after-minutes/--early-before-minutes الحدود. ينشئ export مجلدًا يحتوي على summary.md وattendance.csv وtranscript.md وartifacts.json وattendance.json وmanifest.json. يسجّل manifest.json المُدخل المختار، وخيارات التصدير، وسجلات المؤتمر، وملفات الإخراج، والأعداد، ومصدر الرمز، وأي حدث Calendar مستخدم، وتحذيرات الاسترجاع الجزئي. ينشئ --zip أيضًا أرشيفًا قابلًا للنقل بجوار المجلد. يصدّر --include-doc-bodies نص Google Docs المرتبط بالنصوص المنسوخة/الملاحظات الذكية عبر Drive files.export (ويتطلب نطاق القراءة فقط لـ Drive Meet)؛ ومن دونه، لا تتضمن عمليات التصدير سوى بيانات تعريف Meet وإدخالات النص المنسوخ المنظّمة. يؤدي الفشل الجزئي لأحد العناصر (سرد الملاحظات الذكية، أو إدخالات النص المنسوخ، أو خطأ نص المستند) إلى الاحتفاظ بالتحذير في الملخص/ملف البيان بدلًا من إفشال عملية التصدير بالكامل. يجلب --dry-run البيانات نفسها ويطبع JSON الخاص بملف البيان من دون إنشاء المجلد أو ملف ZIP. تستخدم الوكلاء الإجراءات نفسها من خلال أداة google_meet ‏(export، وcreate مع accessType، وend_active_conference، وtest_listen)؛ راجع الأداة.

اختبار دخاني مباشر

يحتاج الاختبار الدخاني الأساسي للعناصر/الحضور إلى meetings.space.readonly وmeetings.conference.media.readonly. ويحتاج البحث في Calendar إلى calendar.events.readonly. ويحتاج تصدير نص المستند من Drive إلى drive.meet.readonly.

أمثلة الإنشاء

يطبع معرّف URI للاجتماع الجديد ومصدره وجلسة الانضمام. مع OAuth، يستخدم Meet API؛ ومن دونه، يستخدم الملف الشخصي المسجّل الدخول في Node Chrome المثبّتة. JSON للبديل عبر المتصفح:
إذا واجه البديل عبر المتصفح أولًا تسجيل الدخول إلى Google أو عائق أذونات Meet، فإن google_meet يعيد تفاصيل منظّمة بدلًا من سلسلة نصية عادية:
JSON للإنشاء عبر API:
تنضم عملية الإنشاء افتراضيًا، لكن Chrome/Chrome-node لا يزال يتطلب ملف Google شخصيًا مسجّل الدخول للانضمام عبر المتصفح؛ وإذا كان مسجّلًا الخروج، فسيبلغ OpenClaw عن manualActionRequired: true أو خطأ في البديل عبر المتصفح، ويطلب من المشغّل إكمال تسجيل الدخول إلى Google قبل إعادة المحاولة. لا تضبط preview.enrollmentAcknowledged: true إلا بعد التأكد من تسجيل مشروع Cloud، وكيان OAuth الرئيسي، والمشاركين في الاجتماع في Google Workspace Developer Preview Program لواجهات Meet media API.

الإعدادات

لا يحتاج مسار وكيل Chrome الشائع إلا إلى تفعيل Plugin، وBlackHole، وSoX، ومفتاح موفّر للوقت الفعلي، وموفّر TTS مضبوط في OpenClaw:

الإعدادات الافتراضية

يتيح chrome.audioBridgeCommand وchrome.audioBridgeHealthCommand لجسر خارجي امتلاك مسار الصوت المحلي بالكامل بدلاً من chrome.audioInputCommand/chrome.audioOutputCommand؛ راجع الملاحظات لمعرفة القيد المتعلق بالوضع الذي يمكنه استخدامهما. يتوفر ترحيل openclaw doctor --fix للبنية القديمة realtime.provider: "google": ينقل هذا القصد إلى realtime.voiceProvider: "google" بالإضافة إلى realtime.transcriptionProvider: "openai" عندما لا تكون هذه الحقول معيّنة بالفعل.

تجاوزات اختيارية

استخدام ElevenLabs للاستماع والتحدث في وضع الوكيل كليهما:
يأتي صوت Meet الدائم من messages.tts.providers.elevenlabs.speakerVoiceId. ويمكن لردود الوكيل أيضًا استخدام توجيهات [[tts:speakerVoiceId=... model=eleven_v3]] لكل رد عند تمكين تجاوزات نموذج تحويل النص إلى كلام، لكن الإعداد هو القيمة الافتراضية الحتمية للاجتماعات. عند الانضمام، تعرض السجلات transcriptionProvider=elevenlabs، ويسجّل كل رد منطوق provider=elevenlabs model=eleven_v3 speakerVoiceId=<voiceId>. إعداد خاص بـ Twilio فقط:
مع voiceCall.enabled: true (القيمة الافتراضية) ونقل Twilio، تُجري المكالمات الصوتية تسلسل DTMF قبل فتح تدفق الوسائط الفوري، ثم تستخدم نص المقدمة المحفوظ بوصفه التحية الفورية الأولية. إذا لم يكن voice-call مُمكّنًا، فلا يزال بإمكان Google Meet التحقق من خطة الاتصال وتسجيلها، لكنه لا يستطيع إجراء مكالمة Twilio. اترك voiceCall.gatewayUrl دون تعيين لاستخدام وقت تشغيل Gateway المحلي الموثوق، الذي يحافظ على الوكيل المستدعي طوال المكالمة. يظل عنوان URL المُعدّ لـ Gateway هدف WebSocket صريحًا ولا يمكنه مصادقة منشأ Plugin؛ تفشل عمليات انضمام الوكلاء غير الافتراضيين بإغلاق آمن بدلًا من استخدام وكيل آخر بصمت. شغّل Google Meet وVoice Call ضمن عملية Gateway نفسها عندما يكون التوجيه حسب الوكيل مطلوبًا.

الأداة

يستخدم الوكلاء أداة google_meet:
يفرض test_speech دائمًا mode: "agent" أو "bidi" ويفشل إذا طُلب تشغيله في mode: "transcribe"، لأن جلسات المراقبة فقط لا يمكنها إصدار كلام. تستند نتيجة speechOutputVerified الخاصة به إلى زيادة بايتات خرج الصوت الآني أثناء تلك المكالمة، لذا لا تُعد الجلسة المُعاد استخدامها ذات الصوت الأقدم تحققًا جديدًا. بالنسبة إلى وسائل نقل Chrome، يُبقي leave علامة تبويب يملكها المستخدم ومُعاد استخدامها مفتوحة بعد النقر على زر مغادرة المكالمة في Meet. تُغلق علامات التبويب التي فتحها OpenClaw بعد المغادرة. استخدم transport: "chrome" عندما يعمل Chrome على مضيف Gateway، وtransport: "chrome-node" عندما يعمل على Node مقترنة. في الحالتين، يعمل موفرو النماذج وopenclaw_agent_consult على مضيف Gateway، لذا تبقى بيانات اعتماد النموذج هناك. تتضمن سجلات وضع الوكيل موفر/نموذج النسخ المحللين عند بدء الجسر، وموفر/نموذج/صوت/تنسيق خرج/معدل عينة TTS بعد كل رد مُركّب. ما زال mode: "realtime" الخام مقبولًا كاسم مستعار قديم للتوافق مع mode: "agent"، لكنه لم يعد معروضًا في تعداد mode الخاص بالأداة. create مع غرفة مدعومة عبر API وسياسة وصول صريحة:
إنهاء المؤتمر النشط لغرفة معروفة:
التحقق بالاستماع أولًا قبل الادعاء بأن الاجتماع مفيد:
التحدث عند الطلب:
يتضمن status حالة Chrome عند توفرها:

وضعا الوكيل وثنائي الاتجاه

وضع agent: يسمع موفر النسخ الآني صوت الاجتماع، وتُوجّه النصوص النهائية المفرغة للمشاركين عبر وكيل OpenClaw المُعدّ، وتُقرأ الإجابة عبر TTS العادي في OpenClaw. تُدمج أجزاء النص النهائي المتقاربة قبل الاستشارة كي لا تنتج دورة كلام واحدة عدة إجابات جزئية قديمة؛ ويُحجب الإدخال الآني بينما يستمر تشغيل صوت المساعد في قائمة الانتظار، وتُتجاهل أصداء النصوص الحديثة الشبيهة بكلام المساعد قبل الاستشارة كي لا يجعل الاسترجاع الحلقي لـ BlackHole الوكيل يجيب عن كلامه. وضع bidi: يجيب نموذج الصوت الآني مباشرةً ويمكنه استدعاء openclaw_agent_consult للحصول على استدلال أعمق أو معلومات حالية أو أدوات OpenClaw العادية. تشغّل أداة الاستشارة وكيل OpenClaw العادي خلف الكواليس مع سياق حديث من نص الاجتماع المفرغ، وتعيد إجابة منطوقة موجزة؛ في وضع agent يرسل OpenClaw تلك الإجابة مباشرةً إلى TTS، وفي وضع bidi يمكن لنموذج الصوت الآني نطقها. ويستخدم آلية الاستشارة المشتركة نفسها التي تستخدمها Voice Call. تعمل الاستشارات افتراضيًا باستخدام وكيل main؛ عيّن realtime.agentId لتوجيه مسار Meet إلى مساحة عمل وكيل مخصصة، وإعدادات نموذج افتراضية، وسياسة أدوات، وذاكرة، وسجل جلسات. تستخدم استشارات وضع الوكيل مفتاح جلسة agent:<id>:subagent:google-meet:<session> لكل اجتماع، بحيث تحتفظ أسئلة المتابعة بسياق الاجتماع مع وراثة سياسة الوكيل العادية. عندما يستدعي وكيل google_meet في وضع الوكيل، تتفرع جلسة المستشار من النص المفرغ الحالي للمستدعي قبل الإجابة عن كلام المشارك؛ وتبقى جلسة Meet منفصلة كي لا تعدّل متابعات الاجتماع نص المستدعي مباشرةً. يتحكم realtime.toolPolicy في تشغيل الاستشارة: يُحدد نطاق مفتاح جلسة الاستشارة لكل جلسة Meet، لذا تعيد استدعاءات الاستشارة اللاحقة استخدام سياق الاستشارة السابق أثناء الاجتماع نفسه. فرض تحقق منطوق من الجاهزية بعد انضمام Chrome بالكامل:
اختبار دخاني كامل للانضمام والتحدث:

قائمة التحقق للاختبار المباشر

قبل تسليم اجتماع إلى وكيل غير خاضع للإشراف:
حالة Chrome-node المتوقعة:
  • googlemeet setup كلها خضراء، وتتضمن chrome-node-connected عندما تكون Chrome-node وسيلة النقل الافتراضية أو تكون Node مثبتة.
  • يعرض nodes status الـ Node المحددة متصلة، وتعلن عن كل من googlemeet.chrome وbrowser.proxy.
  • تنضم علامة تبويب Meet، ويعيد test-speech حالة Chrome مع inCall: true.
بالنسبة إلى مضيف Chrome بعيد مثل جهاز macOS افتراضي على Parallels، يكون أقصر تحقق آمن بعد تحديث Gateway أو الجهاز الافتراضي:
يثبت ذلك أن Plugin الخاص بـ Gateway محمّل، وأن Node الجهاز الافتراضي متصلة بالرمز الحالي، وأن جسر صوت Meet متاح قبل أن يفتح الوكيل علامة تبويب اجتماع حقيقية. لإجراء اختبار دخاني لـ Twilio، استخدم اجتماعًا يوفّر تفاصيل الاتصال الهاتفي:
حالة Twilio المتوقعة:
  • googlemeet setup يتضمن فحوصات twilio-voice-call-plugin وtwilio-voice-call-credentials وtwilio-voice-call-webhook خضراء.
  • voicecall متاح في CLI بعد إعادة تحميل Gateway.
  • تتضمن الجلسة المُعادة transport: "twilio" وtwilio.voiceCallId.
  • يعرض openclaw logs --follow تقديم TwiML الخاص بـ DTMF قبل TwiML الفوري، ثم جسرًا فوريًا مع وضع التحية الأولية في قائمة الانتظار.
  • ينهي googlemeet leave <sessionId> المكالمة الصوتية المفوَّضة.

استكشاف الأخطاء وإصلاحها

يتعذر على الوكيل رؤية أداة Google Meet

تأكد من تمكين Plugin وأعد تحميل Gateway؛ فالوكيل قيد التشغيل لا يرى سوى أدوات Plugin التي سجلتها عملية Gateway الحالية:
على مضيفي Gateway من غير macOS، يظل google_meet ظاهرًا، لكن إجراءات الرد الصوتي في Chrome المحلي تُحظر قبل وصولها إلى جسر الصوت. استخدم mode: "transcribe" أو الاتصال الهاتفي عبر Twilio أو مضيف chrome-node يعمل بنظام macOS بدلًا من مسار وكيل Chrome المحلي الافتراضي.

لا توجد عقدة متصلة تدعم Google Meet

على مضيف العقدة:
على مضيف Gateway:
يجب أن تكون العقدة متصلة وأن تُدرج googlemeet.chrome بالإضافة إلى browser.proxy؛ ويجب أن يسمح إعداد Gateway بكليهما:
إذا فشل googlemeet setup في chrome-node-connected، أو أبلغ سجل Gateway عن gateway token mismatch، فأعد تثبيت العقدة أو تشغيلها باستخدام رمز Gateway الحالي:
ثم أعد تحميل خدمة العقدة وشغّل مجددًا:

يفتح المتصفح لكن يتعذر على الوكيل الانضمام

شغّل googlemeet test-listen لعمليات الانضمام للمراقبة فقط أو googlemeet test-speech لعمليات الانضمام الفورية، ثم افحص حالة Chrome المُعادة. إذا أبلغ أي منهما عن manualActionRequired: true، فاعرض manualActionMessage للمشغّل وتوقف عن إعادة المحاولة حتى يكتمل إجراء المتصفح. الإجراءات اليدوية الشائعة: تسجيل الدخول إلى ملف Chrome الشخصي؛ قبول الضيف من حساب مضيف Meet؛ منح Chrome أذونات الميكروفون/الكاميرا عند ظهور المطالبة الأصلية؛ إغلاق مربع حوار أذونات Meet العالق أو إصلاحه. لا تُبلغ عن «عدم تسجيل الدخول» لمجرد أن Meet يسأل «Do you want people to hear you in the meeting?»؛ فهذه شاشة Meet البينية لاختيار الصوت. ينقر OpenClaw على Use microphone عبر أتمتة المتصفح عندما تكون متاحة، ويواصل انتظار حالة الاجتماع الفعلية؛ أما عند الرجوع إلى المتصفح للإنشاء فقط، فقد ينقر على Continue without microphone بدلًا من ذلك، لأن إنشاء عنوان URL لا يحتاج إلى مسار الصوت الفوري.

فشل إنشاء الاجتماع

يستخدم googlemeet create واجهة Meet API المسماة spaces.create عند إعداد OAuth، وإلا فيستخدم متصفح عقدة Chrome المثبّتة. تأكد مما يلي:
  • الإنشاء عبر API: وجود oauth.clientId وoauth.refreshToken (أو متغيرات البيئة OPENCLAW_GOOGLE_MEET_* المطابقة)، وأن رمز التحديث أُنشئ بعد إضافة دعم الإنشاء؛ قد تفتقر الرموز الأقدم إلى meetings.space.created، لذا أعد تشغيل openclaw googlemeet auth login --json.
  • الرجوع إلى المتصفح: يشير defaultTransport: "chrome-node" وchromeNode.node إلى عقدة متصلة تحتوي على browser.proxy وgooglemeet.chrome؛ ويكون ملف OpenClaw الشخصي في Chrome على تلك العقدة مسجل الدخول وقادرًا على فتح https://meet.google.com/new.
  • إعادات محاولة الرجوع إلى المتصفح: أعد استخدام علامة تبويب موجودة لـ .../new أو مطالبة حساب Google قبل فتح علامة تبويب جديدة؛ أعد محاولة استدعاء الأداة بدلًا من فتح علامة تبويب أخرى يدويًا.
  • إجراء يدوي: إذا أعادت الأداة manualActionRequired: true، فاستخدم browser.nodeId وbrowser.targetId وbrowserUrl وmanualActionMessage لإرشاد المشغّل؛ ولا تُعد المحاولة في حلقة.
  • شاشة اختيار الصوت البينية: إذا عرض Meet السؤال «Do you want people to hear you in the meeting?»، فاترك علامة التبويب مفتوحة. ينبغي أن ينقر OpenClaw على Use microphone أو Continue without microphone (للإنشاء فقط)، وأن يواصل انتظار عنوان URL المُنشأ؛ وإذا تعذر عليه ذلك، فينبغي أن يذكر الخطأ meet-audio-choice-required، لا google-login-required.

ينضم الوكيل لكنه لا يتحدث

استخدم mode: "agent" لمسار STT -> وكيل OpenClaw -> TTS، وmode: "bidi" للرجوع المباشر إلى الصوت الفوري. لا يبدأ mode: "transcribe" أي جسر رد صوتي عن قصد. لتصحيح أخطاء المراقبة فقط، شغّل openclaw googlemeet status --json <session-id> بعد تحدث المشاركين وتحقق من captioning وtranscriptLines وlastCaptionText. إذا كانت قيمة inCall صحيحة لكن ظل transcriptLines مساويًا لـ 0، فقد تكون تسميات Meet التوضيحية معطلة، أو لم يتحدث أحد منذ تثبيت المراقب، أو تغيرت واجهة Meet، أو لا تتوفر التسميات التوضيحية المباشرة للغة الاجتماع/الحساب. يتحقق googlemeet test-speech دائمًا من المسار الفوري ويُبلغ عما إذا لوحظت بايتات خرج الجسر لذلك الاستدعاء. إذا كانت قيمة speechOutputVerified خطأ وكانت speechOutputTimedOut صحيحة، فربما قبل موفر الخدمة الفورية الكلام، لكن OpenClaw لم يرَ بايتات خرج جديدة تصل إلى جسر صوت Chrome. تحقق أيضًا مما يلي: توفر مفتاح لموفر خدمة فورية (OPENAI_API_KEY أو GEMINI_API_KEY) على مضيف Gateway؛ وظهور BlackHole 2ch على مضيف Chrome؛ ووجود sox هناك؛ وتوجيه ميكروفون/مكبر صوت Meet عبر مسار الصوت الافتراضي (ينبغي أن يعرض doctor القيمة meet output routed: yes لعمليات الانضمام الفورية عبر Chrome المحلي). يطبع googlemeet doctor [session-id] الجلسة والعقدة وحالة المكالمة وسبب الإجراء اليدوي واتصال موفر الخدمة الفورية وrealtimeReady ونشاط إدخال/إخراج الصوت والطوابع الزمنية لآخر صوت وعدادات البايتات وعنوان URL للمتصفح. استخدم googlemeet status [session-id] --json للحصول على JSON الخام، وgooglemeet doctor --oauth (أضف --meeting أو --create-space) للتحقق من تحديث OAuth دون كشف الرموز. إذا انتهت مهلة وكيل وكانت علامة تبويب Meet مفتوحة بالفعل، فافحصها دون فتح علامة أخرى:
إجراء الأداة المكافئ هو recover_current_tab: فهو يركز على علامة تبويب Meet موجودة ويفحصها للنقل المحدد (التحكم المحلي في المتصفح لـ chrome، والعقدة المعدّة لـ chrome-node) دون فتح علامة تبويب أو جلسة جديدة، ويُبلغ عن العائق الحالي (تسجيل الدخول، القبول، الأذونات، حالة اختيار الصوت). يتواصل أمر CLI مع Gateway المعدّ، الذي يجب أن يكون قيد التشغيل؛ ويتطلب chrome-node أيضًا اتصال العقدة.

فشل فحوصات إعداد Twilio

يفشل twilio-voice-call-plugin عندما لا يكون voice-call مسموحًا أو مُمكّنًا: أضفه إلى plugins.allow، ومكّن plugins.entries.voice-call، ثم أعد تحميل Gateway. يفشل twilio-voice-call-credentials عندما تفتقد الواجهة الخلفية لـ Twilio معرّف SID للحساب أو رمز المصادقة أو رقم المتصل:
يفشل twilio-voice-call-webhook عندما لا يتوفر لـ voice-call كشف Webhook عام، أو عندما يشير publicUrl إلى مساحة شبكة استرجاعية/خاصة. لا تستخدم 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 أو fd00::/8 بوصفها publicUrl؛ فلا يمكن لاستدعاءات شركة الاتصالات الراجعة الوصول إليها. عيّن plugins.entries.voice-call.config.publicUrl إلى عنوان URL عام، أو أعد نفقًا/كشفًا عبر Tailscale:
للتطوير المحلي، استخدم نفقًا أو كشفًا عبر Tailscale بدلًا من عنوان URL لمضيف خاص:
أعد تشغيل Gateway أو تحميله، ثم:
يقتصر voicecall smoke افتراضيًا على التحقق من الجاهزية. نفّذ تشغيلًا تجريبيًا لرقم محدد:
لا تضف --yes إلا لوضع مكالمة صادرة فعلية عن قصد:

تبدأ مكالمة Twilio لكنها لا تدخل الاجتماع أبدًا

تأكد من أن حدث Meet يعرض تفاصيل الاتصال الهاتفي، ومرّر رقم الاتصال الدقيق مع رقم PIN أو تسلسل DTMF مخصص:
استخدم w في البداية أو فواصل في --dtmf-sequence لإضافة توقف مؤقت قبل رقم PIN. إذا أُنشئت المكالمة لكن قائمة حضور Meet لا تعرض المشارك المتصل هاتفيًا:
  • openclaw googlemeet doctor <session-id>: تأكد من معرّف مكالمة Twilio المفوَّضة، وما إذا وُضع DTMF في قائمة الانتظار، وما إذا طُلبت التحية التمهيدية.
  • openclaw voicecall status --call-id <id>: تأكد من أن المكالمة لا تزال نشطة.
  • openclaw voicecall tail: تأكد من وصول Webhook الخاصة بـ Twilio إلى Gateway.
  • openclaw logs --follow: ابحث عن تسلسل Twilio الخاص بـ Meet: يفوّض Google Meet عملية الانضمام، ويخزن Voice Call ويقدم TwiML الخاص بـ DTMF قبل الاتصال، ثم يقدم Voice Call‏ TwiML الفوري لمكالمة Twilio، وبعد ذلك يطلب Google Meet الكلام التمهيدي باستخدام voicecall.speak.
  • أعد تشغيل openclaw googlemeet setup --transport twilio؛ يلزم نجاح فحص الإعداد، لكنه لا يثبت صحة تسلسل رقم PIN للاجتماع.
  • تأكد من أن رقم الاتصال الهاتفي ينتمي إلى دعوة Meet والمنطقة نفسيهما اللتين ينتمي إليهما رقم PIN.
  • زِد voiceCall.dtmfDelayMs عن القيمة الافتراضية البالغة 12 ثانية إذا كان Meet يجيب ببطء أو إذا ظل نص المكالمة يعرض مطالبة رقم PIN بعد إرسال DTMF قبل الاتصال.
  • إذا انضم المشارك لكنك لم تسمع التحية، فتحقق من openclaw logs --follow بحثًا عن طلب voicecall.speak اللاحق لـ DTMF، وعن تشغيل TTS عبر دفق الوسائط أو الرجوع إلى <Say> في Twilio. إذا ظل النص يعرض «enter the meeting PIN»، فهذا يعني أن الطرف الهاتفي لم ينضم إلى غرفة Meet بعد، ولذلك لن يسمع المشاركون الكلام.
إذا لم تصل Webhook، فصحح أخطاء Plugin ‏Voice Call أولًا: يجب أن يتمكن الموفر من الوصول إلى plugins.entries.voice-call.config.publicUrl أو النفق المعدّ. راجع استكشاف أخطاء المكالمات الصوتية وإصلاحها.

ملاحظات

واجهة الوسائط الرسمية لـ Google Meet موجهة نحو الاستقبال، لذا لا يزال التحدث داخل مكالمة يتطلب مسار مشارك. يُبقي هذا Plugin ذلك الحد واضحًا: يتولى Chrome المشاركة عبر المتصفح وتوجيه الصوت المحلي؛ ويتولى Twilio المشاركة عبر الاتصال الهاتفي. تحتاج أوضاع الرد الصوتي في Chrome إلى BlackHole 2ch بالإضافة إلى أحد الخيارين التاليين:
  • chrome.audioInputCommand بالإضافة إلى chrome.audioOutputCommand: يتولى OpenClaw إدارة الجسر ويمرّر الصوت في chrome.audioFormat بين تلك الأوامر والمزوّد المحدد. يستخدم وضع agent النسخ الفوري بالإضافة إلى تحويل النص إلى كلام (TTS) المعتاد؛ بينما يستخدم وضع bidi مزوّد الصوت الفوري. المسار الافتراضي هو PCM16 بتردد 24 kHz مع chrome.audioBufferBytes: 4096؛ ويظل G.711 mu-law بتردد 8 kHz متاحًا لأزواج الأوامر القديمة.
  • chrome.audioBridgeCommand: يتولى أمر جسر خارجي إدارة مسار الصوت المحلي بالكامل، ويجب أن ينتهي بعد تشغيل برنامجه الخفي أو التحقق منه. صالح فقط لـ bidi، لأن وضع agent يحتاج إلى وصول مباشر إلى زوج الأوامر لتحويل النص إلى كلام (TTS).
باستخدام جسر Chrome القائم على زوج الأوامر، يمكن لـ chrome.bargeInInputCommand الاستماع إلى ميكروفون محلي منفصل وإيقاف تشغيل صوت المساعد عندما يبدأ شخص في التحدث، ما يُبقي كلام الشخص متقدمًا على مخرجات المساعد حتى أثناء كبت إدخال الاسترجاع المشترك عبر BlackHole مؤقتًا خلال تشغيل صوت المساعد. ومثل chrome.audioInputCommand/chrome.audioOutputCommand، فهو أمر محلي يهيئه المشغّل: استخدم مسار أمر موثوقًا وصريحًا أو قائمة وسائط، ولا تستخدم مطلقًا برنامجًا نصيًا من موقع غير موثوق. للحصول على صوت مزدوج الاتجاه واضح، وجّه مخرجات Meet وميكروفون Meet عبر جهازين افتراضيين منفصلين أو مخطط أجهزة افتراضية بأسلوب Loopback؛ إذ يمكن لجهاز BlackHole مشترك واحد أن يعيد صدى المشاركين الآخرين إلى المكالمة. يشغّل googlemeet speak جسر الصوت النشط للتحدث العكسي في جلسة Chrome؛ ويوقفه googlemeet leave (وبالنسبة إلى جلسات Twilio المفوّضة عبر Voice Call، ينهي المكالمة الأساسية). استخدم googlemeet end-active-conference لإغلاق مؤتمر Google Meet النشط أيضًا لمساحة تُدار عبر API.

ذو صلة