Клієнти губляться між формою зворотного зв'язку та статусом заявки — менеджери витрачають у середньому 2–3 години на день на ручне перенесення даних з веб-форми в Jira. У результаті втрачається до 15% заявок, а час реакції збільшується на 40%. Підтримка працює наосліп, а керівництво не бачить реальну картину навантаження. Наші інженери вирішують цю проблему за 3–6 днів під ключ: інтеграція Jira API з вашим сайтом, включаючи створення тікетів, синхронізацію статусів, вебхуки та портал самообслуговування для клієнтів. У результаті — нульова втрата заявок, автоматизація рутини та прозорість кожного кроку.
Як аутентифікуватися в Jira API?
Jira Cloud використовує Basic Auth з API-токеном. Токен створюється в налаштуваннях акаунта — ніколи не використовуйте пароль безпосередньо. Для Jira Server застосовується OAuth або особистий токен (PAT). У прикладі нижче — аутентифікація через Python-бібліотеку jira:
from jira import JIRA jira = JIRA( server='https://your-company.atlassian.net', basic_auth=('[email protected]', JIRA_API_TOKEN) # API token, не пароль ) API-токен дає доступ лише до необхідних проектів. Зберігайте його в змінних середовища, а не в коді.
| Спосіб | Сфера застосування | Рівень безпеки |
|---|---|---|
| Basic Auth + API-токен | Jira Cloud | Середній (токен можна відкликати) |
| OAuth 2.0 | Jira Cloud і Server | Високий (обмежені права) |
| Особистий токен (PAT) | Jira Server | Середній (зручний для скриптів) |
Як створити задачу з форми на PHP?
Типовий сценарій — користувач заповнює форму підтримки, і на сервері створюється задача Jira. Використовуємо HTTP-клієнт Laravel для надсилання POST-запиту до /rest/api/3/issue:
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; } } Зверніть увагу: поле issuetype має відповідати типу задачі в проекті. Кастомні поля (наприклад, email клієнта) передаються за ID — їх потрібно попередньо знайти в налаштуваннях Jira.
Як відобразити статус тікету на сайті?
Після створення задачі клієнт хоче бачити її статус. GET-запит до /rest/api/3/issue/{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 запитів на годину).
Як налаштувати вебхуки для синхронізації статусу?
Вебхуки — це push-сповіщення від Jira при зміні задачі. Вони в 100 разів ефективніші, ніж опитування статусу кожні 5 хвилин. У Jira Cloud створіть вебхук з подією jira:issue_updated і вкажіть URL вашого сайту. Обробник на 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'); }); Не забудьте перевірити X-Hub-Signature для безпеки (дивіться документацію Jira webhooks).
Покроковий план інтеграції Jira з сайтом
- Налаштуйте аутентифікацію: створіть API-токен у Jira Cloud.
- Реалізуйте ендпоінт для створення тікету з веб-форми (POST /rest/api/3/issue).
- Збережіть ключ тікету в локальній БД для відстеження.
- Налаштуйте відображення статусу в особистому кабінеті (GET /rest/api/3/issue/{key}).
- Створіть вебхук у Jira для push-сповіщень про зміну статусу.
- Реалізуйте обробник вебхуку на сервері з оновленням статусу та сповіщенням клієнта.
- Протестуйте весь цикл: створення → зміна статусу → відображення.
Для великих клієнтів ми додатково розгортаємо портал самообслуговування, де можна переглядати історію тікетів і залишати коментарі без входу в Jira. Це знижує навантаження на підтримку на 40%.
Приклад розрахунку економії
Інтернет-магазин з 500 заявками на день витрачав 3 години на ручне перенесення. Після інтеграції час скоротився до 5 хвилин. Економія склала $4000 на місяць за рахунок звільнення менеджерів.
Скільки часу займає інтеграція?
| Етап | Термін |
|---|---|
| Створення тікетів з форм + відображення статусу | 3–4 робочих дні |
| Додавання вебхуків та email-сповіщень | +2 дні |
| Повний цикл (з порталом самообслуговування) | 7–10 днів |
Вартість розраховується індивідуально — залежить від складності полів, кількості проектів та необхідності кастомних веб-форм. У середньому, наші клієнти економлять від $3000 до $5000 на місяць після впровадження.
Що входить в роботу?
- Документація по інтеграції (схема запитів, ключі, приклади).
- Вихідний код з коментарями (PHP/Laravel або Python).
- Налаштування вебхуків та тестування на staging.
- Навчання команди підтримки роботі з порталом.
- Гарантія стабільної роботи протягом 30 днів.
Наш досвід: більше 50 успішних інтеграцій Jira з сайтами. Гарантуємо, що система не зламається при пікових навантаженнях. Хочете таку ж автоматизацію? Зв'яжіться з нами — за один день оцінимо ваш проект і запропонуємо архітектуру інтеграції.







