موصل Slack

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

نظرة عامة

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

الميزات

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

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

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

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

المصادقة

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

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

  1. أنشئ التطبيق على api.slack.com/apps
  2. أضف نطاقات OAuth المطلوبة ضمن “OAuth & Permissions”
  3. ثبّت التطبيق في مساحة العمل
  4. انسخ رمز Bot User OAuth (xoxb-...)
Terminal window
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 الخاص بك على مساحات عمل متعددة:

Terminal window
# 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. بدونه، سيقتصر تعيين المستخدمين على أسماء العرض.

الإعداد

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

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

المراسلة

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

القنوات

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

المستخدمون

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

التفاعلات

الطريقةنقطة النهايةالوصف
POSTviews.openفتح طريقة عرض مشروطة
POSTviews.updateتحديث طريقة عرض مشروطة
POSTreactions.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إرسال نموذج مشروطإنشاء جهة اتصال أو تشغيل سير عمل

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

تهيئة الموصل

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
});

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

// إرسال إشعار عند وضع طلب عالي القيمة
await tajo.slack.notify({
channel: 'sales',
event: 'order_placed',
data: {
customerEmail: '[email protected]',
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:*\n[email protected]' },
{ 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

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
الفئة 220 طلبًا/دقيقةconversations.history، users.info
الفئة 350 طلبًا/دقيقةconversations.list، users.list
الفئة 4100 طلب/دقيقةchat.postMessage
خاصةمتغيرchat.postMessage إلى نفس القناة: 1/ثانية

حدود إضافية:

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

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

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

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

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

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

وضع التصحيح

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

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

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

Terminal window
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
  • تدوير الرموز - تدوير تلقائي للرموز لأمان معزز

موارد ذات صلة

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
مساعد AI

مرحباً! اسألني أي شيء عن الوثائق.