موصل Zendesk
اربط مثيل Zendesk Support الخاص بك مع Brevo عبر Tajo لبيانات دعم عملاء موحدة، وتقسيم قائم على التذاكر، وتقييم الرضا، وأتمتة تسويق مُشغَّلة من الدعم.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Zendesk |
| الفئة | الدعم |
| تعقيد الإعداد | متوسط |
| تكامل رسمي | نعم |
| البيانات المُزامَنة | تذاكر، مستخدمون، مؤسسات، أحداث |
| عنوان URL الأساسي لـ API | https://{subdomain}.zendesk.com/api/v2 |
الميزات
- مزامنة المستخدمين - مزامنة المستخدمين النهائيين والوكلاء في Zendesk مع جهات اتصال Brevo
- تتبع التذاكر - مزامنة بيانات التذاكر للتقسيم التسويقي المدرك للدعم
- تعيين المؤسسات - ربط جهات الاتصال بالمؤسسات لسير عمل B2B
- درجات الرضا - مزامنة بيانات CSAT وNPS مع سمات Brevo
- أحداث التذاكر - تتبع إنشاء التذاكر وحلها وتصعيدها لمحفزات الأتمتة
- تكامل مركز المساعدة - تتبع مشاهدات المقالات وسلوك البحث
- دعم متعدد القنوات - مزامنة البيانات من قنوات البريد الإلكتروني والدردشة والصوت والمراسلة
- الحقول المخصصة - ربط حقول التذاكر والمستخدمين المخصصة في Zendesk بـ Brevo
المتطلبات الأساسية
قبل البدء، تأكد من توفر ما يلي:
- حساب Zendesk Support (Team أو Professional أو Enterprise)
- صلاحيات المسؤول على مثيل Zendesk الخاص بك
- رمز API أو تطبيق OAuth مُعَد
- حساب Brevo مع وصول إلى API
- حساب Tajo
المصادقة
مصادقة رمز API
استخدم مصادقة البريد الإلكتروني/الرمز للإعداد السريع.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"ولِّد رمز API من Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
استخدم OAuth للتكاملات متعددة المثيلات مع وصول مستخدم مُوكَّل.
# Authorization URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writeالنطاقات المطلوبة
read # Read access to all resourceswrite # Write access to all resourcestickets:read # Read tickets (granular)users:read # Read users (granular)organizations:read # Read organizations (granular)الإعداد
الإعداد الأساسي
connectors: zendesk: enabled: true subdomain: "yourcompany" auth: api_token: "${ZENDESK_API_TOKEN}"
# Data sync options sync: users: true tickets: true organizations: true satisfaction_ratings: true
# Brevo list assignment lists: all_customers: 30 active_tickets: 31 satisfied_customers: 32تعيين الحقول
ربط حقول مستخدم Zendesk بسمات جهات اتصال Brevo:
التعيينات الافتراضية
| Parameter | Type | Description |
|---|---|---|
email required | string | عنوان البريد الإلكتروني للمستخدم (معرّف فريد) |
name optional | string | الاسم الكامل، مقسم إلى FIRSTNAME/LASTNAME |
phone optional | string | يُعيَّن إلى سمة SMS لـ WhatsApp/SMS |
organization_id optional | integer | المؤسسة المرتبطة لتعيين B2B |
role optional | string | دور المستخدم (end-user، agent، admin) |
tags optional | array | وسوم المستخدم من Zendesk |
ticket_restriction optional | string | مستوى الوصول إلى التذاكر |
custom_fields optional | object | قيم حقول المستخدم المخصصة |
تعيين الحقول المخصصة
field_mapping: # Standard fields email: email name: FULLNAME phone: SMS
# Support metrics open_tickets: OPEN_TICKETS total_tickets: TOTAL_TICKETS avg_satisfaction: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Organization fields organization.name: COMPANY_NAME organization.tags: COMPANY_TAGS
# Custom fields user_fields.customer_type: CUSTOMER_TYPE user_fields.account_tier: ACCOUNT_TIERنقاط نهاية واجهة البرمجة
Ticketing API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /api/v2/tickets | سرد التذاكر |
POST | /api/v2/tickets | إنشاء تذكرة |
PUT | /api/v2/tickets/{id} | تحديث تذكرة |
GET | /api/v2/tickets/{id} | عرض تذكرة |
GET | /api/v2/search.json?query={query} | البحث في التذاكر |
Users API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /api/v2/users | سرد المستخدمين |
POST | /api/v2/users | إنشاء مستخدم |
PUT | /api/v2/users/{id} | تحديث مستخدم |
GET | /api/v2/users/{id} | عرض مستخدم |
GET | /api/v2/users/search.json?query={query} | البحث في المستخدمين |
Organizations API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /api/v2/organizations | سرد المؤسسات |
POST | /api/v2/organizations | إنشاء مؤسسة |
GET | /api/v2/organizations/{id}/users | سرد أعضاء المؤسسة |
Satisfaction Ratings API
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /api/v2/satisfaction_ratings | سرد تقييمات الرضا |
GET | /api/v2/satisfaction_ratings/{id} | عرض تقييم |
الأحداث
أحداث التذاكر
| الحدث | المحفز | حالة الاستخدام |
|---|---|---|
ticket.created | تم إرسال تذكرة جديدة | إقرار الدعم |
ticket.updated | تغيرت حالة التذكرة | إشعار الحالة |
ticket.solved | تم وضع علامة حل للتذكرة | محفز استبيان CSAT |
ticket.reopened | أُعيد فتح تذكرة مُحلَّة | تنبيه التصعيد |
أحداث المستخدم
| الحدث | المحفز | حالة الاستخدام |
|---|---|---|
user.created | سجّل مستخدم جديد | مرحبًا بك في الدعم |
user.updated | تغير ملف المستخدم | مزامنة السمات |
user.merged | تم دمج المستخدمين | إزالة التكرار |
أحداث الرضا
| الحدث | المحفز | حالة الاستخدام |
|---|---|---|
satisfaction_rating.created | تم إرسال CSAT | معالجة الملاحظات |
satisfaction_rating.bad | تقييم سلبي | توعية للاسترداد |
satisfaction_rating.good | تقييم إيجابي | حملات المناصرة |
أمثلة على الكود
تهيئة الموصل
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Zendeskawait tajo.connectors.connect('zendesk', { subdomain: 'yourcompany', apiToken: process.env.ZENDESK_API_TOKEN});مزامنة المستخدمين والتذاكر
// مزامنة كاملة للمستخدمين وبيانات التذاكرawait tajo.connectors.sync('zendesk', { type: 'full', resources: ['users', 'tickets', 'organizations'], since: '2023-01-01'});
// التحقق من حالة المزامنةconst status = await tajo.connectors.status('zendesk');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// usersSynced: 8400,// ticketsSynced: 34200,// organizationsSynced: 1200// }التعامل مع Zendesk Webhooks
app.post('/webhooks/zendesk', async (req, res) => { const signature = req.get('X-Zendesk-Webhook-Signature');
// التحقق من توقيع webhook if (!verifyZendeskSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('zendesk', { type: req.body.type, ticketId: req.body.ticket_id, userId: req.body.user_id, payload: req.body });
res.status(200).send('OK');});حدود المعدل
تختلف حدود معدل Zendesk حسب الخطة:
| الخطة | حد المعدل | التفاصيل |
|---|---|---|
| Team | 200 طلب/دقيقة | لكل رمز API |
| Professional | 400 طلب/دقيقة | لكل رمز API |
| Enterprise | 700 طلب/دقيقة | لكل رمز API |
| High Volume Add-on | 2,500 طلب/دقيقة | لكل رمز API |
حدود إضافية:
- Search API: 6 طلبات/دقيقة للمجهولين، 100/دقيقة للمصادق عليهم
- التصديرات التزايدية: 10 طلبات/دقيقة
- Batch API: 100 سجل لكل طلب دفعة
- تسليم Webhook: إعادة محاولة تلقائية بالتراجع الأُسّي
ترويسات حد المعدل
راقب ترويسات X-Rate-Limit-Remaining وRetry-After لإدارة استخدام API الخاص بك.
استكشاف الأخطاء وإصلاحها
المشاكل الشائعة
| المشكلة | السبب | الحل |
|---|---|---|
| 401 Unauthorized | رمز API غير صالح | أعد توليد الرمز في Zendesk Admin |
| 403 Forbidden | صلاحيات غير كافية | تحقق من متطلبات دور الوكيل أو المسؤول |
| المستخدم غير مُزامَن | المستخدم وكيل وليس مستخدمًا نهائيًا | صفِّ حسب الدور في إعداد المزامنة |
| Webhook لم يُستلم | المحفز/الهدف غير مُعَد | اضبط هدف webhook في Zendesk Admin |
| البحث يعيد نتائج فارغة | تأخير الفهرسة | انتظر 1-2 دقيقة لتحديث فهرس البحث |
وضع التصحيح
تفعيل التسجيل المفصل:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueاختبار الاتصال
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredأفضل الممارسات
- استخدم التصديرات التزايدية - استخدم Incremental API لمزامنة البيانات على نطاق واسع
- صفِّ المستخدمين النهائيين فقط - استبعد الوكلاء والمسؤولين من مزامنة جهات اتصال Brevo
- زامن بيانات CSAT - استخدم درجات الرضا لتقسيم صحة العملاء
- عيّن المؤسسات - استفد من بيانات المؤسسات للحملات التسويقية B2B
- طبّق إعادة محاولة webhook - تعامل مع الإخفاقات المؤقتة بسلاسة
- استخدم التحميل الجانبي - ضمّن السجلات ذات الصلة في استجابات API لتقليل عدد الطلبات
الأمان
- مصادقة رمز API - وصول قائم على الرموز مرتبط بالبريد الإلكتروني للمسؤول
- OAuth 2.0 - وصول مُوكَّل قائم على الرموز مع ضوابط النطاق
- توقيع Webhook - التحقق من توقيع HMAC لحمولات webhook
- تشفير TLS - جميع اتصالات API مشفرة عبر HTTPS
- قائمة IP المسموح بها - قيّد وصول API حسب نطاق IP