جاهز للإنتاج للرسائل المباشرة والقنوات عبر تكاملات تطبيق Slack. الوضع الافتراضي هو Socket Mode؛ كما تُدعَم عناوين URL لطلبات HTTP.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
الإقران
الرسائل المباشرة في Slack تستخدم وضع الإقران افتراضيًا.
أوامر الشرطة المائلة
سلوك الأوامر الأصلي وفهرس الأوامر.
استكشاف أخطاء القنوات وإصلاحها
تشخيصات عبر القنوات ودلائل إصلاح.
اختيار Socket Mode أو عناوين URL لطلبات HTTP
كلا وسيلتي النقل جاهزتان للإنتاج وتحققان تكافؤًا في الميزات للمراسلة، وأوامر الشرطة المائلة، وApp Home، والتفاعل. اختر بناءً على شكل النشر، وليس الميزات.| الاعتبار | Socket Mode (الافتراضي) | عناوين URL لطلبات HTTP |
|---|---|---|
| عنوان URL عام لـ Gateway | غير مطلوب | مطلوب (DNS، TLS، وكيل عكسي أو نفق) |
| الشبكة الصادرة | يجب أن يكون WSS الصادر إلى wss-primary.slack.com قابلًا للوصول | لا يوجد WS صادر؛ HTTPS وارد فقط |
| الرموز المطلوبة | رمز البوت (xoxb-...) + رمز على مستوى التطبيق (xapp-...) مع connections:write | رمز البوت (xoxb-...) + سر التوقيع |
| حاسوب التطوير / خلف جدار ناري | يعمل كما هو | يحتاج إلى نفق عام (ngrok، Cloudflare Tunnel، Tailscale Funnel) أو Gateway مرحلية |
| التوسع الأفقي | جلسة Socket Mode واحدة لكل تطبيق لكل مضيف؛ تحتاج Gateways متعددة إلى تطبيقات Slack منفصلة | معالج POST عديم الحالة؛ يمكن لنسخ Gateway متعددة مشاركة تطبيق واحد خلف موازن تحميل |
| حسابات متعددة على Gateway واحدة | مدعوم؛ يفتح كل حساب WS خاصًا به | مدعوم؛ يحتاج كل حساب إلى webhookPath فريد (افتراضيًا /slack/events) حتى لا تتصادم التسجيلات |
| نقل أمر الشرطة المائلة | يُسلَّم عبر اتصال WS؛ يتم تجاهل slash_commands[].url | يرسل Slack طلبات POST إلى slash_commands[].url؛ الحقل مطلوب لإرسال الأمر |
| توقيع الطلب | غير مستخدم (المصادقة هي الرمز على مستوى التطبيق) | يوقّع Slack كل طلب؛ يتحقق OpenClaw باستخدام signingSecret |
| التعافي عند انقطاع الاتصال | يعيد Slack SDK الاتصال تلقائيًا؛ تُطبَّق تهيئة نقل مهلة pong الخاصة بالـ Gateway | لا يوجد اتصال مستمر لينقطع؛ تتم إعادة المحاولة لكل طلب من Slack |
اختر Socket Mode للمضيفات ذات Gateway واحدة، وحواسيب التطوير، والشبكات المحلية التي يمكنها الوصول إلى
*.slack.com صادرًا لكنها لا تستطيع قبول HTTPS وارد.اختر عناوين URL لطلبات HTTP عند تشغيل نسخ Gateway متعددة خلف موازن تحميل، أو عندما يكون WSS الصادر محظورًا لكن HTTPS الوارد مسموحًا، أو عندما تنهي بالفعل Webhook الخاصة بـ Slack عند وكيل عكسي.الإعداد السريع
- Socket Mode (الافتراضي)
- عناوين URL لطلبات HTTP
إنشاء تطبيق Slack جديد
افتح api.slack.com/apps ← Create New App ← From a manifest ← حدّد مساحة عملك ← الصق أحد بيانات التعريف أدناه ← Next ← Create.بعد أن ينشئ Slack التطبيق:
Recommended يطابق مجموعة الميزات الكاملة لـ Plugin Slack المضمّن: App Home، وأوامر الشرطة المائلة، والملفات، والتفاعلات، والتثبيتات، والرسائل المباشرة الجماعية، وقراءات الرموز التعبيرية/مجموعات المستخدمين. اختر Minimal عندما تقيّد سياسة مساحة العمل النطاقات — فهو يغطي الرسائل المباشرة، وسجل القنوات/المجموعات، والإشارات، وأوامر الشرطة المائلة، لكنه يستبعد الملفات، والتفاعلات، والتثبيتات، والرسائل المباشرة الجماعية (
mpim:*)، وemoji:read، وusergroups:read. راجع قائمة التحقق من بيان التعريف والنطاق لمعرفة مبررات كل نطاق والخيارات الإضافية مثل أوامر الشرطة المائلة الإضافية.- Basic Information → App-Level Tokens → Generate Token and Scopes: أضف
connections:write، واحفظ، وانسخ قيمةxapp-.... - Install App → Install to Workspace: انسخ رمز OAuth لمستخدم البوت
xoxb-....
ضبط نقل Socket Mode
يضبط OpenClaw مهلة pong لعميل Slack SDK على 15 ثانية افتراضيًا في Socket Mode. لا تتجاوز إعدادات النقل إلا عندما تحتاج إلى ضبط خاص بمساحة العمل أو المضيف:clientPingTimeout هي مدة انتظار pong بعد أن يرسل SDK إشارة ping من العميل؛ وserverPingTimeout هي مدة انتظار إشارات ping من خادم Slack. تظل رسائل التطبيق والأحداث حالة تطبيق، وليست إشارات حيوية للنقل.
قائمة تحقق Manifest والنطاقات
يكون Manifest الأساسي لتطبيق Slack نفسه في Socket Mode وHTTP Request URLs. يختلف فقط قسمsettings (وurl لأمر Slash).
Manifest الأساسي (Socket Mode الافتراضي):
settings بمتغير HTTP وأضف url إلى كل أمر Slash. يلزم URL عام:
إعدادات Manifest إضافية
اعرض ميزات مختلفة توسّع الإعدادات الافتراضية أعلاه. يفعّل Manifest الافتراضي تبويب الصفحة الرئيسية في Slack App Home ويشترك فيapp_home_opened. عندما يفتح عضو في مساحة العمل تبويب الصفحة الرئيسية، ينشر OpenClaw عرضًا افتراضيًا آمنًا للصفحة الرئيسية باستخدام views.publish؛ ولا تُضمّن أي حمولة محادثة أو تكوين خاص. يظل تبويب الرسائل مفعّلًا لرسائل Slack المباشرة.
أوامر Slash الأصلية الاختيارية
أوامر Slash الأصلية الاختيارية
يمكن استخدام عدة أوامر Slash أصلية بدلًا من أمر مكوّن واحد مع بعض التفاصيل:
- استخدم
/agentstatusبدلًا من/statusلأن الأمر/statusمحجوز. - لا يمكن إتاحة أكثر من 25 أمر Slash في الوقت نفسه.
features.slash_commands الحالي لديك بمجموعة فرعية من الأوامر المتاحة:- Socket Mode (افتراضي)
- HTTP Request URLs
نطاقات التأليف الاختيارية (عمليات الكتابة)
نطاقات التأليف الاختيارية (عمليات الكتابة)
أضف نطاق البوت
chat:write.customize إذا كنت تريد أن تستخدم الرسائل الصادرة هوية الوكيل النشط (اسم مستخدم وأيقونة مخصصين) بدلا من هوية تطبيق Slack الافتراضية.إذا كنت تستخدم أيقونة emoji، فإن Slack يتوقع صيغة :emoji_name:.نطاقات رمز المستخدم الاختيارية (عمليات القراءة)
نطاقات رمز المستخدم الاختيارية (عمليات القراءة)
إذا ضبطت
channels.slack.userToken، فإن نطاقات القراءة المعتادة هي:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(إذا كنت تعتمد على قراءات بحث Slack)
نموذج الرموز
botToken+appTokenمطلوبان لوضع Socket Mode.- يتطلب وضع HTTP كلا من
botToken+signingSecret. - تقبل
botTokenوappTokenوsigningSecretوuserTokenسلاسل نصية عادية أو كائنات SecretRef. - تتجاوز رموز الإعدادات بديل env.
- ينطبق بديل env
SLACK_BOT_TOKEN/SLACK_APP_TOKENعلى الحساب الافتراضي فقط. userToken(xoxp-...) خاص بالإعدادات فقط (بلا بديل env) ويكون افتراضيا بسلوك القراءة فقط (userTokenReadOnly: true).
- يتتبع فحص حساب Slack حقول
*Sourceو*Statusلكل اعتماد (botToken,appToken,signingSecret,userToken). - تكون الحالة
availableأوconfigured_unavailableأوmissing. - تعني
configured_unavailableأن الحساب مضبوط عبر SecretRef أو مصدر سر آخر غير مضمن، لكن مسار الأمر/وقت التشغيل الحالي تعذر عليه حل القيمة الفعلية. - في وضع HTTP، يتم تضمين
signingSecretStatus؛ وفي Socket Mode، يكون الزوج المطلوب هوbotTokenStatus+appTokenStatus.
الإجراءات والبوابات
تتحكمchannels.slack.actions.* في إجراءات Slack.
مجموعات الإجراءات المتاحة في أدوات Slack الحالية:
| المجموعة | الافتراضي |
|---|---|
| الرسائل | مفعلة |
| التفاعلات | مفعلة |
| التثبيتات | مفعلة |
| معلومات الأعضاء | مفعلة |
| قائمة emoji | مفعلة |
send وupload-file وdownload-file وread وedit وdelete وpin وunpin وlist-pins وmember-info وemoji-list. يقبل download-file معرفات ملفات Slack المعروضة في عناصر نائبة للملفات الواردة، ويعيد معاينات صور للصور أو بيانات وصفية لملف محلي لأنواع الملفات الأخرى.
التحكم في الوصول والتوجيه
- سياسة الرسائل المباشرة
- سياسة القنوات
- الإشارات ومستخدمي القنوات
تتحكم
channels.slack.dmPolicy في الوصول عبر الرسائل المباشرة. channels.slack.allowFrom هي قائمة السماح القانونية للرسائل المباشرة.pairing(الافتراضي)allowlistopen(يتطلب أن تتضمنchannels.slack.allowFromالقيمة"*")disabled
dm.enabled(الافتراضي true)channels.slack.allowFromdm.allowFrom(قديم)dm.groupEnabled(الرسائل المباشرة الجماعية افتراضيا false)dm.groupChannels(قائمة سماح اختيارية لـ MPIM)
- تنطبق
channels.slack.accounts.default.allowFromعلى الحسابdefaultفقط. - ترث الحسابات المسماة
channels.slack.allowFromعندما لا تضبطallowFromالخاصة بها. - لا ترث الحسابات المسماة
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy وchannels.slack.dm.allowFrom القديمتان تقرآن للتوافق. يرحلهما openclaw doctor --fix إلى dmPolicy وallowFrom عندما يستطيع فعل ذلك دون تغيير الوصول.يستخدم الاقتران في الرسائل المباشرة openclaw pairing approve slack <code>.السلاسل والجلسات ووسوم الرد
- توجه الرسائل المباشرة كـ
direct؛ والقنوات كـchannel؛ وMPIMs كـgroup. - تقبل ارتباطات مسارات Slack معرفات النظراء الخام إضافة إلى صيغ أهداف Slack مثل
channel:C12345678وuser:U12345678و<@U12345678>. - مع
session.dmScope=mainالافتراضي، تطوى رسائل Slack المباشرة إلى الجلسة الرئيسية للوكيل. - جلسات القنوات:
agent:<agentId>:slack:channel:<channelId>. - يمكن لردود السلاسل إنشاء لواحق جلسة السلسلة (
:thread:<threadTs>) عند الاقتضاء. - في القنوات التي يعالج فيها OpenClaw الرسائل ذات المستوى الأعلى دون طلب إشارة صريحة، يوجه
replyToModeغيرoffكل جذر معالج إلىagent:<agentId>:slack:channel:<channelId>:thread:<rootTs>بحيث ترتبط سلسلة Slack المرئية بجلسة OpenClaw واحدة من أول دور. - الافتراضي لـ
channels.slack.thread.historyScopeهوthread؛ والافتراضي لـthread.inheritParentهوfalse. - تتحكم
channels.slack.thread.initialHistoryLimitفي عدد رسائل السلسلة الموجودة التي يتم جلبها عند بدء جلسة سلسلة جديدة (الافتراضي20؛ اضبطها إلى0للتعطيل). channels.slack.thread.requireExplicitMention(الافتراضيfalse): عندما تكونtrue، تكبح الإشارات الضمنية في السلاسل بحيث لا يستجيب البوت إلا لإشارات@botالصريحة داخل السلاسل، حتى عندما يكون البوت قد شارك بالفعل في السلسلة. دون هذا، تتجاوز الردود في سلسلة شارك فيها البوت بوابةrequireMention.
channels.slack.replyToMode:off|first|all|batched(الافتراضيoff)channels.slack.replyToModeByChatType: لكلdirect|group|channel- البديل الاحتياطي القديم للمحادثات المباشرة:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message، اضبط replyBroadcast: true مع action: "send" وthreadId أو replyTo لطلب أن يبث Slack أيضا رد السلسلة إلى القناة الأصل. يطابق هذا علم reply_broadcast في chat.postMessage لدى Slack ويدعم فقط لإرسال النصوص أو Block Kit، لا لرفع الوسائط.
عندما يعمل استدعاء أداة message داخل سلسلة Slack ويستهدف القناة نفسها، يرث OpenClaw عادة سلسلة Slack الحالية وفقا لـ replyToMode. اضبط topLevel: true على action: "send" أو action: "upload-file" لفرض رسالة جديدة في القناة الأصل بدلا من ذلك. تقبل threadId: null كإلغاء اختيار المستوى الأعلى نفسه.
يعطل
replyToMode="off" كل تسلسل الردود في Slack، بما في ذلك وسوم [[reply_to_*]] الصريحة. يختلف هذا عن Telegram، حيث تظل الوسوم الصريحة محترمة في وضع "off". تخفي سلاسل Slack الرسائل من القناة بينما تبقى ردود Telegram مرئية ضمن السطر.تفاعلات الإقرار
يرسلackReaction رمز emoji للإقرار أثناء معالجة OpenClaw لرسالة واردة.
ترتيب الحل:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- بديل emoji لهوية الوكيل (
agents.list[].identity.emoji، وإلا ”👀”)
- يتوقع Slack الرموز المختصرة (مثل
"eyes"). - استخدم
""لتعطيل التفاعل لحساب Slack أو عالميا.
بث النص
تتحكمchannels.slack.streaming في سلوك المعاينة الحية:
off: تعطيل بث المعاينة الحية.partial(الافتراضي): استبدال نص المعاينة بآخر مخرجات جزئية.block: إلحاق تحديثات معاينة مجزأة.progress: عرض نص حالة التقدم أثناء التوليد، ثم إرسال النص النهائي.streaming.preview.toolProgress: عندما تكون معاينة المسودة نشطة، وجه تحديثات الأدوات/التقدم إلى رسالة المعاينة المعدلة نفسها (الافتراضي:true). اضبطها إلىfalseللإبقاء على رسائل الأدوات/التقدم منفصلة.streaming.preview.commandText/streaming.progress.commandText: اضبطها إلىstatusللإبقاء على أسطر تقدم الأدوات مضغوطة مع إخفاء نص الأمر/التنفيذ الخام (الافتراضي:raw).
channels.slack.streaming.nativeTransport في بث النص الأصلي في Slack عندما يكون channels.slack.streaming.mode هو partial (الافتراضي: true).
- يجب أن تكون سلسلة ردود متاحة لكي يظهر بث النص الأصلي وحالة سلسلة مساعد Slack. يظل اختيار السلسلة يتبع
replyToMode. - يمكن لجذور القنوات، ودردشات المجموعات، والرسائل المباشرة ذات المستوى الأعلى الاستمرار في استخدام معاينة المسودة العادية عندما لا يكون البث الأصلي متاحًا أو لا توجد سلسلة ردود.
- تبقى رسائل Slack المباشرة ذات المستوى الأعلى خارج السلسلة افتراضيًا، لذلك لا تعرض معاينة البث/الحالة الأصلية بأسلوب سلاسل Slack؛ وبدلًا من ذلك ينشر OpenClaw معاينة مسودة ويحررها داخل الرسالة المباشرة.
- تعود الوسائط والحمولات غير النصية إلى التسليم العادي.
- تلغي النتائج النهائية للوسائط/الأخطاء تحريرات المعاينة المعلقة؛ أما النتائج النهائية النصية/الكتلية المؤهلة فتُرسل فقط عندما يمكنها تحرير المعاينة في مكانها.
- إذا فشل البث في منتصف الرد، يعود OpenClaw إلى التسليم العادي للحمولات المتبقية.
channels.slack.streamMode(replace | status_final | append) هو اسم مستعار قديم وقت التشغيل لـchannels.slack.streaming.mode.- القيمة المنطقية
channels.slack.streamingهي اسم مستعار قديم وقت التشغيل لـchannels.slack.streaming.modeوchannels.slack.streaming.nativeTransport. channels.slack.nativeStreamingالقديم هو اسم مستعار وقت التشغيل لـchannels.slack.streaming.nativeTransport.- شغّل
openclaw doctor --fixلإعادة كتابة إعدادات بث Slack المحفوظة إلى المفاتيح القياسية.
الرجوع إلى تفاعل الكتابة
يضيفtypingReaction تفاعلًا مؤقتًا إلى رسالة Slack الواردة بينما يعالج OpenClaw ردًا، ثم يزيله عند انتهاء التشغيل. يكون هذا مفيدًا أكثر خارج ردود السلاسل، التي تستخدم مؤشر حالة افتراضيًا “is typing…”.
ترتيب الحل:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- يتوقع Slack رموزًا قصيرة (على سبيل المثال
"hourglass_flowing_sand"). - يكون التفاعل بأفضل جهد، وتُجرى محاولة التنظيف تلقائيًا بعد اكتمال مسار الرد أو الفشل.
الوسائط، والتجزئة، والتسليم
المرفقات الواردة
المرفقات الواردة
تُنزّل مرفقات ملفات Slack من عناوين URL خاصة مستضافة على Slack (تدفق طلب موثّق بالرمز المميز) وتُكتب إلى مخزن الوسائط عند نجاح الجلب وسماح حدود الحجم. تتضمن عناصر الملفات النائبة
fileId الخاص بـ Slack حتى يتمكن الوكلاء من جلب الملف الأصلي باستخدام download-file.تستخدم التنزيلات مهلات خمول وإجمالية محدودة. إذا توقف استرداد ملف Slack أو فشل، يواصل OpenClaw معالجة الرسالة ويعود إلى عنصر الملف النائب.الحد الأقصى لحجم الوارد وقت التشغيل افتراضيًا هو 20MB ما لم يتم تجاوزه بواسطة channels.slack.mediaMaxMb.النصوص والملفات الصادرة
النصوص والملفات الصادرة
- تستخدم أجزاء النص
channels.slack.textChunkLimit(الافتراضي 4000) - يفعّل
channels.slack.chunkMode="newline"التقسيم مع أولوية الفقرات - تستخدم عمليات إرسال الملفات واجهات برمجة تطبيقات الرفع في Slack ويمكن أن تتضمن ردود السلاسل (
thread_ts) - يتبع حد الوسائط الصادرة
channels.slack.mediaMaxMbعند تكوينه؛ وإلا فتستخدم عمليات إرسال القنوات القيم الافتراضية لنوع MIME من مسار الوسائط
أهداف التسليم
أهداف التسليم
الأهداف الصريحة المفضلة:
user:<id>للرسائل المباشرةchannel:<id>للقنوات
الأوامر وسلوك الشرطة المائلة
تظهر أوامر الشرطة المائلة في Slack إما كأمر واحد مكوّن أو أوامر أصلية متعددة. اضبطchannels.slack.slashCommand لتغيير افتراضيات الأوامر:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true أو commands.native: true في التكوينات العامة بدلًا من ذلك.
- وضع الأوامر الأصلية التلقائي متوقف لـ Slack، لذلك لا يفعّل
commands.native: "auto"أوامر Slack الأصلية.
- حتى 5 خيارات: كتل أزرار
- 6-100 خيار: قائمة اختيار ثابتة
- أكثر من 100 خيار: اختيار خارجي مع ترشيح خيارات غير متزامن عندما تكون معالجات خيارات التفاعلية متاحة
- تجاوز حدود Slack: تعود قيم الخيارات المرمزة إلى الأزرار
agent:<agentId>:slack:slash:<userId> وتظل توجه تنفيذ الأوامر إلى جلسة المحادثة الهدف باستخدام CommandTargetSessionKey.
الردود التفاعلية
يمكن لـ Slack عرض عناصر تحكم رد تفاعلية من إنشاء الوكيل، لكن هذه الميزة معطلة افتراضيًا. فعّلها عالميًا:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- هذه واجهة مستخدم خاصة بـ Slack. لا تترجم القنوات الأخرى توجيهات Slack Block Kit إلى أنظمة أزرارها الخاصة.
- قيم رد الاتصال التفاعلية هي رموز مبهمة منشأة بواسطة OpenClaw، وليست قيمًا أولية من إنشاء الوكيل.
- إذا كانت الكتل التفاعلية المنشأة ستتجاوز حدود Slack Block Kit، يعود OpenClaw إلى الرد النصي الأصلي بدلًا من إرسال حمولة كتل غير صالحة.
موافقات Exec في Slack
يمكن أن يعمل Slack كعميل موافقة أصلي مع أزرار وتفاعلات، بدلًا من الرجوع إلى واجهة الويب أو الطرفية.- تستخدم موافقات Exec
channels.slack.execApprovals.*للتوجيه الأصلي إلى الرسائل المباشرة/القنوات. - لا تزال موافقات Plugin قادرة على الحل عبر سطح الأزرار الأصلي نفسه في Slack عندما يصل الطلب أصلًا إلى Slack ويكون نوع معرف الموافقة
plugin:. - لا يزال تفويض الموافقين مطبقًا: يمكن فقط للمستخدمين المحددين كموافقين الموافقة على الطلبات أو رفضها عبر Slack.
interactivity في إعدادات تطبيق Slack، تظهر مطالبات الموافقة كأزرار Block Kit مباشرة في المحادثة.
عند وجود هذه الأزرار، تكون هي تجربة الموافقة الأساسية؛ يجب على OpenClaw
تضمين أمر /approve يدوي فقط عندما تقول نتيجة الأداة إن موافقات الدردشة
غير متاحة أو إن الموافقة اليدوية هي المسار الوحيد.
مسار التكوين:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(اختياري؛ يعود إلىcommands.ownerAllowFromعندما يكون ذلك ممكنًا)channels.slack.execApprovals.target(dm|channel|both، الافتراضي:dm)agentFilter,sessionFilter
enabled غير معيّن أو "auto" ويتم حل
موافق واحد على الأقل. عيّن enabled: false لتعطيل Slack كعميل موافقة أصلي صراحةً.
عيّن enabled: true لفرض تشغيل الموافقات الأصلية عند حل الموافقين.
السلوك الافتراضي دون تكوين صريح لموافقة Exec في Slack:
approvals.exec المشترك منفصل. استخدمه فقط عندما يجب أيضًا
توجيه مطالبات موافقة Exec إلى دردشات أخرى أو أهداف صريحة خارج القناة. تمرير approvals.plugin المشترك
منفصل أيضًا؛ لا تزال أزرار Slack الأصلية قادرة على حل موافقات Plugin عندما تصل تلك الطلبات أصلًا
إلى Slack.
يعمل /approve في الدردشة نفسها أيضًا في قنوات Slack والرسائل المباشرة التي تدعم الأوامر بالفعل. راجع موافقات Exec للاطلاع على نموذج تمرير الموافقات الكامل.
الأحداث والسلوك التشغيلي
- تُحوّل تحريرات/حذوفات الرسائل إلى أحداث نظام.
- تُعالج بثوث السلاسل (“Also send to channel” في ردود السلاسل) كرسائل مستخدم عادية.
- تُحوّل أحداث إضافة/إزالة التفاعلات إلى أحداث نظام.
- تُحوّل أحداث انضمام/مغادرة الأعضاء، وإنشاء/إعادة تسمية القنوات، وإضافة/إزالة التثبيت إلى أحداث نظام.
- يمكن لـ
channel_id_changedترحيل مفاتيح تكوين القناة عند تفعيلconfigWrites. - تُعامل بيانات موضوع/غرض القناة الوصفية كسياق غير موثوق ويمكن حقنها في سياق التوجيه.
- تُرشّح بادئ السلسلة وبذر سياق تاريخ السلسلة الأولي بواسطة قوائم السماح للمرسلين المكوّنة عند الاقتضاء.
- تُصدر إجراءات الكتل وتفاعلات النوافذ أحداث نظام منظمة
Slack interaction: ...مع حقول حمولة غنية:- إجراءات الكتل: القيم المحددة، والتسميات، وقيم المنتقي، وبيانات
workflow_*الوصفية - أحداث
view_submissionوview_closedللنوافذ مع بيانات القناة الوصفية الموجهة ومدخلات النماذج
- إجراءات الكتل: القيم المحددة، والتسميات، وقيم المنتقي، وبيانات
مرجع التكوين
المرجع الأساسي: مرجع التكوين - Slack.حقول Slack عالية الأهمية
حقول Slack عالية الأهمية
- الوضع/المصادقة:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - الوصول إلى الرسائل المباشرة:
dm.enabled,dmPolicy,allowFrom(قديم:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - مفتاح تبديل التوافق:
dangerouslyAllowNameMatching(للطوارئ؛ اتركه متوقفًا ما لم تكن هناك حاجة) - الوصول إلى القنوات:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - السلاسل/التاريخ:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - التسليم:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - المعاينات الموسعة:
unfurlLinks,unfurlMediaللتحكم في معاينة الروابط/الوسائط فيchat.postMessage - العمليات/الميزات:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
استكشاف الأخطاء وإصلاحها
لا توجد ردود في القنوات
لا توجد ردود في القنوات
تحقق، بالترتيب:
groupPolicy- قائمة سماح القنوات (
channels.slack.channels) — يجب أن تكون المفاتيح معرفات قنوات (C12345678)، وليست أسماء (#channel-name). تفشل المفاتيح القائمة على الأسماء بصمت تحتgroupPolicy: "allowlist"لأن توجيه القنوات يعتمد على المعرف أولًا افتراضيًا. للعثور على معرف: انقر بزر الماوس الأيمن على القناة في Slack → Copy link — قيمةC...في نهاية عنوان URL هي معرف القناة. requireMention- قائمة سماح
usersلكل قناة
يتم تجاهل رسائل الرسائل المباشرة
يتم تجاهل رسائل الرسائل المباشرة
تحقق:
channels.slack.dm.enabledchannels.slack.dmPolicy(أو القديمchannels.slack.dm.policy)- موافقات الاقتران / إدخالات قائمة السماح
- أحداث رسائل Slack Assistant المباشرة: السجلات التفصيلية التي تذكر
drop message_changedتعني عادةً أن Slack أرسل حدث سلسلة Assistant محررًا دون مرسل بشري قابل للاسترداد في بيانات الرسالة الوصفية
وضع Socket غير متصل
وضع Socket غير متصل
تحقق من رموز bot + app وتفعيل Socket Mode في إعدادات تطبيق Slack.إذا أظهر
openclaw channels status --probe --json botTokenStatus أو
appTokenStatus: "configured_unavailable"، فهذا يعني أن حساب Slack
مكوّن لكن وقت التشغيل الحالي لم يتمكن من حل القيمة المدعومة بـ SecretRef.وضع HTTP لا يستقبل الأحداث
وضع HTTP لا يستقبل الأحداث
تحقّق من:
- سرّ التوقيع
- مسار webhook
- عناوين URL لطلبات Slack (الأحداث + التفاعلية + أوامر Slash)
webhookPathفريد لكل حساب HTTP
signingSecretStatus: "configured_unavailable" في لقطات
الحساب، فهذا يعني أن حساب HTTP مكوّن، لكن وقت التشغيل الحالي تعذّر عليه
حل سرّ التوقيع المدعوم بـ SecretRef.الأوامر الأصلية/أوامر Slash لا تعمل
الأوامر الأصلية/أوامر Slash لا تعمل
تحقّق مما إذا كنت تقصد:
- وضع الأمر الأصلي (
channels.slack.commands.native: true) مع أوامر Slash مطابقة مسجّلة في Slack - أو وضع أمر Slash واحد (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups وقوائم السماح للقنوات/المستخدمين.مرجع رؤية المرفقات
يمكن لـ Slack إرفاق الوسائط المنزّلة بدورة الوكيل عندما تنجح تنزيلات ملفات Slack وتسمح حدود الحجم. يمكن تمرير ملفات الصور عبر مسار فهم الوسائط أو مباشرة إلى نموذج رد قادر على الرؤية؛ أما الملفات الأخرى فتُحتفظ بها كسياق ملف قابل للتنزيل بدلًا من معاملتها كمدخلات صور.أنواع الوسائط المدعومة
| نوع الوسائط | المصدر | السلوك الحالي | ملاحظات |
|---|---|---|---|
| صور JPEG / PNG / GIF / WebP | عنوان URL لملف Slack | تُنزّل وتُرفق بالدورة للمعالجة القادرة على الرؤية | حدّ لكل ملف: channels.slack.mediaMaxMb (الافتراضي 20 MB) |
| ملفات PDF | عنوان URL لملف Slack | تُنزّل وتُعرض كسياق ملف لأدوات مثل download-file أو pdf | وارد Slack لا يحوّل ملفات PDF تلقائيًا إلى مدخلات رؤية صور |
| ملفات أخرى | عنوان URL لملف Slack | تُنزّل عند الإمكان وتُعرض كسياق ملف | لا تُعامل الملفات الثنائية كمدخلات صور |
| ردود السلاسل | ملفات بادئ السلسلة | يمكن ترطيب ملفات الرسالة الجذرية كسياق عندما لا يحتوي الرد على وسائط مباشرة | تستخدم البوادئ التي تحتوي على ملفات فقط عنصرًا نائبًا للمرفق |
| رسائل متعددة الصور | ملفات Slack متعددة | يُقيّم كل ملف بشكل مستقل | معالجة Slack محددة بثمانية ملفات لكل رسالة |
مسار الوارد
عندما تصل رسالة Slack مع مرفقات ملفات:- ينزّل OpenClaw الملف من عنوان URL الخاص في Slack باستخدام رمز البوت (
xoxb-...). - يُكتب الملف إلى مخزن الوسائط عند النجاح.
- تُضاف مسارات الوسائط المنزّلة وأنواع المحتوى إلى سياق الوارد.
- يمكن لمسارات النماذج/الأدوات القادرة على الصور استخدام مرفقات الصور من ذلك السياق.
- تبقى الملفات غير الصورية متاحة كبيانات وصفية للملفات أو مراجع وسائط للأدوات التي يمكنها التعامل معها.
وراثة مرفقات جذر السلسلة
عندما تصل رسالة في سلسلة (لديها أصلthread_ts):
- إذا لم يكن الرد نفسه يحتوي على وسائط مباشرة وكانت الرسالة الجذرية المضمّنة تحتوي على ملفات، فيمكن لـ Slack ترطيب ملفات الجذر كسياق بادئ السلسلة.
- تكون لمرفقات الرد المباشرة أولوية على مرفقات الرسالة الجذرية.
- تُعرض الرسالة الجذرية التي تحتوي على ملفات فقط من دون نص بعنصر نائب للمرفق حتى يتمكن البديل من تضمين ملفاتها.
التعامل مع المرفقات المتعددة
عندما تحتوي رسالة Slack واحدة على عدة مرفقات ملفات:- يُعالج كل مرفق بشكل مستقل عبر مسار الوسائط.
- تُجمع مراجع الوسائط المنزّلة في سياق الرسالة.
- يتبع ترتيب المعالجة ترتيب ملفات Slack في حمولة الحدث.
- لا يؤدي فشل تنزيل مرفق واحد إلى حظر المرفقات الأخرى.
حدود الحجم والتنزيل والنموذج
- حد الحجم: الافتراضي 20 MB لكل ملف. قابل للتهيئة عبر
channels.slack.mediaMaxMb. - إخفاقات التنزيل: يتم تخطي الملفات التي لا يستطيع Slack تقديمها، وعناوين URL المنتهية، والملفات غير القابلة للوصول، والملفات الزائدة الحجم، واستجابات HTML الخاصة بالمصادقة/تسجيل الدخول في Slack بدلًا من الإبلاغ عنها كتنسيقات غير مدعومة.
- نموذج الرؤية: يستخدم تحليل الصور نموذج الرد النشط عندما يدعم الرؤية، أو نموذج الصور المكوّن في
agents.defaults.imageModel.
حدود معروفة
| السيناريو | السلوك الحالي | الحل البديل |
|---|---|---|
| عنوان URL منتهٍ لملف Slack | يُتخطى الملف؛ لا يظهر خطأ | أعد رفع الملف في Slack |
| نموذج الرؤية غير مكوّن | تُخزن مرفقات الصور كمراجع وسائط، لكنها لا تُحلل كصور | هيّئ agents.defaults.imageModel أو استخدم نموذج رد قادرًا على الرؤية |
| صور كبيرة جدًا (> 20 MB افتراضيًا) | تُتخطى وفق حد الحجم | زِد channels.slack.mediaMaxMb إذا سمح Slack بذلك |
| مرفقات مُعاد توجيهها/مُشاركة | يُتعامل مع النص ووسائط الصور/الملفات المستضافة على Slack على أساس أفضل جهد | أعد مشاركتها مباشرة في سلسلة OpenClaw |
| مرفقات PDF | تُخزن كسياق ملف/وسائط، ولا تُوجّه تلقائيًا عبر رؤية الصور | استخدم download-file لبيانات الملف الوصفية أو أداة pdf لتحليل PDF |
وثائق ذات صلة
- مسار فهم الوسائط
- أداة PDF
- الملحمة: #51349 — تمكين رؤية مرفقات Slack
- اختبارات الانحدار: #51353
- التحقق المباشر: #51354
ذات صلة
الاقتران
إقران مستخدم Slack بـ gateway.
المجموعات
سلوك القنوات والرسائل المباشرة الجماعية.
توجيه القنوات
توجيه الرسائل الواردة إلى الوكلاء.
الأمان
نموذج التهديد والتقوية.
التهيئة
تخطيط التهيئة والأسبقية.
أوامر Slash
كتالوج الأوامر وسلوكها.