Розробка модуля тикет-системи 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка модуля тикет-системи 1С-Бітрікс
Середній
~1-2 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    880
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    631
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    781
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    681
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1010

Розроблення модуля системи квитків для 1С-Bitrix

Підтримка через email-скриню працює, доки є лише один агент. Як тільки їх стає двоє — виникають проблеми: дублювання відповідей, втрата листів, неможливість відстежити історію переписки по конкретній проблемі, відсутність SLA. Вбудований Helpdesk у Bitrix24 вирішує задачу, але вимагає окремої ліцензії. Для сайту на 1С-Bitrix зі своїм особистим кабінетом потрібна своя система квитків, інтегрована з профілями користувачів та замовленнями.

Модель даних

Модуль vendor.tickets:

  • b_vendor_ticket — квитки: id, number (людиночитаний, T-2024-0001), user_id, subject, status (open/pending/resolved/closed), priority (low/normal/high/urgent), category_id, assigned_to (agent_id), order_id (опціонально), first_response_at, resolved_at, created_at, updated_at
  • b_vendor_ticket_message — повідомлення в квитку: id, ticket_id, author_id, author_type (user/agent/system), body, is_internal (внутрішня нотатка), created_at
  • b_vendor_ticket_attachment — файли: id, message_id, file_id
  • b_vendor_ticket_category — категорії: id, name, sort, default_assigned_to, sla_hours
  • b_vendor_ticket_sla_breach — порушення SLA: id, ticket_id, breach_type (first_response/resolution), breached_at

Створення квитка користувачем

class TicketService
{
    public function create(int $userId, array $data): CreateResult
    {
        $number = $this->generateNumber(); // T-2024-0001, атомарний лічильник

        $category = CategoryTable::getById($data['category_id'])->fetch();

        $ticketId = TicketTable::add([
            'NUMBER'      => $number,
            'USER_ID'     => $userId,
            'SUBJECT'     => $data['subject'],
            'STATUS'      => 'open',
            'PRIORITY'    => $data['priority'] ?? 'normal',
            'CATEGORY_ID' => $data['category_id'],
            'ASSIGNED_TO' => $category['DEFAULT_ASSIGNED_TO'],
            'ORDER_ID'    => $data['order_id'] ?? null,
        ])->getId();

        // Перше повідомлення
        MessageTable::add([
            'TICKET_ID'   => $ticketId,
            'AUTHOR_ID'   => $userId,
            'AUTHOR_TYPE' => 'user',
            'BODY'        => $data['message'],
        ]);

        // Сповіщення агента підтримки
        $this->notifyAgent($ticketId);

        return CreateResult::success($ticketId);
    }
}

Переписка в квитку

Кожне наступне повідомлення — нова запис у b_vendor_ticket_message. Агенти можуть залишати внутрішні нотатки (is_internal = 1), які користувач не бачить, але бачать інші агенти. При відповіді агента:

  • Статус квитка змінюється на pending (очікуємо відповіді користувача)
  • Записується first_response_at (якщо це перша відповідь)
  • Користувач отримує email-сповіщення

При відповіді користувача:

  • Статус змінюється на open
  • Агент отримує сповіщення

Контроль SLA

SLA встановлюється на рівні категорії (sla_hours). Агент перевіряє кожні 15 хвилин:

public static function checkSlaBreaches(): void
{
    $breachTime = (new DateTime())->modify("-{$category['SLA_HOURS']} hours");

    $overdue = TicketTable::getList([
        'filter' => [
            'STATUS'           => 'open',
            '<=CREATED_AT'     => $breachTime,
            'FIRST_RESPONSE_AT' => false, // немає першої відповіді
        ],
    ])->fetchAll();

    foreach ($overdue as $ticket) {
        SlaBreachTable::add([
            'TICKET_ID'   => $ticket['ID'],
            'BREACH_TYPE' => 'first_response',
            'BREACHED_AT' => new DateTime(),
        ]);
        // Сповіщаємо керівника підтримки
        $this->notifySlaManager($ticket);
    }
}

Призначення агентів та черги

  • Автоматичне призначення: при створенні квитка агент вибирається за категорією (поле default_assigned_to)
  • Балансування навантаження: якщо в черзі кілька агентів, вибирається той, у кого менше відкритих квитків
  • Ручне переназначення: агент може передати квиток колезі з вказанням причини

Оцінка якості підтримки

Після переведення квитка у resolved користувачу надсилається посилання для оцінки:

GET /support/rate/?ticket=T-2024-0001&token=abc123&score=5

Токен одноразовий, строк дії 7 днів. Оцінки агрегуються в метрику CSAT за агентом та за категорією.

Особистий кабінет та адміністративний інтерфейс

Користувач: список своїх квитків, статуси, переписка, створити новий квиток, прикріпити файл.

Агент підтримки: вхідні квитки (своя черга + необхідні призначення), фільтрація за пріоритетом/категорією/статусом, швидкі відповіді (шаблони), внутрішні нотатки, історія змін статусів.

Керівник: дашборд — середній час відповіді, CSAT за агентами, кількість порушень SLA, навантаження за агентами.

Терміни розроблення

Етап Тривалість
ORM-таблиці, генератор номерів 1 день
Створення квитків, переписка 2 дні
Контроль SLA, агент моніторингу 2 дні
Призначення агентів, балансування 1 день
Оцінка CSAT, токени 1 день
Особистий кабінет користувача 2 дні
Інтерфейс агента підтримки 3 дні
Дашборд керівника 1 день
Тестування 1 день

Разом: 14 робочих днів. Email-to-ticket (створення квитка з вхідного листа) — додатково 2 дні.