موصل Salesforce
موصل Salesforce
اربط Salesforce CRM الخاص بك بـ Brevo عبر Tajo لمزامنة جهات الاتصال على مستوى المؤسسات، وإدارة العملاء المحتملين، وتتبع الفرص، وأتمتة التسويق المدعومة ببيانات CRM الخاصة بك.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Salesforce |
| الفئة | CRM |
| تعقيد الإعداد | متقدم |
| تكامل رسمي | نعم |
| البيانات المتزامنة | جهات الاتصال، العملاء المحتملون، الحسابات، الفرص، الأحداث |
| عنوان API الأساسي | https://yourInstance.salesforce.com/services/data/vXX.0 |
الميزات
- مزامنة ثنائية الاتجاه لجهات الاتصال/العملاء المحتملين - زامن جهات اتصال Salesforce والعملاء المحتملين مع قوائم جهات اتصال Brevo
- تتبع الفرص - اربط مراحل الصفقات والمبالغ للتقسيم القائم على الإيرادات
- التسلسل الهرمي للحساب - زامن حسابات الشركات للتسويق القائم على الحسابات في Brevo
- ربط الكائنات المخصصة - اربط كائنات Salesforce المخصصة بسمات Brevo وأحداثه
- مزامنة أعضاء الحملة - زامن أعضاء حملة Salesforce مع قوائم Brevo
- تتبع النشاط - زامن المهام والأحداث وأنشطة البريد الإلكتروني لتسجيل التفاعل
- البث في الوقت الفعلي - استخدم Salesforce Streaming API للتحديثات الفورية للبيانات
- دعم استعلامات SOQL - صفِّ البيانات المُزامنة باستعلامات SOQL مخصصة
المتطلبات المسبقة
قبل أن تبدأ، تأكد من توفر ما يلي:
- مؤسسة Salesforce (أي إصدار مع وصول API)
- تطبيق متصل مُعدّ في Salesforce Setup
- تفعيل وصول API لملف تعريف مستخدم Salesforce الخاص بك
- حساب Brevo مع وصول API
- حساب Tajo
المصادقة
تدفق خادم الويب OAuth 2.0 (موصى به)
الأفضل لعمليات تكامل الإنتاج مع تفويض المستخدم.
# Step 1: Authorizehttps://login.salesforce.com/services/oauth2/authorize? response_type=code& client_id={consumer_key}& redirect_uri={callback_url}
# Step 2: Exchange code for tokenscurl -X POST https://login.salesforce.com/services/oauth2/token \ -d "grant_type=authorization_code" \ -d "code={auth_code}" \ -d "client_id={consumer_key}" \ -d "client_secret={consumer_secret}" \ -d "redirect_uri={callback_url}"تدفق اسم المستخدم وكلمة المرور
لعمليات التكامل من خادم إلى خادم دون تفاعل المستخدم.
curl -X POST https://login.salesforce.com/services/oauth2/token \ -d "grant_type=password" \ -d "client_id={consumer_key}" \ -d "client_secret={consumer_secret}" \ -d "username={username}" \ -d "password={password}{security_token}"رمز الأمان
يتطلب Salesforce إلحاق رمز الأمان بكلمة المرور لتدفق اسم المستخدم وكلمة المرور. أعد تعيين رمزك من Setup > My Personal Information > Reset My Security Token.
الإعداد
الإعداد الأساسي
connectors: salesforce: enabled: true instance_url: "https://yourorg.my.salesforce.com" api_version: "v59.0" auth: type: oauth2 consumer_key: "${SF_CONSUMER_KEY}" consumer_secret: "${SF_CONSUMER_SECRET}" refresh_token: "${SF_REFRESH_TOKEN}"
# Data sync options sync: contacts: true leads: true accounts: true opportunities: true campaigns: true
# Sync direction direction: salesforce_to_brevo
# Brevo list assignment lists: all_leads: 15 qualified_leads: 16 customers: 17ربط الحقول
اربط حقول Salesforce بسمات جهات اتصال Brevo:
التعيينات الافتراضية
| Parameter | Type | Description |
|---|---|---|
Email required | string | بريد جهة الاتصال/العميل المحتمل (معرف فريد لـ Brevo) |
FirstName optional | string | يُربط بسمة FIRSTNAME في Brevo |
LastName optional | string | يُربط بسمة LASTNAME في Brevo |
Phone optional | string | يُربط بسمة SMS للمراسلة عبر WhatsApp/SMS |
Account.Name optional | string | اسم الحساب/الشركة المرتبطة |
LeadSource optional | string | مصدر اكتساب العميل المحتمل |
StageName optional | string | مرحلة الفرصة لتتبع الصفقة |
OwnerId optional | string | مندوب المبيعات المُعيَّن للتوجيه |
ربط الحقول المخصصة
field_mapping: # Standard fields Email: email FirstName: FIRSTNAME LastName: LASTNAME Phone: SMS
# CRM fields LeadSource: LEAD_SOURCE Lead_Score__c: LEAD_SCORE Account.Name: COMPANY_NAME Account.Industry: INDUSTRY
# Opportunity fields Amount: DEAL_VALUE StageName: DEAL_STAGE CloseDate: EXPECTED_CLOSE_DATE
# Custom fields Preferred_Channel__c: PREFERRED_CHANNEL Customer_Tier__c: VIP_TIERنقاط نهاية API
موارد REST API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | الاستعلام عن جهات الاتصال |
POST | /services/data/vXX.0/sobjects/Contact | إنشاء جهة اتصال |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | تحديث جهة اتصال |
GET | /services/data/vXX.0/sobjects/Lead | الاستعلام عن العملاء المحتملين |
GET | /services/data/vXX.0/sobjects/Account | الاستعلام عن الحسابات |
GET | /services/data/vXX.0/sobjects/Opportunity | الاستعلام عن الفرص |
GET | /services/data/vXX.0/query?q={SOQL} | تنفيذ استعلام SOQL |
POST | /services/data/vXX.0/composite/sobjects | إنشاء/تحديث بالدُفعات |
Bulk API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | إنشاء مهمة استيعاب مجمعة |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | رفع بيانات دفعة |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | التحقق من حالة المهمة |
Streaming API
| نقطة النهاية | الوصف |
|---|---|
/cometd/XX.0 | استطلاع طويل CometD للأحداث الفورية |
| PushTopic | الاشتراك في تغييرات السجلات عبر موضوعات قائمة على SOQL |
| Change Data Capture | بث التغييرات الدقيقة على مستوى الحقل |
| Platform Events | بنية مُقَاذَةٌ بالأحداث المخصصة |
الأحداث
أحداث السجلات (Change Data Capture)
| الحدث | المشغل | حالة الاستخدام |
|---|---|---|
ContactChangeEvent | إنشاء/تحديث/حذف جهة اتصال | مزامنة جهات اتصال في الوقت الفعلي |
LeadChangeEvent | إنشاء/تحديث/تحويل عميل محتمل | تتبع دورة حياة العملاء المحتملين |
OpportunityChangeEvent | تغيير مرحلة الفرصة | أتمتة خط الصفقات |
AccountChangeEvent | تعديل سجل الحساب | مزامنة بيانات الشركة |
Platform Events
| الحدث | المشغل | حالة الاستخدام |
|---|---|---|
Lead_Converted__e | تحويل عميل محتمل إلى جهة اتصال | تنشئة ما بعد التحويل |
Deal_Won__e | فرصة مُغلقة رابحة | تدفق تأهيل العميل |
Deal_Lost__e | فرصة مُغلقة خاسرة | حملات استعادة العملاء |
أمثلة البرمجة
تهيئة الموصل
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Salesforceawait tajo.connectors.connect('salesforce', { instanceUrl: 'https://yourorg.my.salesforce.com', consumerKey: process.env.SF_CONSUMER_KEY, consumerSecret: process.env.SF_CONSUMER_SECRET, refreshToken: process.env.SF_REFRESH_TOKEN});مزامنة جهات الاتصال باستخدام فلتر SOQL
// Sync only qualified leads from Salesforceawait tajo.connectors.sync('salesforce', { type: 'filtered', resources: ['leads'], filter: "SELECT Id, Email, FirstName, LastName, LeadScore__c FROM Lead WHERE Status = 'Qualified' AND Email != null", brevoListId: 16});
// Check sync statusconst status = await tajo.connectors.status('salesforce');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 18400,// leadsSynced: 7200,// opportunitiesSynced: 3100// }البث في الوقت الفعلي
// Subscribe to Salesforce Change Data Captureawait tajo.connectors.stream('salesforce', { channels: [ '/data/ContactChangeEvent', '/data/LeadChangeEvent', '/data/OpportunityChangeEvent' ], handler: async (event) => { console.log(`Change detected: ${event.entity} ${event.changeType}`); // Automatically synced to Brevo by Tajo }});حدود المعدل
تعتمد حدود Salesforce REST API على إصدارك وعدد التراخيص:
| الإصدار | طلبات API لكل 24 ساعة |
|---|---|
| Developer | 15,000 |
| Enterprise | 1,000 لكل ترخيص مستخدم (بحد أدنى 15,000) |
| Unlimited | 5,000 لكل ترخيص مستخدم (بحد أدنى 15,000) |
| Performance | 5,000 لكل ترخيص مستخدم (بحد أدنى 15,000) |
حدود إضافية:
- حد API المتزامن: 25 طلبًا طويل التشغيل
- Bulk API: 15,000 دفعة لكل 24 ساعة
- Streaming API: 2,000 حدث يوميًا (يمكن زيادتها)
- Composite API: 25 طلبًا فرعيًا لكل طلب مركب
مراقبة استخدام API
راقب استخدام API في Salesforce Setup > System Overview. يستخدم Tajo واجهة Bulk API للمزامنات الكبيرة للحفاظ على حدود API.
استكشاف الأخطاء
المشكلات الشائعة
| المشكلة | السبب | الحل |
|---|---|---|
| INVALID_SESSION_ID | انتهت صلاحية الرمز | جدد رمز OAuth تلقائيًا |
| REQUEST_LIMIT_EXCEEDED | تم الوصول إلى حد API اليومي | استخدم Bulk API أو قلل تكرار المزامنة |
| FIELD_INTEGRITY_EXCEPTION | حقل مطلوب مفقود | اربط جميع الحقول المطلوبة في التكوين |
| DUPLICATES_DETECTED | قواعد التكرار نشطة | اضبط تفضيلات معالجة التكرار |
| INSUFFICIENT_ACCESS | أذونات الكائن مفقودة | امنح وصول API في ملف تعريف Salesforce |
وضع التصحيح
فعّل تسجيلًا مفصلاً:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueاختبار الاتصال
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledأفضل الممارسات
- استخدم Bulk API للمزامنات الكبيرة - بدّل إلى Bulk API 2.0 لمجموعات البيانات التي تتجاوز 2,000 سجل
- نفّذ Change Data Capture - استخدم CDC للمزامنة الفورية بدلاً من الاستطلاع
- اربط الحقول الضرورية فقط - قلل استخدام API بمزامنة الحقول المطلوبة فقط
- تعامل مع تحديث الرمز - نفّذ منطق تحديث رمز OAuth التلقائي
- استخدم الطلبات المركبة - ادمج استدعاءات API ذات الصلة لتقليل عدد الطلبات
- اختبر في بيئة التجربة أولاً - استخدم مؤسسة بيئة تجربة Salesforce قبل نشر الإنتاج
الأمان
- OAuth 2.0 - تفويض معياري صناعي مع أنواع منح متعددة
- قيود IP - يدعم Salesforce نطاقات IP لتسجيل الدخول وإعدادات IP الموثوقة
- TLS 1.2+ - جميع اتصالات API مشفرة بحد أدنى TLS 1.2
- أمان على مستوى الحقل - تحكم دقيق في الوصول إلى الحقل لكل ملف تعريف
- إدارة الجلسات - مهلة جلسة قابلة للتكوين وحدود جلسات متزامنة