موصل Jira
حالة الموصل: مخطط له لم يُبنَ بعد. لا يشغّل Tajo هذا الموصل اليوم.
رسم توضيحي · بيانات تجريبية
مثال على المزامنة
المصدر
Jira
حالة الموصل: مخطط له
الوجهة
أداتك الأخرى
حالة الموصل: أداة مخصصة
ربط الحقول
| حقل المصدر | حقل الوجهة | قيمة نموذجية |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- الصياغة
- راجع سجلاً واحداً
- اعتمد هذه النسخة
تصف الحالات كل موصل على حدة، ولا تضمن جاهزية هذه المزامنة. حقول توضيحية. راجع المخطط الفعلي والأذونات قبل تشغيل المزامنة.
اربط مثيل Jira Cloud الخاص بك بـ Brevo لتتبع المشاكل التي تواجه العملاء، ورؤية تذاكر الدعم، وإشعارات معالم المشروع عبر Tajo.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Jira Cloud |
| الفئة | مخصص |
| تعقيد الإعداد | متوسط |
| تكامل رسمي | لا |
| البيانات المتزامنة | المشاكل، المشاريع، المستخدمون، الأحداث |
| نوع API | REST API v3 |
| المصادقة | OAuth 2.0 (3LO) / API Token (Basic Auth) |
| عنوان URL الأساسي | https://your-domain.atlassian.net/rest/api/3/ |
الميزات
- مزامنة أحداث المشاكل - إعادة توجيه أحداث إنشاء وتحديث وحل المشاكل إلى جداول زمنية لجهات اتصال Brevo
- تتبع تذاكر العملاء - ربط مشاكل Jira بجهات اتصال Brevo لرؤية الدعم
- تنبيهات معالم المشروع - تشغيل حملات Brevo عند إصدارات النسخ وإتمام السبرنت
- بيانات سعة الفريق - مزامنة مقاييس عبء العمل للوحات تحكم التشغيل
- أحداث تغيير الحالة - تتبع انتقالات سير عمل المشاكل كأحداث Brevo
- مزامنة التعليقات - إعادة توجيه التعليقات التي تواجه العملاء إلى سجلات نشاط Brevo
المتطلبات المسبقة
قبل أن تبدأ، تأكد من توفر ما يلي:
- مثيل Jira Cloud (Jira Software أو Jira Service Management أو Jira Work Management)
- وصول المسؤول لإنشاء تطبيقات OAuth أو توليد رموز API
- بريد حساب Atlassian المرتبط برمز API الخاص بك
- حساب Brevo مع وصول API
- حساب Tajo مع اشتراك نشط
المصادقة
يدعم Jira Cloud عدة طرق للمصادقة.
الخيار 1: OAuth 2.0 (3LO) - موصى به
- اذهب إلى developer.atlassian.com
- انقر على Create > OAuth 2.0 integration
- اضبط عنوان URL للرد:
https://app.tajo.io/callbacks/jira - أضف هذه النطاقات:
read:jira-workread:jira-userwrite:jira-workread:meهيكل عنوان URL لـ API عند استخدام OAuth 2.0:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}الخيار 2: API Token (Basic Auth)
- اذهب إلى id.atlassian.com/manage/api-tokens
- انقر على Create API token
- سمّه “Tajo Integration”
# Basic Auth: email as username, API token as passwordcurl -X GET "https://your-domain.atlassian.net/rest/api/3/myself" \ -H "Accept: application/json"قيود رمز API
رموز API مرتبطة بحسابات مستخدمين فرديين. إذا تم تعطيل المستخدم، سينقطع التكامل. استخدم OAuth 2.0 لعمليات النشر في الإنتاج.
الاتصال بـ Tajo
# Using OAuth 2.0tajo connectors install jira \ --client-id $JIRA_CLIENT_ID \ --client-secret $JIRA_CLIENT_SECRET \ --cloud-id $JIRA_CLOUD_ID
# Using API Tokentajo connectors install jira \ --site-url your-domain.atlassian.net \ --api-token $JIRA_API_TOKENالإعداد
الإعداد الأساسي
connectors: jira: enabled: true site_url: "your-domain.atlassian.net" auth_type: "oauth2" # or "basic"
sync: issues: true projects: true users: true comments: true worklogs: false
projects: - key: "SUPPORT" sync_to_list: 22 - key: "PRODUCT" sync_to_list: 23
issue_types: - Bug - Story - Task - Support Requestربط الحقول
اربط حقول المشاكل والمستخدمين في Jira بسمات Brevo:
field_mapping: # User fields accountId: JIRA_ACCOUNT_ID emailAddress: email displayName: FIRSTNAME
# Issue fields mapped to contact events issue_key: LAST_TICKET_KEY issue_status: LAST_TICKET_STATUS issue_priority: LAST_TICKET_PRIORITY issue_created: LAST_TICKET_DATE resolution: LAST_TICKET_RESOLUTIONنقاط نهاية API
يتكامل Tajo مع نقاط نهاية Jira Cloud REST API v3 التالية:
| نقطة النهاية | الطريقة | الغرض |
|---|---|---|
/rest/api/3/search | POST | البحث في المشاكل باستخدام JQL |
/rest/api/3/issue/{issueIdOrKey} | GET | جلب تفاصيل المشكلة |
/rest/api/3/issue | POST | إنشاء مشكلة |
/rest/api/3/project | GET | عرض جميع المشاريع |
/rest/api/3/project/{projectIdOrKey} | GET | جلب تفاصيل المشروع |
/rest/api/3/user/search | GET | البحث عن المستخدمين |
/rest/api/3/myself | GET | جلب المستخدم الحالي |
/rest/api/3/issue/{issueIdOrKey}/comment | GET | جلب تعليقات المشكلة |
/rest/api/3/webhook | POST | تسجيل webhooks |
/rest/api/3/status | GET | جلب جميع الحالات |
/rest/api/3/priority | GET | جلب جميع الأولويات |
أمثلة البرمجة
تهيئة الموصل
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('jira', { clientId: process.env.JIRA_CLIENT_ID, clientSecret: process.env.JIRA_CLIENT_SECRET, cloudId: process.env.JIRA_CLOUD_ID});مزامنة مشاكل الدعم
// Sync Jira support issues to Brevo contactsawait tajo.connectors.sync('jira', { type: 'incremental', resources: ['issues'], jql: 'project = SUPPORT AND updated >= -24h', batchSize: 50});
const status = await tajo.connectors.status('jira');console.log(status);// {// connected: true,// lastSync: '2024-03-15T12:00:00Z',// issuesTracked: 4560,// projectsMonitored: 3,// usersLinked: 890// }معالجة Webhooks الخاصة بـ Jira
app.post('/webhooks/jira', async (req, res) => { const event = req.body;
await tajo.connectors.handleWebhook('jira', { event: event.webhookEvent, payload: { issueKey: event.issue?.key, issueType: event.issue?.fields?.issuetype?.name, status: event.issue?.fields?.status?.name, reporter: event.issue?.fields?.reporter?.emailAddress, assignee: event.issue?.fields?.assignee?.emailAddress } });
res.status(200).send('OK');});البحث عن المشاكل حسب العميل
// Find all issues reported by a specific customerconst issues = await tajo.connectors.query('jira', { maxResults: 20, fields: ['summary', 'status', 'priority', 'created']});حدود المعدل
يفرض Jira Cloud حدود معدل لضمان استقرار المنصة:
| السياق | حد المعدل |
|---|---|
| REST API | ~100 طلب لكل 10 ثوانٍ لكل مستخدم |
| الطلبات المتزامنة | 10 طلبات طويلة الأمد متزامنة |
| العمليات المجمّعة | تختلف حسب نقطة النهاية |
الترقيم
يستخدم Jira ترقيمًا قائمًا على الإزاحة مع المعاملين startAt و maxResults. حجم الصفحة الافتراضي 50، والحد الأقصى 100. يعالج Tajo الترقيم تلقائيًا.
يُرجع Jira استجابة 429 Too Many Requests عند تجاوز حدود المعدل، مع ترويسة Retry-After تشير إلى وقت إعادة المحاولة.
استكشاف الأخطاء
المشكلات الشائعة
| المشكلة | السبب | الحل |
|---|---|---|
| 401 Unauthorized | رمز غير صالح أو انتهاء OAuth | حدّث رمز OAuth أو أعد توليد رمز API |
| 403 Forbidden | أذونات غير كافية | تحقق من أن المستخدم لديه وصول إلى المشروع المطلوب |
| أخطاء JQL | بناء استعلام غير صالح | تحقق من JQL في بحث المشاكل في Jira أولاً |
| Webhook لا يصل | جدار حماية يحجب | تأكد من أن عنوان webhook متاح عبر الإنترنت |
| حقول مفقودة | الحقل غير موجود في الاستجابة | أضف الحقل إلى معامل fields أو استخدم expand |
وضع التصحيح
connectors: jira: debug: true log_level: verbose log_api_calls: trueاختبار الاتصال
tajo connectors test jira# ✓ API authentication successful# ✓ Project access verified# ✓ Issue search operational# ✓ User lookup available# ✓ Webhook registration activeأفضل الممارسات
- استخدم OAuth 2.0 للإنتاج - يتجنب الاعتماد على حسابات المستخدمين الفرديين
- رشّح باستخدام JQL - زامن فقط المشاكل ذات الصلة لتقليل استدعاءات API
- استخدم webhooks للوقت الفعلي - تجنب الاستطلاع؛ سجّل webhooks لتغييرات المشاكل
- احترم تنسيق ADF - يستخدم Jira v3 تنسيق Atlassian Document Format للحقول الغنية
- اربط المشروع بالقائمة - أنشئ قوائم Brevo منفصلة لكل مشروع Jira
- تعامل مع الترقيم - كرر دائمًا عبر جميع الصفحات للحصول على بيانات كاملة
الأمان
- OAuth 2.0 (3LO) - مصادقة آمنة قائمة على الرموز مع رموز تحديث
- API Token + Basic Auth - بيانات اعتماد مشفرة بـ Base64 عبر HTTPS
- HTTPS فقط - جميع اتصالات API مشفرة عبر TLS 1.2+
- وصول محدد النطاق - نطاقات OAuth تحد من وصول API إلى الموارد المطلوبة
- أمان Atlassian Cloud - بنية تحتية معتمدة SOC 2 Type II
- التخزين المشفر - بيانات الاعتماد مشفرة في حالة السكون في Tajo