تخطَّ إلى المحتوى

إعداد تكامل Slack

يبيّن هذا الدليل كيف توصل Slack بمساحة عمل في Control Center: إما أن تدع Control Center ينشئ التطبيق، وإما أن تبنيه بنفسك.

لأول تشغيل موجّه، انظر اربط Slack بمساحة عملك.

  • دور owner أو admin في مساحة عمل Control Center. توصيل تطبيق دردشة تغيير في إعدادات مساحة العمل
  • إذن بإنشاء التطبيقات وتثبيتها في مساحة عمل Slack
  • لا شيء يبلغه العموم: الاتصال صادر (Socket Mode)، فلا يحتاج الخادم إلى منفذ وارد ولا نفق ولا نطاق
المسار ما تقدّمه ما يفعله Control Center
موجّه رمز وصول تكوين التطبيق (xoxe-…) ينشئ التطبيق بالنطاقات والأحداث وSocket Mode وأمر الشرطة المائلة الصحيحة، ويسلّمك الخطوتين اللتين لا واجهة لـ Slack لهما
إنشاء في Slack لا شيء يفتح Slack بالتكوين نفسه معبّأً مسبقًا، فتختار مساحة عمل وتؤكّد
يدوي رموز التطبيق الجاهز يتحقق منها ويتصل

المسار الموجّه هو الوحيد الذي يُبقي التطبيق أيضًا قابلًا للإدارة من Control Center، وهذا ما يتيح تخصيص بوت الدردشة. يمكن لاحقًا ترقية تطبيق أُنشئ عبر إنشاء في Slack إلى تطبيق مُدار، بلصق رمز وصول تكوين التطبيق في حوار الاتصال.

لا يوجد عمدًا زر «ثبّت تطبيق Slack الخاص بـ Control Center». تثبيت تطبيق Slack موزَّع يقتضي سر عميل مشتركًا (لا PKCE لدى Slack)، وSocket Mode يوزّع أحداث التطبيق عشوائيًا على اتصالاته، فيسلّم تطبيق مشترك واحد رسائل مساحة عملك إلى خوادم أناس آخرين. لذلك تملك كل مساحة عمل تطبيقها، وهذه المسارات الثلاثة عن أقل ما يكلفك ذلك من عمل.

الخيار أ: دع Control Center ينشئ التطبيق

قسم بعنوان “الخيار أ: دع Control Center ينشئ التطبيق”
  1. ولّد زوج رموز تكوين التطبيق من api.slack.com/apps وانسخ رمز التحديث (xoxe-…)
  2. في Control Center، انتقل إلى الإعدادات ← مساحة العمل ← عام ومرّر إلى بطاقة جسور الدردشة
  3. في كتلة Slack، انقر أنشئ التطبيق نيابةً عني
  4. الصق الرمز، وعدّل اسم التطبيق واسم البوت والوصفين وأمر الشرطة المائلة، ثم انقر إنشاء التطبيق
  5. اتبع الخطوتين المتبقيتين اللتين يعرضهما الحوار، وكل منهما رابط إلى Slack:
    • Basic Information → App-Level Tokens: ولّد رمزًا بنطاق connections:write (xapp-…)
    • Install App: ثبّت التطبيق في مساحة العمل وانسخ Bot User OAuth Token (xoxb-…)
  6. انقر لصق بيانات الاعتماد وتابع مع الاتصال

يُدوَّر رمز التكوين عند كل استخدام. يخزّن Control Center القيمة المدوَّرة كلما استخدمه، فلا تلصقه مرة أخرى.

الخيار ب: أنشئه في Slack، معبّأً مسبقًا

قسم بعنوان “الخيار ب: أنشئه في Slack، معبّأً مسبقًا”

التطبيق نفسه، بلا رمز تكوين. يسلّمك Slack شاشة الإنشاء الخاصة به والبيان معبّأً بأكمله.

  1. في Control Center، انتقل إلى الإعدادات ← مساحة العمل ← عام ومرّر إلى بطاقة جسور الدردشة
  2. في كتلة Slack، انقر أنشئ التطبيق نيابةً عني
  3. عدّل اسم التطبيق واسم البوت والوصفين وأمر الشرطة المائلة. هذه تنتقل مع الرابط
  4. انقر إنشاء في Slack. يفتح المتصفح صفحة إنشاء التطبيق في Slack والتكوين معبّأ مسبقًا
  5. اختر مساحة عمل Slack وأكّد. النطاقات والأحداث وSocket Mode وأمر الشرطة المائلة صحيحة أصلًا
  6. عُد إلى Control Center، واتبع الخطوتين المتبقيتين اللتين يعرضهما الحوار:
    • Basic Information → App-Level Tokens: ولّد رمزًا بنطاق connections:write (xapp-…)
    • Install App: ثبّت التطبيق في مساحة العمل وانسخ Bot User OAuth Token (xoxb-…)
  7. انقر لصق بيانات الاعتماد وتابع مع الاتصال

لا يُبلغ Slack عن التطبيق الذي أنشأه، فلا يعرف Control Center معرّف التطبيق، وروابط الخطوة 6 تذهب إلى قائمة تطبيقاتك لا إلى التطبيق نفسه. تخصيص البوت يحتاج رمز وصول تكوين التطبيق.

أنشئ تطبيقًا من api.slack.com/apps، ثم اضبطه كما يلي.

Socket Mode: فعّله واترك كل request URL فارغًا. يرفض Slack بيانًا يطلب Socket Mode وتسليم webhook معًا.

نطاقات رمز البوت (OAuth & Permissions):

app_mentions:read
assistant:write
channels:history
chat:write
commands
groups:history
im:history
users:read
users:read.email

اشتراكات الأحداث (أحداث البوت):

app_home_opened
app_mention
message.channels
message.groups
message.im

message.channels وmessage.groups هما ما يجعل الرد داخل خيط Slack مربوط بالجسر أصلًا يعمل. بدونهما لا تصل إلا الإشارة الأولى.

أمر الشرطة المائلة: /cc (أي اسم يصلح، والجسر يستخدم الأمر الذي استُدعي به آخر مرة).

App Home: فعّل تبويب Messages واتركه قابلًا للكتابة، حتى يستطيع الأعضاء مراسلة البوت برسالة مباشرة.

الرموز: ولّد رمزًا على مستوى التطبيق بنطاق connections:write، ثم ثبّت التطبيق وانسخ رمز وصول OAuth الخاص بمستخدم البوت.

  1. انتقل إلى الإعدادات ← مساحة العمل ← عام ومرّر إلى بطاقة جسور الدردشة
  2. في كتلة Slack، انقر الاتصال بـSlack
  3. املأ الحقول:
الحقل القيمة موضعه في Slack
رمز وصول البوت xoxb-… OAuth & Permissions → Bot User OAuth Token
رمز وصول على مستوى التطبيق xapp-… Basic Information → App-Level Tokens (connections:write)
رمز وصول تكوين التطبيق (اختياري) xoxe-… زوج رموز تكوين التطبيق في api.slack.com/apps

تُفحص بادئة كل قيمة من الجهتين قبل أن يُرسَل شيء، فالقيمة الملصقة في الخانة الخطأ تُرفض بالجملة نفسها في الحالين.

  1. انقر اتصال

يتحقق Control Center من رمز البوت باستدعاء auth.test لدى Slack قبل أن يخزّن شيئًا، فيُبلَّغ إليك الخطأ الإملائي بدل أن يصير مقبسًا لا يعمل بصمت. لا يُثبَت رمز الوصول على مستوى التطبيق إلا بفتح المقبس، فيظهر الخاطئ بعد لحظة كخطأ في الاتصال على الصف نفسه.

بلا رمز تكوين التطبيق الاختياري يعمل الاتصال، ولا يمكنك تعديل البوت من Control Center.

  • يخزّن بيانات الاعتماد في دليل مساحة العمل نفسه، إلى جانب قاعدتها، وللمالك وحده قراءتها. لا تعود أبدًا إلى عميل
  • يفتح اتصال Socket Mode واحدًا لمساحة العمل هذه، ويبدأ استقبال الإشارات وردود خيوط Slack والرسائل المباشرة وأوامر الشرطة المائلة
  • يعيد تسليح كل خيط Slack كان مربوطًا بالجسر من قبل، فإعادة الاتصال تتابع المحادثات القائمة ولا تتركها معلّقة
  • لا يكلف مساحات العمل التي بلا تطبيق دردشة شيئًا: لا مقبس، ولا مؤقتات، ولا حركة

يعرض صف Slack وسم حالة: مباشر، أو جارٍ الاتصال…، أو خطأ في الاتصال (وإلى جانبه خطأ Slack نفسه)، أو غير متصل. للتحقق من الطرف إلى الطرف:

  1. في Slack، ادعُ البوت إلى قناة: /invite @your-bot-name
  2. أشر إليه بطلب
  3. يظهر رد في خيط Slack، وتظهر مساحة مطابقة في Control Center

كل عضو يريد استخدام الجسر يربط حسابه بعد ذلك. انظر ربط حساب Slack.

فوق الكلمات المبثوثة بطاقة مجمّعة واحدة، صف لكل خطوة. الإعداد صف واحد ينتقل عنوانه من Working on it… إلى Cloning … ثم إلى Starting the agent…. يضيف الاستدلال صف Thinking…، وحين تنتهي تلك الخطوة قد تظهر عليها فكرة قصيرة. كل أداة صفها (Read lib/main.dart). يصل الجواب نصًا عاديًا تحت البطاقة. تكتمل البطاقة حين تنتهي الجولة، وتصير خاطئة حين يفشل التشغيل أو يُقاطَع أو يبلغ حد الجولة.

تبدأ البطاقة لحظة قبول البوت للإشارة، عند Working on it…، فلا يصمت خيط Slack بينما التجهيز ما زال جاريًا. أول إشارة لك في قناة Slack تنشئ المحادثة، وهي تستنسخ المستودعات التي يعمل فيها الوكيل، فيقرأ صف الإعداد بعدها Cloning acme/widgets…، ثم Setting up Reviewer…، ثم Starting the agent…، ثم صف Thinking… ما إن يبدأ الوكيل الاستدلال فعلًا. على مستودع كبير يأخذ هذا الإعداد الأول وقتًا، والبطاقة هي كيف تعرف أنه يعمل لا أنه يتجاهلك. الإشارات اللاحقة في خيط Slack نفسه تُفتتح أيضًا بـ Working on it…، ثم تتجاوز خطوات الاستنساخ لأن التجهيز قائم أصلًا.

جدار الاستدلال النصي ومخرجات الأدوات لا يغادران Control Center. الفكرة على صف Thinking… سطر قصير، لا نسخة نصية. عرض في Control Center على البطاقة يفتح المحادثة كاملة في تطبيق الحاسوب. يذهب الرابط إلى خادم Control Center الخاص بك، وهو يسلّم المتصفح إلى التطبيق.

إن لم يحدث شيء حين تنقر، فالخادم الذي أرسل الرسالة لا يبلغه الجهاز الذي نقرت منه (خادم لا يستمع إلا على الاسترجاع المحلي، والنقر من هاتف مثلًا)، أو أن Control Center غير شغّال هناك. الخادم الذي بلا عنوان يمكن بلوغه يرسل بطاقة بلا زر، لا زرًا لا يوصل إلى موضع.

ألصق القيمة الجديدة من جديد في حوار الاتصال وانقر اتصال. الاتصال يستبدل أي اتصال كان قائمًا لمساحة العمل هذه، فيُعاد فتح المقبس ببيانات الاعتماد الجديدة.

يجب أن يحضر الرمزان المطلوبان في كل اتصال. يحتفظ رمز تكوين التطبيق الاختياري بقيمته المخزَّنة إذا تركت خانته فارغة، فتدوير رمز البوت لا يفقدك القدرة على تعديل التطبيق.

انقر قطع الاتصال في صف Slack (للمسؤولين فقط). يُغلق المقبس وتُنسى بيانات الاعتماد.

تبقى روابط المساحات وربط المستخدمين عمدًا: إعادة توصيل التطبيق نفسه تستعيد كل خيط Slack كان مربوطًا بالجسر. وهي صفوف بنطاق مساحة العمل، فحذف مساحة العمل يزيلها على أي حال.

اقرأ الخطأ المعروض إلى جانب الوسم. بيانات الاعتماد المرفوضة (invalid_auth أو not_authed أو token_revoked أو account_inactive) حالة نهائية: يتوقف الجسر عن إعادة المحاولة وينتظر رموزًا جديدة، لأن إعادة محاولة رمز مُلغى بلا نهاية لا تُقابل إلا بحد المعدّل. ألصق الرموز من جديد في حوار الاتصال.

خطأ missing_scope يعني أن التطبيق مثبَّت بنطاقات أقل مما يحتاج الجسر. أضف النطاق الناقص، وأعد تثبيت التطبيق في Slack، ثم أعد الاتصال.

أي عارض عابر (مقبس انقطع، أو عثرة من Slack) يعيد الجسر الاتصال بعده من تلقاء نفسه، بتراجع أسي سقفه 30 ثانية، وتدوير المقبس الروتيني لدى Slack لا يرفع ذلك التراجع.

  • هل البوت في القناة؟ لا يسلّم Slack رسائل القناة إلا إلى التطبيقات الأعضاء. نفّذ /invite @your-bot-name
  • هل أنت مربوط؟ يتلقى العضو غير المربوط ردًا في خيط Slack ذاك يشرح كيف يربط نفسه. انظر ربط حساب Slack
  • هل أنت عضو في مساحة العمل بدور كتابة؟ يُخبَر من دوره viewer أو guest أن دوره للقراءة فقط. لا يبدأ الجسر عملًا نيابة عن شخص لا يستطيع أن ينسب الرسالة إليه
  • هل في مساحة العمل وكلاء؟ بلا وكلاء تُخزَّن الرسالة، ولا أحد يجيبها

يجيب في القناة ويتجاهل الرسائل العادية

قسم بعنوان “يجيب في القناة ويتجاهل الرسائل العادية”

هذا مقصود. خارج الرسالة المباشرة لا يتصرف الجسر إلا على رسالة تشير إلى البوت، أو على رد داخل خيط Slack يملكه أصلًا. ما عدا ذلك حديث أناس آخرين.

تصل الردود رسالة واحدة كبيرة بدل البث

قسم بعنوان “تصل الردود رسالة واحدة كبيرة بدل البث”

يقول الصف «البث المباشر متوقف لتطبيق Slack هذا — تصل الردود كرسالة واحدة.» ردود Slack المتدفقة تحتاج ميزة Agents & AI Apps في خطة مدفوعة. حين يرفضها Slack يتوقف الجسر عن الطلب بقية عمر ذلك الاتصال، وينشر الردود كاملة. لا يضيع شيء، والنسخة النصية الكاملة دائمًا في Control Center.

البث يحتاج أيضًا مرساة خيط في Slack، فالرد الذي لا خيط Slack ينمو فيه يُنشر كاملًا. وتصل بطاقة المهمة في الحالين: على الرد الكامل تُحمَل مع الرسالة نفسها، مكتملة أصلًا.

بطاقات مهام Slack جزء من سطح Agents & AI Apps الجديد نفسه الذي يشمل البث، وSlack لا يرفض إلا وقت الاستدعاء. حين يرفض، يُبقي Control Center الرد ويُسقط البطاقة بقية عمر ذلك الاتصال. جواب بلا سطر حالة أولى من سطر حالة بلا جواب.

«يحتاج Control Center إلى رمز وصول تكوين التطبيق لتعديل البوت»

قسم بعنوان “«يحتاج Control Center إلى رمز وصول تكوين التطبيق لتعديل البوت»”

صف تخصيص البوت معطّل لأن الاتصال بلا رمز وصول تكوين التطبيق. هذا متوقَّع لتطبيق بُني يدويًا أو أُنشئ عبر إنشاء في Slack، فلم يُبلغ Slack مطلقًا Control Center أي تطبيق هو. ولّد زوج رموز تكوين التطبيق من api.slack.com/apps وأعد الاتصال بعد ملء رمز التحديث.

يحد Slack الرسالة الواحدة بـ 40,000 حرف، فيقطع الجسر عند 39,000 ويلحق مؤشرًا إلى Control Center. رد أقصر أولى من رد يرفضه Slack رفضًا باتًا. النص الكامل دائمًا في النسخة النصية للمساحة.