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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка модуля тикет-системы 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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

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

Модель данных

Модуль 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 дня.