Trình Kết Nối Jira
Kết nối Jira Cloud với Brevo qua Tajo để theo dõi trạng thái issues của khách hàng, đồng bộ dữ liệu người dùng và kích hoạt thông báo tự động dựa trên cập nhật ticket.
Tổng Quan
| Thuộc Tính | Giá Trị |
|---|---|
| Nền Tảng | Jira Cloud |
| Danh Mục | Tùy Chỉnh |
| Độ Phức Tạp Thiết Lập | Trung Bình |
| Tích Hợp Chính Thức | Không |
| Dữ Liệu Đồng Bộ | Issues, Projects, Người Dùng, Worklogs |
| Loại API | REST API v3 |
| Xác Thực | API Token (Basic Auth) hoặc OAuth 3LO |
Tính Năng
- Đồng bộ issues - Đồng bộ Jira issues liên quan đến khách hàng sang liên hệ Brevo
- Theo dõi trạng thái - Kích hoạt hành động Brevo khi trạng thái issue thay đổi
- Đồng bộ người dùng - Nhập dữ liệu người dùng Jira sang liên hệ Brevo
- Truy vấn JQL - Sử dụng Jira Query Language để lọc issues theo tiêu chí tùy chỉnh
- Webhook theo thời gian thực - Nhận cập nhật khi issues được tạo hoặc cập nhật
Yêu Cầu
Trước khi bắt đầu, hãy đảm bảo bạn có:
- Instance Jira Cloud (không hỗ trợ Server/Data Center)
- API token từ Atlassian account settings
- Tài khoản Brevo với quyền truy cập API
- Tài khoản Tajo
Xác Thực
API Token (Basic Auth)
curl "https://your-domain.atlassian.net/rest/api/3/issue" \ -H "Authorization: Basic BASE64(email:api_token)" \ -H "Accept: application/json"Tạo API tokens tại https://id.atlassian.com/manage-profile/security/api-tokens.
Giới Hạn API Token
API tokens Jira có quyền bằng tài khoản Atlassian liên quan. Tạo tài khoản dịch vụ chuyên dụng với quyền tối thiểu cần thiết cho tích hợp production.
OAuth 3LO
# Bước 1: Authorization URLhttps://auth.atlassian.com/authorize ?audience=api.atlassian.com &client_id=YOUR_CLIENT_ID &scope=read:jira-work+read:jira-user &redirect_uri=YOUR_CALLBACK_URL &response_type=codeCấu Hình
Thiết Lập Cơ Bản
connectors: jira: enabled: true domain: "your-domain.atlassian.net" email: "${JIRA_EMAIL}" api_token: "${JIRA_API_TOKEN}"
sync: issues: true users: true projects: false
# JQL filter mặc định default_jql: "project in (SUPPORT, SALES) AND updated >= -30d"Ánh Xạ Trường
field_mapping: reporter.emailAddress: email reporter.displayName: FULLNAME summary: JIRA_ISSUE_SUMMARY status.name: JIRA_STATUS priority.name: JIRA_PRIORITY created: JIRA_CREATED_DATE customfield_10001: ACCOUNT_NAMEAPI Endpoints
| Phương Thức | Endpoint | Mô Tả |
|---|---|---|
GET | /rest/api/3/issue/{issueId} | Lấy chi tiết issue |
POST | /rest/api/3/issue/bulk | Tạo nhiều issues |
POST | /rest/api/3/jql/parse | Phân tích và xác thực JQL |
GET | /rest/api/3/search | Tìm kiếm issues bằng JQL |
GET | /rest/api/3/users/search | Tìm kiếm người dùng |
GET | /rest/api/3/project | Liệt kê tất cả projects |
POST | /rest/api/3/webhook | Đăng ký webhook |
Ví Dụ Code
Khởi Tạo Trình Kết Nối
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', { domain: process.env.JIRA_DOMAIN, email: process.env.JIRA_EMAIL, apiToken: process.env.JIRA_API_TOKEN});Truy Vấn Issues Bằng JQL
// Tìm kiếm issues bằng JQLconst issues = await tajo.connectors.query('jira', { jql: 'project = SUPPORT AND status = "In Progress" AND reporter is not EMPTY', fields: ['summary', 'status', 'priority', 'reporter', 'created']});Phân Trang
Jira giới hạn 100 kết quả mỗi trang. Sử dụng startAt và maxResults để phân trang qua tất cả issues. Tajo tự động xử lý phân trang khi đồng bộ.
Giới Hạn Tốc Độ
| Loại | Giới Hạn |
|---|---|
| REST API | 10 yêu cầu/giây (per user) |
| Webhooks | Không giới hạn sự kiện |
| Bulk operations | 50 issues mỗi yêu cầu |
Khắc Phục Sự Cố
| Sự Cố | Nguyên Nhân | Giải Pháp |
|---|---|---|
| 401 Unauthorized | API token không hợp lệ | Xác minh email và token |
| JQL không hợp lệ | Lỗi cú pháp JQL | Kiểm tra JQL trong Jira search trước |
| Issues thiếu | Quyền truy cập project | Đảm bảo tài khoản có quyền Browse Projects |
| Webhook không nhận | URL không thể truy cập | Kiểm tra URL webhook có thể truy cập từ internet |