موصل Airtable
اربط قواعد Airtable الخاصة بك بـ Brevo لمزامنة CRM، وإدارة كتالوج المنتجات، وسير العمل التسويقي الآلي المدعوم بالبيانات المهيكلة عبر Tajo.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Airtable |
| الفئة | مخصص |
| تعقيد الإعداد | سهل |
| تكامل رسمي | لا |
| البيانات المتزامنة | السجلات، الجداول، المستخدمون |
| نوع API | REST API |
| المصادقة | Personal Access Token / OAuth 2.0 |
| عنوان URL الأساسي | https://api.airtable.com/v0/ |
الميزات
- مزامنة جدول إلى قائمة - زامن سجلات جداول Airtable مباشرة إلى قوائم جهات اتصال Brevo
- جسر كتالوج المنتجات - استخدم جداول Airtable ككتالوجات منتجات لتوصيات البريد الإلكتروني
- مزامنة CRM - مزامنة ثنائية الاتجاه بين Airtable CRM وجهات اتصال Brevo
- أحداث إرسال النماذج - أعد توجيه إرسالات نماذج Airtable كأحداث Brevo
- تصفية قائمة على العرض - زامن عروض Airtable محددة إلى قوائم Brevo مستهدفة
- أتمتة Webhook - شغّل حملات Brevo عند تغير سجلات Airtable
المتطلبات المسبقة
قبل أن تبدأ، تأكد من توفر ما يلي:
- حساب Airtable (خطة مجانية أو أعلى)
- Personal Access Token أو تطبيق OAuth مُعدّ
- الوصول إلى القواعد والجداول التي ترغب بمزامنتها
- حساب Brevo مع وصول API
- حساب Tajo مع اشتراك نشط
المصادقة
يدعم Airtable رموز الوصول الشخصية و OAuth 2.0.
الخيار 1: Personal Access Token (موصى به)
- اذهب إلى airtable.com/create/tokens
- انقر على Create new token
- سمّه “Tajo Integration”
- أضف النطاقات:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- أضف الوصول إلى قواعد محددة أو جميع القواعد
- انقر على Create token
الخيار 2: OAuth 2.0
لعمليات التكامل متعددة المستخدمين، استخدم تدفق OAuth 2.0:
- سجّل تكاملك في airtable.com/create/oauth
- اضبط redirect URI:
https://app.tajo.io/callbacks/airtable - اطلب نفس النطاقات المذكورة أعلاه
تحديد نطاق الرمز
يمكن تحديد نطاق Personal Access Tokens لقواعد محددة. للأمان، امنح الوصول فقط للقواعد التي يحتاجها تكاملك بدلاً من اختيار “All current and future bases.”
الاتصال بـ Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENالإعداد
الإعداد الأساسي
connectors: airtable: enabled: true
sync: records: true comments: false
tables: - base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "Active Customers" sync_to_list: 28 - base_id: "appXXXXXXXXXXXXXX" table_name: "Products" sync_as: "catalog"ربط الحقول
اربط حقول Airtable بسمات جهات اتصال Brevo:
field_mapping: # Airtable field -> Brevo attribute Name: FIRSTNAME Email: email Phone: SMS Company: COMPANY Status: LEAD_STATUS Revenue: TOTAL_REVENUE "Last Contact": LAST_CONTACT_DATE Tags: TAGS Notes: NOTES "Created Time": SIGNUP_DATEمزامنة قائمة على العرض
views: - base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "High Value" sync_to_list: 29 filter_by_view: true
- base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "Churned" sync_to_list: 30 filter_by_view: trueنقاط نهاية API
يتكامل Tajo مع نقاط نهاية Airtable Web API التالية:
| نقطة النهاية | الطريقة | الغرض |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | عرض قائمة السجلات في جدول |
/v0/{baseId}/{tableIdOrName} | POST | إنشاء سجلات |
/v0/{baseId}/{tableIdOrName} | PATCH | تحديث سجلات |
/v0/{baseId}/{tableIdOrName} | DELETE | حذف سجلات |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | استرجاع سجل واحد |
/v0/meta/bases | GET | عرض القواعد المتاحة |
/v0/meta/bases/{baseId}/tables | GET | عرض الجداول في قاعدة |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | عرض تعليقات السجل |
/v0/bases/{baseId}/webhooks | POST | إنشاء webhook |
/v0/bases/{baseId}/webhooks | GET | عرض webhooks |
أمثلة البرمجة
تهيئة الموصل
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('airtable', { token: process.env.AIRTABLE_TOKEN});مزامنة الجدول إلى Brevo
// Sync an Airtable table to a Brevo listawait tajo.connectors.sync('airtable', { type: 'full', resources: ['records'], baseId: 'appXXXXXXXXXXXXXX', tableName: 'Customers', view: 'Active Customers', targetList: 28});
const status = await tajo.connectors.status('airtable');console.log(status);// {// connected: true,// lastSync: '2024-03-15T15:00:00Z',// recordsSynced: 2340,// tablesMonitored: 2,// basesConnected: 1// }معالجة Webhooks
// Airtable webhooks notify of changes; fetch details with cursorapp.post('/webhooks/airtable', async (req, res) => { const { base, webhook, timestamp } = req.body;
// Fetch changed records using webhook cursor const changes = await tajo.connectors.getWebhookPayloads('airtable', { baseId: base.id, webhookId: webhook.id, cursor: timestamp });
for (const change of changes) { await tajo.connectors.handleEvent('airtable', { type: change.actionType, payload: change }); }
res.status(200).send('OK');});إنشاء سجل من Brevo
// Create an Airtable record when a Brevo contact convertstajo.events.on('contact.attribute_updated', async (event) => { if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') { await tajo.connectors.create('airtable', { baseId: 'appXXXXXXXXXXXXXX', tableName: 'Customers', fields: { Name: event.contact.name, Email: event.contact.email, Status: 'Customer', 'Converted Date': new Date().toISOString().split('T')[0] } }); }});حدود المعدل
يفرض Airtable حدود معدل لكل قاعدة:
| نوع الحد | القيمة |
|---|---|
| حد معدل API | 5 طلبات في الثانية لكل قاعدة |
| سجلات لكل طلب | 100 سجل كحد أقصى (قائمة)، 10 سجلات كحد أقصى (إنشاء/تحديث) |
| حمولات Webhook | 50 حمولة لكل استدعاء listWebhookPayloads |
| حجم الطلب | الحد الأقصى للحمولة ~2MB |
عمليات الدُفعات
يسمح Airtable بإنشاء أو تحديث ما يصل إلى 10 سجلات لكل طلب. يجمّع Tajo تلقائيًا العمليات الأكبر في طلبات متعددة مع احترام حدود المعدل.
استكشاف الأخطاء
المشكلات الشائعة
| المشكلة | السبب | الحل |
|---|---|---|
| 401 Unauthorized | رمز غير صالح أو منتهي الصلاحية | أعد توليد Personal Access Token |
| 403 Forbidden | الرمز يفتقر إلى وصول القاعدة | أضف القاعدة إلى نطاق رمزك |
| 404 Not Found | معرف قاعدة أو جدول غير صالح | تحقق من معرف القاعدة واسم الجدول |
| 422 Invalid Request | عدم تطابق نوع الحقل | تحقق من أن أنواع حقول Airtable تتطابق مع بياناتك |
| تجاوز حد المعدل | أكثر من 5 طلب/ثانية لكل قاعدة | قلل تكرار المزامنة أو وزع مزامنات القواعد |
وضع التصحيح
connectors: airtable: debug: true log_level: verbose log_api_calls: trueاختبار الاتصال
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableأفضل الممارسات
- حدّد نطاق الرموز لقواعد محددة - لا تمنح الوصول إلى جميع القواعد ما لم يكن ذلك ضروريًا
- استخدم العروض للمزامنة المُصفاة - زامن عروضًا محددة بدلاً من جداول كاملة لتقليل حجم البيانات
- جمّع عمليات السجلات - اجمع عمليات الإنشاء والتحديث في دُفعات من 10
- تعامل مع الترقيم - يُرجع Airtable 100 سجل لكل صفحة؛ كرر باستخدام
offset - استخدم webhooks للوقت الفعلي - سجل webhooks بدلاً من الاستطلاع للتغييرات
- اربط أنواع الحقول بدقة - طابق أنواع حقول Airtable (select، number، date) مع أنواع سمات Brevo
الأمان
- Personal Access Tokens - محددة النطاق لقواعد وعمليات محددة
- OAuth 2.0 - تدفق تفويض آمن مع رموز تحديث
- HTTPS فقط - جميع اتصالات API مشفرة عبر TLS 1.2+
- التحكم في الوصول على مستوى القاعدة - الرموز محددة النطاق للقواعد الفردية
- التخزين المشفر - الرموز مشفرة في حالة السكون في Tajo
- التحقق من HMAC لـ Webhook - تحقق من أصالة إشعار webhook