موصل Intercom
موصل 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
- ضوابط الوصول إلى البيانات - وصول دقيق للبيانات لكل إعداد تطبيق