---
title: "موصل Slack"
description: "دليل تكامل Slack الشامل لإرسال الإشعارات، ومزامنة بيانات القنوات، وتشغيل أتمتة Brevo من أحداث Slack عبر Tajo."
url: https://tajo.io/ar/docs/connectors/custom/slack/
markdown: https://tajo.io/ar/docs/connectors/custom/slack.md
lang: ar-SA
robots: noindex
---

اطلب الوصول المبكر

أدخل اسمك الأول وعنوان بريدك الإلكتروني للعمل. سنرسل إليك رابطًا لتأكيد طلب الوصول إلى Tajo.

# موصل Slack

حالة الموصل: مخطط له لم يُبنَ بعد. لا يشغّل Tajo هذا الموصل اليوم.

| حقل المصدر | حقل الوجهة | قيمة نموذجية |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

اربط مساحة عمل Slack الخاصة بك بـ Brevo عبر Tajo للحصول على إشعارات تسويقية في الوقت الفعلي، وتنبيهات الفريق بشأن أحداث العملاء، وأتمتة سير العمل المُشغَّلة بواسطة تفاعلات Slack.

## نظرة عامة

| الخاصية | القيمة |
| --- | --- |
| **المنصة** | Slack |
| **الفئة** | تكامل مخصص |
| **تعقيد الإعداد** | سهل |
| **تكامل رسمي** | لا |
| **البيانات المُزامَنة** | مستخدمون، قنوات، رسائل، أحداث |
| **عنوان URL الأساسي لـ API** | `https://slack.com/api` |

## الميزات

- **تنبيهات التسويق** - إرسال إشعارات في الوقت الفعلي لأحداث الحملات، والمشتركين الجدد، ومعالم الإيرادات
- **إشعارات أحداث العملاء** - تنبيه الفرق حول إجراءات العملاء عالية القيمة من Brevo
- **محفزات سير العمل** - استخدام تفاعلات Slack (نقرات الأزرار، إرسال النماذج) لتشغيل أتمتة Brevo
- **التوجيه القائم على القنوات** - توجيه الإشعارات إلى قنوات محددة بناءً على نوع الحدث أو شريحة العميل
- **مزامنة المستخدمين** - ربط مستخدمي مساحة عمل Slack بجهات اتصال Brevo للاتصالات الداخلية
- **الرسائل التفاعلية** - إرسال رسائل غنية بالأزرار والإجراءات لسير عمل الفريق
- **الرسائل المجدولة** - جدولة الإشعارات للملخصات التسويقية اليومية/الأسبوعية
- **دعم المحادثات** - تجميع الإشعارات ذات الصلة في محادثات لاتصال منظم

## المتطلبات الأساسية

قبل البدء، تأكد من توفر ما يلي:

1. مساحة عمل Slack مع صلاحيات مسؤول
2. تطبيق Slack مُنشأ على [api.slack.com/apps](https://api.slack.com/apps)
3. رمز Bot مع النطاقات المطلوبة
4. حساب Brevo مع وصول إلى API
5. حساب Tajo

## المصادقة

### رمز Bot (موصى به)

قم بتثبيت تطبيق Slack في مساحة العمل الخاصة بك واستخدم رمز Bot للوصول إلى API.

1. أنشئ التطبيق على [api.slack.com/apps](https://api.slack.com/apps)
2. أضف نطاقات OAuth المطلوبة ضمن “OAuth & Permissions”
3. ثبّت التطبيق في مساحة العمل
4. انسخ رمز Bot User OAuth (`xoxb-...`)

```bash
curl -X POST "https://slack.com/api/chat.postMessage" \
  -H "Authorization: Bearer xoxb-YOUR-BOT-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channel": "C01234567", "text": "Hello from Tajo!"}'
```

### OAuth 2.0

لتوزيع تكامل Slack الخاص بك على مساحات عمل متعددة:

```bash
# Authorization URL
https://slack.com/oauth/v2/authorize?
  client_id={client_id}&
  scope=chat:write,channels:read,users:read&
  redirect_uri={redirect_uri}

# Token exchange
curl -X POST "https://slack.com/api/oauth.v2.access" \
  -d "client_id={client_id}" \
  -d "client_secret={client_secret}" \
  -d "code={auth_code}"
```

#### نطاقات Bot المطلوبة

```
chat:write           # Send messages
channels:read        # List channels
channels:history     # Read channel messages
users:read           # List workspace users
users:read.email     # Read user email addresses
reactions:write      # Add reactions to messages
files:write          # Upload files
```

الوصول إلى البريد الإلكتروني للمستخدم

النطاق `users:read.email` مطلوب لمطابقة مستخدمي Slack مع جهات اتصال Brevo. بدونه، سيقتصر تعيين المستخدمين على أسماء العرض.

## الإعداد

### الإعداد الأساسي

```yaml
connectors:
  slack:
    enabled: true
    bot_token: "${SLACK_BOT_TOKEN}"
    signing_secret: "${SLACK_SIGNING_SECRET}"

    # Notification channels
    channels:
      marketing: "C01234567"
      sales: "C01234568"
      support: "C01234569"
      alerts: "C01234570"

    # Event routing
    notifications:
      new_subscriber:
        channel: marketing
        template: subscriber_alert
      high_value_order:
        channel: sales
        template: order_alert
      support_ticket:
        channel: support
        template: ticket_alert
```

### تعيين الحقول

ربط بيانات مستخدم Slack بسمات جهات اتصال Brevo:

#### التعيينات الافتراضية

| Parameter | Type | Description |
| --- | --- | --- |
| `profile.email` required | string | البريد الإلكتروني للمستخدم (معرّف فريد للمطابقة مع Brevo) |
| `real_name` optional | string | الاسم الكامل، مقسم إلى FIRSTNAME/LASTNAME |
| `profile.phone` optional | string | يُعيَّن إلى سمة SMS |
| `profile.title` optional | string | المسمى الوظيفي |
| `tz` optional | string | المنطقة الزمنية للمستخدم |
| `is_admin` optional | boolean | حالة مسؤول مساحة العمل |
| `team_id` optional | string | معرّف فريق مساحة العمل |
| `status_text` optional | string | الحالة المخصصة للمستخدم |

## طرق API

### المراسلة

| الطريقة | نقطة النهاية | الوصف |
| --- | --- | --- |
| `POST` | `chat.postMessage` | إرسال رسالة إلى قناة |
| `POST` | `chat.update` | تحديث رسالة قائمة |
| `POST` | `chat.delete` | حذف رسالة |
| `POST` | `chat.scheduleMessage` | جدولة رسالة |
| `POST` | `chat.postEphemeral` | إرسال رسالة سريعة الزوال لمستخدم |

### القنوات

| الطريقة | نقطة النهاية | الوصف |
| --- | --- | --- |
| `GET` | `conversations.list` | سرد القنوات |
| `GET` | `conversations.info` | الحصول على معلومات القناة |
| `GET` | `conversations.members` | سرد أعضاء القناة |
| `GET` | `conversations.history` | الحصول على رسائل القناة |

### المستخدمون

| الطريقة | نقطة النهاية | الوصف |
| --- | --- | --- |
| `GET` | `users.list` | سرد مستخدمي مساحة العمل |
| `GET` | `users.info` | الحصول على معلومات المستخدم |
| `GET` | `users.lookupByEmail` | البحث عن مستخدم بالبريد الإلكتروني |
| `GET` | `users.conversations` | سرد قنوات المستخدم |

### التفاعلات

| الطريقة | نقطة النهاية | الوصف |
| --- | --- | --- |
| `POST` | `views.open` | فتح طريقة عرض مشروطة |
| `POST` | `views.update` | تحديث طريقة عرض مشروطة |
| `POST` | `reactions.add` | إضافة تفاعل emoji |

## الأحداث

### إشعارات Brevo إلى Slack

| الحدث | المحفز | إجراء Slack |
| --- | --- | --- |
| `new_subscriber` | تم إنشاء جهة اتصال في Brevo | النشر في #marketing |
| `campaign_sent` | تم إرسال حملة بريد إلكتروني | نشر ملخص في #marketing |
| `order_placed` | تم اكتشاف طلب عالي القيمة | النشر في #sales مع التفاصيل |
| `cart_abandoned` | تم التخلي عن السلة لمدة 30 دقيقة | النشر في #sales للمتابعة |
| `ticket_created` | تم فتح تذكرة دعم | النشر في #support |
| `unsubscribed` | ألغى جهة اتصال الاشتراك | نشر تنبيه في #marketing |

### محفزات Slack إلى Brevo

| حدث Slack | المحفز | إجراء Brevo |
| --- | --- | --- |
| `message_action` | اختصار رسالة مخصص | إضافة جهة اتصال إلى قائمة أو تشغيل أتمتة |
| `block_actions` | نقرة زر في رسالة | تحديث سمة جهة اتصال أو إرسال بريد إلكتروني |
| `view_submission` | إرسال نموذج مشروط | إنشاء جهة اتصال أو تشغيل سير عمل |

## أمثلة على الكود

### تهيئة الموصل

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Slack
await tajo.connectors.connect('slack', {
  botToken: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET
});
```

### إرسال إشعارات التسويق

```javascript
// إرسال إشعار عند وضع طلب عالي القيمة
await tajo.slack.notify({
  channel: 'sales',
  event: 'order_placed',
  data: {
    customerEmail: 'customer@example.com',
    orderValue: '$1,250.00',
    products: ['Premium Widget', 'Pro Service'],
    isFirstOrder: true
  },
  template: {
    blocks: [
      {
        type: 'header',
        text: { type: 'plain_text', text: 'New High-Value Order' }
      },
      {
        type: 'section',
        fields: [
          { type: 'mrkdwn', text: '*Customer:*\ncustomer@example.com' },
          { type: 'mrkdwn', text: '*Amount:*\n$1,250.00' }
        ]
      },
      {
        type: 'actions',
        elements: [
          {
            type: 'button',
            text: { type: 'plain_text', text: 'View in Brevo' },
            url: 'https://app.brevo.com/contacts'
          }
        ]
      }
    ]
  }
});
```

### التعامل مع تفاعلات Slack

```javascript
import crypto from 'crypto';

app.post('/slack/interactions', async (req, res) => {
  // التحقق من توقيع طلب Slack
  const timestamp = req.headers['x-slack-request-timestamp'];
  const signature = req.headers['x-slack-signature'];
  const sigBasestring = `v0:${timestamp}:${req.rawBody}`;
  const mySignature = 'v0=' + crypto
    .createHmac('sha256', process.env.SLACK_SIGNING_SECRET)
    .update(sigBasestring)
    .digest('hex');

  if (signature !== mySignature) {
    return res.status(401).send('Unauthorized');
  }

  const payload = JSON.parse(req.body.payload);

  // التعامل مع إجراءات الزر
  if (payload.type === 'block_actions') {
    await tajo.connectors.handleWebhook('slack', {
      type: 'interaction',
      action: payload.actions[0].action_id,
      userId: payload.user.id,
      payload
    });
  }

  res.status(200).send();
});
```

## حدود المعدل

تستخدم حدود معدل Slack API نظامًا متدرجًا:

| الفئة | الحد | الطرق الشائعة |
| --- | --- | --- |
| الفئة 1 | طلب واحد/دقيقة | `chat.delete`، `conversations.kick` |
| الفئة 2 | 20 طلبًا/دقيقة | `conversations.history`، `users.info` |
| الفئة 3 | 50 طلبًا/دقيقة | `conversations.list`، `users.list` |
| الفئة 4 | 100 طلب/دقيقة | `chat.postMessage` |
| خاصة | متغير | `chat.postMessage` إلى نفس القناة: 1/ثانية |

حدود إضافية:

- **Web API**: حد الدفعات مع تقييد قصير المدى
- **Events API**: محاولات تسليم لثلاث مرات
- **Incoming Webhooks**: رسالة واحدة/ثانية لكل عنوان URL webhook
- **Block Kit**: 50 كتلة كحد أقصى لكل رسالة

معدل النشر في القناة

يقتصر النشر في نفس القناة على حوالي رسالة واحدة في الثانية. قم بتجميع الإشعارات أو استخدم المحادثات لتجنب تقييد المعدل.

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

### المشاكل الشائعة

| المشكلة | السبب | الحل |
| --- | --- | --- |
| `not_authed` | رمز Bot غير صالح | أعد تثبيت التطبيق وانسخ رمز Bot جديد |
| `channel_not_found` | Bot ليس في القناة | ادعُ Bot إلى القناة المستهدفة |
| `missing_scope` | النطاق المطلوب غير مُمنوح | أضف النطاق وأعد تثبيت التطبيق |
| الحدث لم يُستلم | اشتراك الحدث غير مضبوط | اضبط عنوان URL لاشتراكات الأحداث |
| انتهاء مهلة التفاعل | استجابة > 3 ثوان | استجب بـ 200 فورًا، ثم عالج بشكل غير متزامن |

### وضع التصحيح

تفعيل التسجيل المفصل:

```yaml
connectors:
  slack:
    debug: true
    log_level: verbose
    log_events: true
```

### اختبار الاتصال

```bash
tajo connectors test slack
# ✓ Bot token valid
# ✓ Workspace accessible
# ✓ Channels readable
# ✓ Message posting enabled
# ✓ Event subscriptions active
```

## أفضل الممارسات

1. **استخدم Block Kit** - ابنِ رسائل غنية وتفاعلية بإطار عمل Block Kit من Slack
2. **استجب بسرعة** - أقرّ بالتفاعلات في غضون 3 ثوان، عالج بشكل غير متزامن
3. **استخدم محادثات للرسائل ذات الصلة** - جمّع الإشعارات ذات الصلة في محادثات لتقليل الضوضاء
4. **وجّه حسب القناة** - أرسل أنواع أحداث مختلفة إلى قنوات الفرق المناسبة
5. **ضمّن أزرار الإجراءات** - أضف أزرار “عرض في Brevo” للوصول السريع إلى بيانات العملاء
6. **طبّق Unfurling** - أظهر معاينات غنية لروابط Brevo المشتركة في Slack

## الأمان

- **رمز Bot** - رمز وصول مقيّد بنطاق OAuth مع صلاحيات دقيقة
- **توقيع الطلبات** - التحقق من توقيع HMAC SHA-256 للطلبات الواردة
- **OAuth 2.0** - تفويض بمعايير الصناعة للتوزيع متعدد مساحات العمل
- **تشفير TLS** - جميع اتصالات API مشفرة عبر HTTPS
- **تدوير الرموز** - تدوير تلقائي للرموز لأمان معزز

## موارد ذات صلة

- [وثائق Slack API](https://api.slack.com/methods)
- [Slack Block Kit Builder](https://app.slack.com/block-kit-builder)
- [Slack Events API](https://api.slack.com/events-api)
- [موصل Brevo](https://tajo.io/ar/docs/connectors/marketing/brevo)
- [مهارة مزامنة العملاء](https://tajo.io/ar/docs/skills/data-sync/customer-sync)
