منصات المراسلة
iMessage
⚠️ بالنسبة لنشرات iMessage الجديدة، استخدم BlueBubbles. تكامل
imsgقديم وقد يتم إزالته في إصدار مستقبلي.
الحالة: تكامل CLI خارجي قديم. تقوم البوابة بتشغيل imsg rpc والتواصل عبر JSON-RPC على stdio (بدون برنامج خفي/منفذ منفصل).
الإعداد السريع
المتطلبات والأذونات (macOS)
- يجب أن تكون تطبيقات Messages مسجلة الدخول على جهاز Mac الذي يشغل
imsg. - مطلوب وصول القرص الكامل لسياق العملية الذي يشغل OpenClaw/
imsg(الوصول إلى قاعدة بيانات Messages). - مطلوب إذن الأتمتة لإرسال الرسائل عبر Messages.app.
💡 يتم منح الأذونات لكل سياق عملية. إذا كانت البوابة تعمل بدون واجهة مستخدم (LaunchAgent/SSH)، قم بتشغيل أمر تفاعلي لمرة واحدة في نفس سياق العملية لتفعيل المطالبات:
نسخ
imsg chats --limit 1# أوimsg send <handle> "test"
التحكم في الوصول والتوجيه
channels.imessage.dmPolicy تتحكم في الرسائل المباشرة:
pairing(افتراضي)allowlistopen(يتطلب تضمين"*"فيallowFrom)disabled
حقل القائمة المسموح بها: channels.imessage.allowFrom. يمكن أن تكون إدخالات القائمة المسموح بها مقابض أو أهداف دردشة (chat_id:*, chat_guid:*, chat_identifier:*).
channels.imessage.groupPolicy تتحكم في معالجة المجموعات:
allowlist(افتراضي عند التكوين)opendisabled
قائمة المرسلين المسموح لهم في المجموعات: channels.imessage.groupAllowFrom. التراجع في وقت التشغيل: إذا لم يتم تعيين groupAllowFrom، فإن فحوصات مرسل مجموعة iMessage تتراجع إلى allowFrom عند توفرها. ملاحظة وقت التشغيل: إذا كان channels.imessage مفقودًا تمامًا، فإن وقت التشغيل يتراجع إلى groupPolicy="allowlist" ويسجل تحذيرًا (حتى إذا تم تعيين channels.defaults.groupPolicy). التحكم في الإشارات للمجموعات:
- لا تحتوي iMessage على بيانات وصفية أصلية للإشارات
- يستخدم كشف الإشارات أنماط regex (
agents.list[].groupChat.mentionPatterns، تراجعmessages.groupChat.mentionPatterns) - بدون أنماط مكونة، لا يمكن فرض التحكم في الإشارات
يمكن للأوامر التحكمية من المرسلين المصرح لهم تجاوز التحكم في الإشارات في المجموعات.
- تستخدم الرسائل المباشرة التوجيه المباشر؛ المجموعات تستخدم توجيه المجموعة.
- مع الإعداد الافتراضي
session.dmScope=main، تندمج رسائل iMessage المباشرة في الجلسة الرئيسية للوكيل. - جلسات المجموعات معزولة (
agent::imessage:group:<chat_id>). - يتم توجيه الردود مرة أخرى إلى iMessage باستخدام بيانات قناة/هدف الرسالة الأصلية.
سلوك المحادثة الشبيهة بالمجموعة:يمكن أن تصل بعض محادثات iMessage متعددة المشاركين مع is_group=false. إذا تم تكوين chat_id هذا صراحةً تحت channels.imessage.groups، تعامل OpenClaw معه كحركة مرور جماعية (تحكم جماعي + عزل جلسة المجموعة).
أنماط النشر
استخدم Apple ID ومستخدم macOS مخصصين حتى تكون حركة مرور البوت معزولة عن ملف Messages الشخصي الخاص بك.التدفق النموذجي:
- إنشاء/تسجيل دخول مستخدم macOS مخصص.
- تسجيل الدخول إلى Messages باستخدام Apple ID الخاص بالبوت في ذلك المستخدم.
- تثبيت
imsgفي ذلك المستخدم. - إنشاء غلاف SSH حتى يتمكن OpenClaw من تشغيل
imsgفي سياق ذلك المستخدم. - توجيه
channels.imessage.accounts..cliPathو.dbPathإلى ملف تعريف ذلك المستخدم.
قد تتطلب المرة الأولى موافقات واجهة المستخدم الرسومية (الأتمتة + وصول القرص الكامل) في جلسة مستخدم البوت تلك.
الطوبولوجيا الشائعة:
- تعمل البوابة على Linux/VM
- يعمل iMessage +
imsgعلى جهاز Mac في شبكة Tailnet الخاصة بك - يستخدم غلاف
cliPathSSH لتشغيلimsg - يمكّن
remoteHostجلب المرفقات عبر SCP
مثال:
{
channels: {
imessage: {
enabled: true,
cliPath: "~/.openclaw/scripts/imsg-ssh",
remoteHost: "bot@mac-mini.tailnet-1234.ts.net",
includeAttachments: true,
dbPath: "/Users/bot/Library/Messages/chat.db",
},
},
}
#!/usr/bin/env bash
exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"
استخدم مفاتيح SSH حتى يكون كل من SSH و SCP غير تفاعليين. تأكد من أن مفتاح المضيف موثوق به أولاً (على سبيل المثال ssh bot@mac-mini.tailnet-1234.ts.net) حتى يتم ملء known_hosts.
يدعم iMessage تكوينًا لكل حساب تحت channels.imessage.accounts.يمكن لكل حساب تجاوز حقول مثل cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, إعدادات السجل، وقوائم الجذور المسموح بها للمرفقات.
الوسائط، التقسيم، وأهداف التسليم
-
استيراد المرفقات الواردة اختياري:
channels.imessage.includeAttachments -
يمكن جلب مسارات المرفقات البعيدة عبر SCP عند تعيين
remoteHost -
يجب أن تتطابق مسارات المرفقات مع الجذور المسموح بها:
channels.imessage.attachmentRoots(محلي)channels.imessage.remoteAttachmentRoots(وضع SCP البعيد)- نمط الجذر الافتراضي:
/Users/*/Library/Messages/Attachments
-
يستخدم SCP فحصًا صارمًا لمفتاح المضيف (
StrictHostKeyChecking=yes) -
يستخدم حجم الوسائط الصادرة
channels.imessage.mediaMaxMb(افتراضي 16 ميجابايت) -
حد تقسيم النص:
channels.imessage.textChunkLimit(افتراضي 4000) -
وضع التقسيم:
channels.imessage.chunkModelength(افتراضي)newline(تقسيم حسب الفقرات أولاً)
الأهداف الصريحة المفضلة:
chat_id:123(مُوصى به للتوجيه المستقر)chat_guid:...chat_identifier:...
أيضًا مدعومة أهداف المقابض:
imessage:+1555...sms:+1555...user@example.com
imsg chats --limit 20
كتابات التكوين
يسمح iMessage بكتابات التكوين التي يبدأها القناة افتراضيًا (لـ /config set|unset عندما يكون commands.config: true). تعطيل:
{
channels: {
imessage: {
configWrites: false,
},
},
}
استكشاف الأخطاء وإصلاحها
التحقق من صحة الملف الثنائي ودعم RPC:
imsg rpc --help
openclaw channels status --probe
إذا أبلغ الفحص أن RPC غير مدعوم، قم بتحديث imsg.
تحقق من:
channels.imessage.dmPolicychannels.imessage.allowFrom- موافقات الاقتران (
openclaw pairing list imessage)
تحقق من:
channels.imessage.groupPolicychannels.imessage.groupAllowFrom- سلوك الق ائمة المسموح بها
channels.imessage.groups - تكوين نمط الإشارة (
agents.list[].groupChat.mentionPatterns)
تحقق من:
channels.imessage.remoteHostchannels.imessage.remoteAttachmentRoots- مصادقة مفتاح SSH/SCP من مضيف البوابة
- وجود مفتاح المضيف في
~/.ssh/known_hostsعلى مضيف البوابة - قابلية قراءة المسار البعيد على جهاز Mac الذي يشغل Messages
أعد التشغيل في طرفية واجهة مستخدم رسومية تفاعلية في نفس سياق المستخدم/الجلسة ووافق على المطالبات:
imsg chats --limit 1
imsg send <handle> "test"
تأكد من منح وصول القرص الكامل + الأتمتة لسياق العملية التي تشغل OpenClaw/imsg.