Как автоматизировать процесс распределения тикетов в WordPress

Автоматизация распределения тикетов в системе поддержки клиентов — ключевой момент для эффективной работы службы техподдержки на сайте WordPress. Особенно это важно, когда количество обращений растет, а нужно быстро направлять запросы к нужным специалистам без ручного вмешательства.

Почему важна автоматизация распределения тикетов

Ручное распределение обращений часто приводит к задержкам, ошибкам и неравномерной нагрузке на сотрудников. Автоматизация позволяет:

  • Сократить время реакции на запрос пользователя;
  • Избежать человеческого фактора и ошибок;
  • Обеспечить равномерное распределение нагрузки;
  • Использовать критерии для направления тикета именно к профильному специалисту.

Для WordPress существует несколько подходов и инструментов, которые помогут реализовать такую автоматизацию.

Использование плагинов для автоматического распределения тикетов

Наиболее простой способ — задействовать специализированные плагины. Примером может служить WPtickets, который поддерживает расширенную систему ролей и позволяет создавать правила распределения.

Другие плагины с функцией автоматического назначения:

  • Awesome Support — бесплатный и платный функционал с возможностью настройки правил распределения по категориям и тегам;
  • SupportCandy — поддерживает автоматическое назначение на агентов в зависимости от темы обращения;
  • Help Scout Desk — интеграция с внешней системой с мощным распределением.

Однако иногда стандартных возможностей плагинов недостаточно, и требуется кастомная логика.

Кастомное решение автоматического распределения тикетов — пример кода

Допустим, вы хотите, чтобы тикеты, содержащие определенные ключевые слова, автоматически назначались конкретному агенту. Для этого можно использовать хуки WordPress и функционал плагина поддержки.

Пример функции с префиксом wptickets_ для автоматического назначения тикета при его создании:

function wptickets_auto_assign_ticket( $ticket_id ) {
    $ticket = get_post( $ticket_id );
    $content = strtolower( $ticket->post_content );

    $agent_id = 0;
    if ( strpos( $content, 'оплата' ) !== false ) {
        // Назначаем агента поддержки платежей (ID 12)
        $agent_id = 12;
    } elseif ( strpos( $content, 'техническая' ) !== false ) {
        // Назначаем технического специалиста (ID 15)
        $agent_id = 15;
    }

    if ( $agent_id ) {
        update_post_meta( $ticket_id, '_wptickets_assigned_agent', $agent_id );
        // Можно добавить уведомление агенту
        wptickets_notify_agent( $agent_id, $ticket_id );
    }
}
add_action( 'wptickets_ticket_created', 'wptickets_auto_assign_ticket' );

В этом примере при создании тикета проверяется содержание обращения и в зависимости от ключевых слов назначается ответственный агент. Для интеграции с WPtickets можно использовать встроенный хук wptickets_ticket_created, который вызывается при создании нового тикета.

Функция уведомления агента

Для информирования назначенного сотрудника можно реализовать простую функцию отправки email:

function wptickets_notify_agent( $agent_id, $ticket_id ) {
    $agent = get_user_by( 'ID', $agent_id );
    $ticket = get_post( $ticket_id );
    if ( ! $agent || ! $ticket ) return;

    $subject = 'Новый тикет: ' . $ticket->post_title;
    $message = 'Вам назначен новый тикет для обработки.\n\n';
    $message .= 'Содержание: ' . $ticket->post_content . '\n';
    $message .= 'Ссылка: ' . get_edit_post_link( $ticket_id );

    wp_mail( $agent->user_email, $subject, $message );
}

Настройка правил распределения через метаполя и категории

Для более сложных сценариев можно создавать произвольные поля (метаполя) для тикетов, например, тема обращения, приоритет, тип проблемы. После создания таких полей в форме тикета, по ним можно строить правила распределения.

Например, тикеты с приоритетом «Критический» можно направлять сразу на старших специалистов, а по теме — к соответствующему отделу.

Это потребует доработки кода, который будет проверять эти поля и выбирать агента:

function wptickets_assign_by_priority_and_topic( $ticket_id ) {
    $priority = get_post_meta( $ticket_id, '_wptickets_priority', true );
    $topic = get_post_meta( $ticket_id, '_wptickets_topic', true );

    if ( $priority === 'critical' ) {
        $agent_id = 20; // Старший специалист
    } elseif ( $topic === 'billing' ) {
        $agent_id = 12; // Отдел платежей
    } else {
        $agent_id = 15; // Общий отдел
    }

    update_post_meta( $ticket_id, '_wptickets_assigned_agent', $agent_id );
    wptickets_notify_agent( $agent_id, $ticket_id );
}
add_action( 'wptickets_ticket_created', 'wptickets_assign_by_priority_and_topic' );

Распределение тикетов по времени и загрузке агентов

Для продвинутого распределения можно учитывать не только тему и приоритет, но и текущую загрузку сотрудников. Это требует хранения и обновления данных о количестве назначенных тикетов у каждого агента.

Например, можно создать дополнительное поле _wptickets_current_load и при назначении тикета увеличивать счетчик, а при закрытии тикета — уменьшать.

При распределении в коде выбирается агент с минимальной загрузкой:

function wptickets_assign_min_load_agent( $ticket_id ) {
    $agents = [12, 15, 20]; // ID агентов
    $min_load = PHP_INT_MAX;
    $selected_agent = 0;

    foreach ( $agents as $agent_id ) {
        $load = (int) get_user_meta( $agent_id, '_wptickets_current_load', true );
        if ( $load < $min_load ) {
            $min_load = $load;
            $selected_agent = $agent_id;
        }
    }

    update_post_meta( $ticket_id, '_wptickets_assigned_agent', $selected_agent );
    wptickets_notify_agent( $selected_agent, $ticket_id );

    // Увеличиваем загрузку
    update_user_meta( $selected_agent, '_wptickets_current_load', $min_load + 1 );
}
add_action( 'wptickets_ticket_created', 'wptickets_assign_min_load_agent' );

Не забудьте добавить логику уменьшения счетчика при закрытии тикета, чтобы корректно отражать текущую нагрузку.

Заключение по теме автоматизации распределения тикетов

Автоматизация распределения тикетов в WordPress — это не только улучшение скорости обработки запросов, но и качество обслуживания клиентов. В зависимости от сложности поддержки, можно использовать как готовые плагины с базовыми настройками, так и создавать кастомные решения, которые учитывают бизнес-логику и особенности команды.

Если вы используете WPtickets, то благодаря встроенным хукам и метаполям можно гибко реализовать любую логику распределения, интегрируя уведомления и учитывая загрузку агентов.

Такой подход даст стабильную и удобную систему поддержки без лишней ручной работы.

Как настроить отправку писем в WordPress без использования PHPMailer
09.12.2025
Как создать кастомный фильтр для тикетов в WPtickets
11.02.2026
Как использовать WooCommerce для продажи подписок и автоплатежей в WordPress
04.07.2026
Как создать автоматический отчет по тикетам в WPtickets для WordPress
24.01.2026
Автоматическое расширение функционала WPtickets через хуки: настройка и примеры
15.05.2026