לקוחות הולכים לאיבוד בין טופס המשוב לסטטוס הכרטיס — מנהלים מבזבזים בממוצע 2–3 שעות ביום על העברה ידנית של נתונים מטפסי אינטרנט ל-Jira. כתוצאה מכך, עד 15% מהפניות אובדות, וזמן התגובה גדל ב-40%. התמיכה עובדת "בעיוורון", וההנהלה לא יכולה לראות את העומס האמיתי. המהנדסים שלנו פותרים את הבעיה הזו תוך 3–6 ימים במפתח מלא: אינטגרציה של האתר שלך עם Jira API, כולל יצירת כרטיסים, סנכרון סטטוסים, webhooks ופורטל שירות עצמי ללקוחות. התוצאה — אפס אובדן פניות, אוטומציה של שגרה ושקיפות בכל שלב.
כיצד להתחבר ל-Jira API?
Jira Cloud משתמשת ב-Basic Auth עם API token. ה-token נוצר בהגדרות החשבון — לעולם אל תשתמשו בסיסמה ישירות. עבור Jira Server, משתמשים ב-OAuth או ב-token אישי (PAT). הדוגמה שלהלן מציגה אימות באמצעות ספריית ה-jira של Python:
from jira import JIRA
jira = JIRA(
server='https://your-company.atlassian.net',
basic_auth=('[email protected]', JIRA_API_TOKEN) # API token, не пароль
)ה-API token מעניק גישה רק לפרויקטים הדרושים. שמרו אותו במשתני סביבה, לא בקוד.
| שיטה | התאמה | רמת אבטחה |
|---|---|---|
| Basic Auth + API token | Jira Cloud | בינונית (ניתן לבטל את ה-token) |
| OAuth 2.0 | Jira Cloud ו-Server | גבוהה (הרשאות מוגבלות) |
| Token אישי (PAT) | Jira Server | בינונית (נוח לסקריפטים) |
כיצד ליצור כרטיס מטופס ב-PHP?
תרחיש טיפוסי: משתמש ממלא טופס תמיכה, ונוצר כרטיס Jira בשרת. אנו משתמשים ב-HTTP client של Laravel כדי לשלוח בקשת POST אל from jira import JIRA jira = JIRA( server='https://your-company.atlassian.net', basic_auth=('[email protected]', JIRA_API_TOKEN) # API token, не пароль ) :
class JiraService {
public function createIssue(SupportRequest $data): string {
$resp = Http::withBasicAuth(
config('services.jira.email'),
config('services.jira.token')
)->post(config('services.jira.url') . '/rest/api/3/issue', [
'fields' => [
'project' => ['key' => 'SUPPORT'],
'summary' => "[Web] {$data->subject}",
'description' => [
'type' => 'doc',
'version' => 1,
'content' => [[
'type' => 'paragraph',
'content' => [['type' => 'text', 'text' => $data->message]],
]],
],
'issuetype' => ['name' => 'Support'],
'priority' => ['name' => $data->priority ?? 'Medium'],
'labels' => ['website', 'customer-request'],
'customfield_10014' => $data->customer_email, // Кастомное поле email
],
]);
$issueKey = $resp->json('key'); // SUPPORT-123
// Сохраняем привязку заявки к тикету
SupportTicket::create([
'user_id' => $data->userId,
'jira_key' => $issueKey,
'subject' => $data->subject,
'status' => 'open',
]);
return $issueKey;
}
}שימו לב: השדה /rest/api/3/issue חייב להתאים לסוג הכרטיס בפרויקט. שדות מותאמים אישית (למשל, דוא"ל לקוח) מועברים לפי מזהה — יש למצוא אותם בהגדרות Jira מראש.
כיצד להציג את סטטוס הכרטיס באתר?
לאחר יצירת הכרטיס, הלקוח רוצה לראות את הסטטוס שלו. בקשת GET אל class JiraService { public function createIssue(SupportRequest $data): string { $resp = Http::withBasicAuth( config('services.jira.email'), config('services.jira.token') )->post(config('services.jira.url') . '/rest/api/3/issue', [ 'fields' => [ 'project' => ['key' => 'SUPPORT'], 'summary' => "[Web] {$data->subject}", 'description' => [ 'type' => 'doc', 'version' => 1, 'content' => [[ 'type' => 'paragraph', 'content' => [['type' => 'text', 'text' => $data->message]], ]], ], 'issuetype' => ['name' => 'Support'], 'priority' => ['name' => $data->priority ?? 'Medium'], 'labels' => ['website', 'customer-request'], 'customfield_10014' => $data->customer_email, // Кастомное поле email ], ]); $issueKey = $resp->json('key'); // SUPPORT-123 // Сохраняем привязку заявки к тикету SupportTicket::create([ 'user_id' => $data->userId, 'jira_key' => $issueKey, 'subject' => $data->subject, 'status' => 'open', ]); return $issueKey; } } מחזירה את כל השדות הדרושים:
public function getTicketStatus(string $issueKey): array
{
$resp = Http::withBasicAuth($email, $token)
->get(config('services.jira.url') . "/rest/api/3/issue/{$issueKey}");
$issue = $resp->json();
return [
'key': $issue['key'],
'summary': $issue['fields']['summary'],
'status': $issue['fields']['status']['name'],
'updated': $issue['fields']['updated'],
'comments': count($issue['fields']['comment']['comments'] ?? []),
];
}הציגו מידע זה בחשבון האישי של הלקוח. חשוב: שמרו תגובות במטמון למשך 30–60 שניות כדי להימנע מחריגה ממגבלות הקצב של Jira API (בדרך כלל 5000 בקשות לשעה).
כיצד להגדיר webhooks לסנכרון סטטוסים?
Webhooks הם התראות push מ-Jira כאשר כרטיס משתנה. הם יעילים פי 100 מאשר בדיקת סטטוס כל 5 דקות. ב-Jira Cloud, צרו webhook עם האירוע issuetype וציינו את כתובת האתר שלכם. handler ב-Laravel:
Route::post('/webhooks/jira', function (Request $request) {
$event = $request->input('webhookEvent');
$issue = $request->input('issue');
$issueKey = $issue['key'];
if ($event === 'jira:issue_updated') {
$newStatus = $issue['fields']['status']['name'];
SupportTicket::where('jira_key', $issueKey)->update([
'status' => $this->mapJiraStatus($newStatus),
'updated_at' => now(),
]);
// Уведомить клиента об изменении статуса
$ticket = SupportTicket::where('jira_key', $issueKey)->first();
if ($ticket) {
Mail::to($ticket->user->email)->send(new TicketStatusUpdatedMail($ticket));
}
}
return response('ok');
});
אל תשכחו לאמת את /rest/api/3/issue/{issueKey} למען האבטחה (ראו תיעוד webhooks של Jira).
תוכנית שלב-אחר-שלב לאינטגרציה של Jira עם האתר
- הגדרת אימות: צרו API token ב-Jira Cloud.
- יישמו endpoint ליצירת כרטיסים מטופס האינטרנט (POST /rest/api/3/issue).
- שמרו את מפתח הכרטיס במסד הנתונים המקומי למעקב.
- הגדירו הצגת סטטוס בחשבון האישי (GET /rest/api/3/issue/{key}).
- צרו webhook ב-Jira להתראות push על שינויי סטטוס.
- יישמו handler ל-webhook בשרת שמעדכן את הסטטוס ומודיע ללקוח.
- בדקו את המחזור המלא: יצירה → שינוי סטטוס → הצגה.
עבור לקוחות גדולים, אנו פורסים בנוסף פורטל שירות עצמי שבו הם יכולים לצפות בהיסטוריית הכרטיסים ולהוסיף תגובות ללא כניסה ל-Jira. זה מפחית את עומס התמיכה ב-40%.
דוגמה לחישוב חיסכון בעלויות
חנות מסחר אלקטרוני עם 500 פניות יומיות בילתה 3 שעות בהעברה ידנית. לאחר האינטגרציה, הזמן ירד ל-5 דקות. החיסכון הסתכם ב-$4000 לחודש הודות לשחרור מנהלים.
כמה זמן אורכת האינטגרציה?
| שלב | לוח זמנים |
|---|---|
| יצירת כרטיסים מטפסים + הצגת סטטוס | 3–4 ימי עבודה |
| הוספת webhooks והתראות דוא"ל | +2 ימים |
| מחזור מלא (עם פורטל שירות עצמי) | 7–10 ימים |
העלות מחושבת באופן אישי — היא תלויה במורכבות השדות, מספר הפרויקטים והצורך בטפסי אינטרנט מותאמים. בממוצע, הלקוחות שלנו חוסכים $3000 עד $5000 לחודש לאחר היישום.
מה כלול?
- תיעוד אינטגרציה (סכימת בקשות, מפתחות, דוגמאות).
- קוד מקור עם הערות (PHP/Laravel או Python).
- הגדרת webhooks ובדיקות בסביבת staging.
- הדרכת צוות התמיכה לשימוש בפורטל.
- אחריות ל-30 יום לפעילות יציבה.
הניסיון שלנו: למעלה מ-50 אינטגרציות מוצלחות של Jira עם אתרים. אנו מבטיחים שהמערכת לא תישבר בעומסי שיא. רוצים את אותה אוטומציה? צרו קשר — תוך יום אחד אנו מעריכים את הפרויקט שלכם ומציעים את ארכיטקטורת האינטגרציה. הזמינו אינטגרציה של Jira עם האתר שלכם משותפי Atlassian מוסמכים.







