موصل Intercom
اربط مساحة عمل Intercom الخاصة بك مع Brevo عبر Tajo لرسائل عملاء موحدة، وتتبع المحادثات، وأتمتة تسويق مدفوعة بالتفاعل تعمل ببيانات الدعم والمنتج الخاصة بك.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Intercom |
| الفئة | الدعم |
| تعقيد الإعداد | متوسط |
| تكامل رسمي | نعم |
| البيانات المُزامَنة | جهات اتصال، محادثات، شركات، أحداث |
| عنوان URL الأساسي لـ API | https://api.intercom.io |
الميزات
- مزامنة جهات الاتصال - مزامنة ثنائية الاتجاه لمستخدمي وعملاء محتملين من Intercom مع جهات اتصال Brevo
- تتبع المحادثات - مزامنة بيانات المحادثات للتقسيم القائم على الدعم
- تعيين الشركات - ربط جهات الاتصال بالشركات لسير عمل قائم على الحسابات
- السمات المخصصة - ربط سمات Intercom المخصصة بحقول جهات اتصال Brevo
- تتبع الأحداث - مزامنة الأحداث المخصصة وأنشطة المستخدم للاستهداف السلوكي
- مزامنة الوسوم - ربط وسوم Intercom بعضوية قوائم أو سمات Brevo
- بيانات Messenger - تتبع تفاعل المراسلة داخل التطبيق وتفاعلات الدردشة
- تكامل وكيل الذكاء الاصطناعي - مزامنة نتائج محادثات وكلاء الذكاء الاصطناعي مع Brevo
المتطلبات الأساسية
قبل البدء، تأكد من توفر ما يلي:
- مساحة عمل Intercom (خطة Starter أو Pro أو Premium)
- تطبيق Intercom مع رمز الوصول (تطبيق خاص) أو OAuth مُعَد (تطبيق عام)
- حساب Brevo مع وصول إلى API
- حساب Tajo
المصادقة
رمز الوصول (تطبيق خاص)
للتكاملات الخاصة التي تصل إلى بيانات مساحة عملك الخاصة.
- انتقل إلى Developer Hub > Your Apps > Create new app
- اربطه بمساحة عمل Intercom الخاصة بك
- انسخ رمز الوصول
curl https://api.intercom.io/contacts \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -H "Intercom-Version: 2.11"OAuth 2.0 (تطبيق عام)
للتكاملات التي تصل إلى بيانات Intercom لعملاء آخرين.
# Authorization URLhttps://app.intercom.com/oauth?client_id={client_id}&state={state}
# Token exchangecurl -X POST https://api.intercom.io/auth/eagle/token \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"إصدار API
ضمّن دائمًا ترويسة Intercom-Version في طلباتك. يستخدم Tajo إصدار API 2.11 افتراضيًا. راجع سجل تغييرات Intercom للتغييرات الجذرية.
الإعداد
الإعداد الأساسي
connectors: intercom: enabled: true access_token: "${INTERCOM_ACCESS_TOKEN}" api_version: "2.11"
# Data sync options sync: contacts: true conversations: true companies: true events: true tags: true
# Sync direction direction: intercom_to_brevo
# Brevo list assignment lists: all_users: 35 active_conversations: 36 leads: 37تعيين الحقول
ربط بيانات جهات اتصال Intercom بسمات جهات اتصال Brevo:
التعيينات الافتراضية
| Parameter | Type | Description |
|---|---|---|
email required | string | عنوان البريد الإلكتروني لجهة الاتصال (معرّف فريد) |
name optional | string | الاسم الكامل، مقسم إلى FIRSTNAME/LASTNAME |
phone optional | string | يُعيَّن إلى سمة SMS لـ WhatsApp/SMS |
role optional | string | نوع جهة الاتصال: user أو lead |
company.name optional | string | اسم الشركة المرتبطة |
signed_up_at optional | timestamp | تاريخ تسجيل المستخدم |
last_seen_at optional | timestamp | الطابع الزمني للنشاط الأخير |
custom_attributes optional | object | أزواج مفتاح-قيمة للسمات المخصصة |
تعيين السمات المخصصة
field_mapping: # Standard fields email: email name: FULLNAME phone: SMS
# Engagement fields signed_up_at: SIGNUP_DATE last_seen_at: LAST_ACTIVE session_count: SESSION_COUNT unsubscribed_from_emails: UNSUBSCRIBED
# Company fields company.name: COMPANY_NAME company.plan: COMPANY_PLAN company.size: COMPANY_SIZE
# Custom attributes custom_attributes.plan_tier: PLAN_TIER custom_attributes.feature_usage: FEATURE_USAGEنقاط نهاية واجهة البرمجة
Contacts API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /contacts | سرد جميع جهات الاتصال |
POST | /contacts | إنشاء جهة اتصال |
PUT | /contacts/{id} | تحديث جهة اتصال |
GET | /contacts/{id} | استرجاع جهة اتصال |
POST | /contacts/search | البحث في جهات الاتصال |
DELETE | /contacts/{id} | أرشفة جهة اتصال |
Conversations API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /conversations | سرد المحادثات |
GET | /conversations/{id} | استرجاع محادثة |
POST | /conversations | إنشاء محادثة |
POST | /conversations/{id}/reply | الرد على محادثة |
POST | /conversations/{id}/parts | إضافة جزء للمحادثة |
Companies API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /companies | سرد الشركات |
POST | /companies | إنشاء أو تحديث شركة |
GET | /companies/{id} | استرجاع شركة |
GET | /companies/{id}/contacts | سرد جهات اتصال الشركة |
Events API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
POST | /events | إرسال حدث |
GET | /events?type=user&intercom_user_id={id} | سرد أحداث المستخدم |
الأحداث
أحداث المحادثات
| الحدث | المحفز | حالة الاستخدام |
|---|---|---|
conversation.created | بدأت محادثة جديدة | تنبيه تذكرة دعم |
conversation.closed | تم حل المحادثة | محفز استبيان CSAT |
conversation.rating.added | تم إرسال تقييم | تتبع الرضا |
conversation.snoozed | تم تأجيل المحادثة | جدولة المتابعة |
أحداث جهات الاتصال
| الحدث | المحفز | حالة الاستخدام |
|---|---|---|
contact.created | تمت إضافة جهة اتصال جديدة | تسلسل الترحيب |
contact.updated | تغيرت بيانات جهة الاتصال | مزامنة السمات |
contact.deleted | تمت أرشفة جهة الاتصال | تنظيف |
contact.tag.created | تمت إضافة وسم لجهة الاتصال | تحديث الشريحة |
أحداث المستخدم
| الحدث | المحفز | حالة الاستخدام |
|---|---|---|
user.created | سجّل مستخدم جديد | تدفق التأهيل |
user.email.updated | تم تغيير البريد الإلكتروني | دمج جهات الاتصال |
user.unsubscribed | ألغى الاشتراك من الرسائل | تحديث التفضيلات |
أمثلة على الكود
تهيئة الموصل
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Intercomawait tajo.connectors.connect('intercom', { accessToken: process.env.INTERCOM_ACCESS_TOKEN, apiVersion: '2.11'});مزامنة جهات الاتصال والمحادثات
// مزامنة كاملة لجهات الاتصال وبيانات المحادثاتawait tajo.connectors.sync('intercom', { type: 'full', resources: ['contacts', 'conversations', 'companies'], since: '2023-01-01'});
// التحقق من حالة المزامنةconst status = await tajo.connectors.status('intercom');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 14200,// conversationsSynced: 28400,// companiesSynced: 2100// }التعامل مع Intercom Webhooks
import crypto from 'crypto';
app.post('/webhooks/intercom', async (req, res) => { const signature = req.get('X-Hub-Signature'); const expectedSig = 'sha1=' + crypto .createHmac('sha1', process.env.INTERCOM_CLIENT_SECRET) .update(JSON.stringify(req.body)) .digest('hex');
if (signature !== expectedSig) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('intercom', { topic: req.body.topic, data: req.body.data });
res.status(200).send('OK');});حدود المعدل
يطبّق Intercom حدود معدل بناءً على خطتك:
| الخطة | حد المعدل | التفاصيل |
|---|---|---|
| Starter | 20 طلبًا/10 ثوان | لكل تطبيق |
| Pro | 50 طلبًا/10 ثوان | لكل تطبيق |
| Premium | 100 طلب/10 ثوان | لكل تطبيق |
| نقطة نهاية البحث | طلب واحد/ثانية | لكل تطبيق |
| نقطة نهاية Scroll | طلب واحد/دقيقة | لكل تطبيق |
حدود إضافية:
- العمليات المجمّعة: 15 جهة اتصال لكل طلب جماعي
- إرسال الأحداث: 500 حدث/ثانية لكل مساحة عمل
- تسليم Webhook: إعادة محاولة تلقائية لمدة 24 ساعة
- تصدير البيانات: تصدير متزامن واحد
استجابة حد المعدل
يُعيد Intercom 429 Too Many Requests مع ترويسة Retry-After. طبّق التراجع الأُسّي واحترم نافذة إعادة المحاولة.
استكشاف الأخطاء وإصلاحها
المشاكل الشائعة
| المشكلة | السبب | الحل |
|---|---|---|
| 401 Unauthorized | رمز غير صالح أو منتهي | أعد توليد رمز الوصول في Developer Hub |
| جهة الاتصال غير مُزامَنة | حقل البريد الإلكتروني مفقود | قد يفتقر عملاء Intercom المحتملون إلى بريد إلكتروني؛ صفِّ حسب الدور |
| بيانات المحادثة فارغة | التطبيق يفتقر إلى نطاق المحادثات | أعد التفويض بصلاحيات قراءة المحادثات |
| Webhook لم يُستلم | Webhook غير مُسجَّل | اضبط webhooks في إعدادات Developer Hub |
| عدم تطابق إصدار API | تغييرات جذرية في الإصدار الجديد | ثبّت إصدار API بترويسة Intercom-Version |
وضع التصحيح
تفعيل التسجيل المفصل:
connectors: intercom: debug: true log_level: verbose log_webhooks: trueاختبار الاتصال
tajo connectors test intercom# ✓ API connection successful# ✓ Contacts readable# ✓ Conversations readable# ✓ Companies readable# ✓ Webhooks registeredأفضل الممارسات
- ثبّت إصدار API - حدّد دائمًا
Intercom-Versionلتجنب التغييرات الجذرية - استخدم Search API بكفاءة - استخدم عوامل التصفية والتقسيم لتقليل نقل البيانات
- زامن المستخدمين والعملاء المحتملين معًا - التقط القمع الكامل في Brevo
- عيّن وسوم المحادثات - استخدم وسوم المحادثات لشرائح التسويق ما بعد الدعم
- تتبع الأحداث المخصصة - أرسل أحداث المنتج الرئيسية إلى Intercom للاستهداف السلوكي
- تعامل مع دمج جهات الاتصال - طبّق منطق الدمج لجهات الاتصال المكررة
الأمان
- رمز الوصول - مصادقة Bearer token للتطبيقات الخاصة
- OAuth 2.0 - تفويض مُوكَّل للتطبيقات العامة بسر العميل
- التحقق من Webhook - التحقق من توقيع HMAC SHA-1 عبر
X-Hub-Signature - تشفير TLS - جميع اتصالات API مشفرة عبر HTTPS
- ضوابط الوصول إلى البيانات - وصول دقيق للبيانات لكل إعداد تطبيق