Почему важно автоматическое распределение тикетов
В службе поддержки, использующей WPtickets, ручное назначение тикетов агентам может привести к задержкам и неравномерной загрузке специалистов. Автоматизация процесса распределения помогает оптимизировать рабочий процесс, ускорить обработку запросов и улучшить качество сервиса.
При большом количестве тикетов и нескольких агентах автоматическое назначение снижает риск пропуска важных обращений и позволяет сбалансировать нагрузку, что критично для эффективной поддержки клиентов.
В этой статье мы рассмотрим несколько способов реализации распределения тикетов по агентам в WPtickets, включая кастомный код и использование плагинов для автоматизации.
Основные способы распределения тикетов в WPtickets
Распределение по ролям и компетенциям
WPtickets позволяет создавать роли и группы агентов. Вы можете назначать тикеты определённым ролям, например, «техническая поддержка» или «биллинг». Это базовый способ фильтрации заявок по специализации.
Для этого необходимо в настройках WPtickets создать группы и назначить агентов. Затем при создании тикета можно указывать группу, которой он принадлежит. Однако это не автоматизирует процесс полностью — назначение всё равно делается вручную.
Распределение по очереди (Round Robin)
Распределение «по очереди» — популярный метод, когда тикеты назначаются агенты последовательно, чтобы равномерно распределять нагрузку. WPtickets из коробки не реализует этот функционал, но его можно добавить с помощью кастомного кода.
Распределение по приоритету или сложности
Если у вас есть тикеты разного приоритета, можно настроить распределение так, чтобы более сложные тикеты назначались опытным агентам, а простые — новичкам. Для этого можно использовать пользовательские поля и логику назначения.
Пример кода: Автоматическое назначение агента в WPtickets по очереди
Рассмотрим пример функции, которая назначает нового агента по принципу round robin при создании тикета. Этот код нужно добавить в файл functions.php вашей темы или в плагин для кастомных функций.
function wptickets_assign_agent_round_robin($ticket_id) {
// Получаем список агентов (ID пользователей с ролью 'agent')
$agents = get_users(array('role' => 'agent'));
if (empty($agents)) {
return; // Нет агентов
}
// Получаем последний назначенный ID агента из опций
$last_agent_id = get_option('wptickets_last_assigned_agent_id', 0);
// Ищем индекс следующего агента в массиве
$next_index = 0;
foreach ($agents as $index => $agent) {
if ($agent->ID == $last_agent_id) {
$next_index = ($index + 1) % count($agents);
break;
}
}
// Назначаем тикет следующему агенту
$next_agent = $agents[$next_index];
// Сохраняем ID назначенного агента для следующего вызова
update_option('wptickets_last_assigned_agent_id', $next_agent->ID);
// Обновляем поле ответственного агента у тикета
update_post_meta($ticket_id, 'assigned_agent', $next_agent->ID);
}
// Хук на создание тикета
add_action('wptickets_ticket_created', 'wptickets_assign_agent_round_robin');В этом примере мы используем пользовательскую опцию для хранения последнего назначенного агента и циклически проходим по списку, чтобы назначать тикеты по очереди.
Важно: замените 'agent' на реальную роль ваших агентов, если она отличается.
Использование плагинов для расширения функционала
Если вы предпочитаете готовые решения, можно рассмотреть плагины, которые интегрируются с WPtickets или расширяют возможности поддержки в WordPress:
- WPRemark — автоматизация тегирования и назначения тикетов на основе содержимого;
- My Popup — для создания кастомных форм с дополнительной логикой;
- плагины для управления ролями и правами (например, User Role Editor) для гибкой настройки доступа агентов.
Комбинация этих инструментов позволяет построить эффективную систему распределения тикетов без сложной разработки.
Пример кастомного фильтра для назначения агентов по категории тикета
Допустим, у вас есть категории тикетов, и вы хотите назначать агентов в зависимости от категории. Вот пример функции, которая назначает агента в зависимости от категории:
function wptickets_assign_agent_by_category($ticket_id) {
$categories = wp_get_post_terms($ticket_id, 'ticket_category');
if (empty($categories)) {
return;
}
$category_slug = $categories[0]->slug;
// Массив соответствия категории и ID агента
$mapping = array(
'billing' => 5, // ID агента для биллинга
'technical' => 7, // ID агента для техподдержки
);
if (isset($mapping[$category_slug])) {
update_post_meta($ticket_id, 'assigned_agent', $mapping[$category_slug]);
}
}
add_action('wptickets_ticket_created', 'wptickets_assign_agent_by_category');Этот код назначает конкретного агента в зависимости от первой категории тикета. Для расширения можно добавлять больше категорий и логики.
Советы по отладке и тестированию
После внедрения автоматического распределения важно тщательно протестировать работу системы:
- Создайте тестовые тикеты с разными параметрами и проверьте, правильно ли назначаются агенты.
- Логируйте действия в файлы или в базу, чтобы отслеживать ошибки.
- Убедитесь, что роли и права агентов настроены корректно, и они видят только свои тикеты.
- Проверьте совместимость кастомных функций с обновлениями WPtickets и WordPress.
Заключение по теме распределения тикетов в WPtickets
Автоматическое распределение тикетов существенно повышает качество и скорость обслуживания клиентов. В WPtickets это можно реализовать с помощью кастомных функций на PHP, а также с использованием дополнительных плагинов для расширения возможностей.
Используйте предложенные примеры кода как отправную точку, адаптируя логику под свои задачи и структуру службы поддержки. Правильная настройка роли и прав, а также тестирование помогут избежать ошибок и сделать процесс поддержки максимально эффективным.
Для более глубокого изучения и расширения функционала рекомендуем ознакомиться с официальным плагином WPtickets на WPSHOP и другими инструментами из экосистемы WPSHOP.