Gmail Pub/Sub -> OpenClaw
الهدف: مراقبة Gmail -> دفع Pub/Sub ->gog gmail watch serve -> Webhook لـ OpenClaw.
المسبق
- تثبيت
gcloudوتسجيل الدخول (دليل التثبيت). - تثبيت
gog(gogcli) وتفويضه لحساب Gmail (gogcli.sh). - تفعيل Webhooks في OpenClaw (راجع Webhooks).
- تسجيل الدخول إلى
tailscale(tailscale.com). يعتمد الإعداد المدعوم على Tailscale Funnel كنقطة HTTPS عامة. يمكن أن تعمل خدمات أنفاق أخرى، لكنها يدوية/غير مدعومة وتتطلب توصيلاً يدويًا. حاليًا، Tailscale هو الخيار المدعوم لدينا.
deliver + channel/to (اختياري):
channel + to. وإلا فإن channel: "last"
يستخدم مسار التسليم الأخير (ويعود افتراضيًا إلى WhatsApp).
لفرض نموذج أقل تكلفة لتشغيلات Gmail، عيّن model في التعيين
(provider/model أو الاسم المستعار). إذا فرضت agents.defaults.models، فضمّنه هناك.
لتعيين نموذج افتراضي ومستوى التفكير خصيصًا لـ hooks الخاصة بـ Gmail، أضِف
hooks.gmail.model / hooks.gmail.thinking في التهيئة لديك:
- لا يزال
model/thinkingلكل hook في التعيين يتجاوز هذه القيم الافتراضية. - ترتيب الرجوع:
hooks.gmail.model→agents.defaults.model.fallbacks→ الأساسي (المصادقة/تحديد المعدل/المهلات). - إذا تم تعيين
agents.defaults.models، فيجب أن يكون نموذج Gmail ضمن قائمة السماح. - يتم تغليف محتوى hook الخاص بـ Gmail افتراضيًا بحدود أمان للمحتوى الخارجي.
لتعطيل ذلك (خطير)، عيّن
hooks.gmail.allowUnsafeExternalContent: true.
hooks.mappings أو وحدة تحويل JS/TS
ضمن hooks.transformsDir (راجع Webhooks).
المعالج (موصى به)
استخدم مساعد OpenClaw لربط كل شيء معًا (يثبّت الاعتمادات على macOS عبر brew):- يستخدم Tailscale Funnel كنقطة دفع عامة.
- يكتب تهيئة
hooks.gmailلـopenclaw webhooks gmail run. - يفعّل الإعداد المسبق لـ hook الخاص بـ Gmail (
hooks.presets: ["gmail"]).
tailscale.mode، يقوم OpenClaw تلقائيًا بتعيين
hooks.gmail.serve.path إلى / ويُبقي المسار العام عند
hooks.gmail.tailscale.path (الافتراضي /gmail-pubsub) لأن Tailscale
يزيل بادئة set-path قبل الوكالة.
إذا كنت بحاجة إلى أن يستقبل الخلفية المسار المُسبق، فعيّن
hooks.gmail.tailscale.target (أو --tailscale-target) إلى عنوان URL كامل مثل
http://127.0.0.1:8788/gmail-pubsub وطابق hooks.gmail.serve.path.
هل تريد نقطة نهاية مخصصة؟ هل تريد نقطة نهاية مخصصة؟ هل تريد نقطة نهاية مخصّصة؟ استخدم --push-endpoint <url> أو --tailscale off.
ملاحظة المنصّة: على macOS يقوم المعالج بتثبيت gcloud وgogcli وtailscale
عبر Homebrew؛ وعلى Linux قم بتثبيتها يدويًا أولًا.
التشغيل التلقائي لـ Gateway (موصى به):
- عند تعيين
hooks.enabled=trueوhooks.gmail.account، يبدأ Gatewaygog gmail watch serveعند الإقلاع ويجدد المراقبة تلقائيًا. - عيّن
OPENCLAW_SKIP_GMAIL_WATCHER=1لإلغاء الاشتراك (مفيد إذا كنت تشغّل الخدمة بنفسك). - لا تشغّل الخدمة اليدوية في الوقت نفسه، وإلا ستواجه
listen tcp 127.0.0.1:8788: bind: address already in use.
gog gmail watch serve + تجديد تلقائي):
إعداد لمرة واحدة
- اختر مشروع GCP الذي يملك عميل OAuth المستخدم بواسطة
gog.
- تمكين APIs:
- إنشاء موضوع:
- السماح لدفع Gmail بالنشر:
بدء المراقبة
history_id من المخرجات (لأغراض التصحيح).
تشغيل معالج الدفع
مثال محلي (مصادقة برمز مشترك):- يحمي
--tokenنقطة نهاية الدفع (x-gog-tokenأو?token=). - يشير
--hook-urlإلى/hooks/gmailفي OpenClaw (مُعيَّن؛ تشغيل معزول + ملخص إلى الرئيسي). - يتحكّم
--include-bodyو--max-bytesفي مقتطف النص المُرسل إلى OpenClaw.
openclaw webhooks gmail run التدفق نفسه ويجدد المراقبة تلقائيًا.
كشف المعالج (متقدم، غير مدعوم)
إذا كنت بحاجة إلى نفق غير Tailscale، فقم بتوصيله يدويًا واستخدم عنوان URL العام في اشتراك الدفع (غير مدعوم، دون ضوابط حماية):الاختبار
أرسل رسالة إلى صندوق الوارد المُراقَب:استكشاف الأخطاء وإصلاحها
Invalid topicName: عدم تطابق المشروع (الموضوع ليس في مشروع عميل OAuth).User not authorized: فقدانroles/pubsub.publisherعلى الموضوع.- رسائل فارغة: يوفر دفع Gmail فقط
historyId؛ اجلب البيانات عبرgog gmail history.