موصل Jira
اربط مثيل 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