Клієнти губляться між формою зворотного зв'язку та статусом заявки — менеджери витрачають у середньому 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 з сайтами. Гарантуємо, що система не зламається при пікових навантаженнях. Хочете таку ж автоматизацію? Зв'яжіться з нами — за один день оцінимо ваш проект і запропонуємо архітектуру інтеграції.







