В системах поддержки на WordPress, где реализованы тикеты для обработки запросов пользователей, важным аспектом является грамотное распределение тикетов между сотрудниками. Автоматическое присвоение ответственного помогает экономить время и упрощает управление задачами.
Почему важно автоматизировать присвоение ответственных в тикет-системах WordPress
Ручное назначение ответственных сотрудников часто приводит к ошибкам, задержкам и неравномерной загрузке команды. Автоматизация позволяет настроить правила, по которым тикеты будут сразу попадать к нужным специалистам по определённым критериям — по типу запроса, категории, приоритету или другим параметрам.
Кроме того, автоматическое распределение снижает вероятность человеческого фактора и упрощает масштабирование службы поддержки.
Ключевые критерии распределения тикетов
- Тип запроса (техническая поддержка, продажи, бухгалтерия и т.д.)
- Приоритет (высокий, средний, низкий)
- Категория или тег тикета
- Нагрузка на сотрудников (учитывать текущие открытые тикеты)
- Регион или язык пользователя
Для реализации этих критериев можно использовать пользовательские поля и мета-данные в WordPress.
Практическая реализация автоматического присвоения ответственных в WordPress
Рассмотрим пример, как с помощью хуков WordPress и кастомного кода реализовать автоматическое присвоение ответственного при создании тикета.
Создание пользовательского поля для ответственного
Предположим, что у вас есть кастомный тип записи ticket для тикетов. Добавим к нему мета-поле assigned_to, где будет храниться ID пользователя-ответственного.
Код автоматического присвоения ответственного
function wpticket_assign_responsible_on_ticket_save($post_id, $post, $update) {
// Проверяем тип записи
if ($post->post_type !== 'ticket') {
return;
}
// Проверяем, что это новое создание, а не обновление
if ($update) {
return;
}
// Получаем мета инфо тикета (например, категорию)
$category = get_post_meta($post_id, 'ticket_category', true);
// Определяем ответственного по категории
$responsibles = [
'technical' => 2, // ID пользователя тех. поддержки
'sales' => 3, // ID менеджера по продажам
'billing' => 4 // ID бухгалтерии
];
$assigned_user_id = isset($responsibles[$category]) ? $responsibles[$category] : 1; // 1 - админ по умолчанию
// Сохраняем ID ответственного
update_post_meta($post_id, 'assigned_to', $assigned_user_id);
}
add_action('wp_insert_post', 'wpticket_assign_responsible_on_ticket_save', 10, 3);
В этом примере мы при создании тикета автоматически назначаем ответственного в зависимости от категории. Если категория не определена — ставим админа с ID 1.
Уведомление ответственных сотрудников о новых тикетах
После присвоения ответственного полезно отправлять ему уведомление по email. Для этого расширим код:
function wpticket_notify_responsible_on_ticket_creation($post_id, $post, $update) {
if ($post->post_type !== 'ticket' || $update) {
return;
}
$assigned_to = get_post_meta($post_id, 'assigned_to', true);
if (!$assigned_to) {
return;
}
$user_info = get_userdata($assigned_to);
if (!$user_info) {
return;
}
$subject = 'Новый тикет назначен вам';
$message = sprintf('Здравствуйте, %s!\n\nВам назначен новый тикет с ID %d. Пожалуйста, проверьте его в админке.',
$user_info->display_name, $post_id);
wp_mail($user_info->user_email, $subject, $message);
}
add_action('wp_insert_post', 'wpticket_notify_responsible_on_ticket_creation', 20, 3);
Использование плагинов для расширения функционала распределения тикетов
Если вы не хотите писать код с нуля, можно использовать готовые решения. Например, плагин Clearfy Pro содержит инструменты для улучшения админки и управления ролями, которые помогут в настройке автоматизаций.
Для более сложных систем тикетов можно рассмотреть специализированные плагины, такие как Expert Review, которые позволяют добавлять правила и автоматические действия при обработке тикетов.
Пример расширения с Clearfy Pro
Clearfy Pro позволяет создавать пользовательские роли и настраивать права доступа, что полезно при распределении тикетов. Также с ним можно отключить лишние скрипты и улучшить производительность, что важно при интенсивной работе службы поддержки.
Как учитывать нагрузку на сотрудников при автоматическом присвоении
Для более интеллектуального распределения стоит учитывать количество открытых тикетов у каждого сотрудника. Это можно сделать, запросив количество тикетов с мета-полем assigned_to равным ID пользователя и статусом «открыт».
function wpticket_get_least_loaded_user($responsibles) {
$min_count = PHP_INT_MAX;
$selected_user = null;
foreach ($responsibles as $user_id) {
$args = [
'post_type' => 'ticket',
'post_status' => 'publish',
'meta_query' => [
[
'key' => 'assigned_to',
'value' => $user_id,
'compare' => '=',
],
[
'key' => 'ticket_status',
'value' => 'open',
'compare' => '=',
],
],
'fields' => 'ids',
];
$query = new WP_Query($args);
$count = $query->found_posts;
if ($count < $min_count) {
$min_count = $count;
$selected_user = $user_id;
}
}
return $selected_user;
}
Используйте эту функцию внутри вашего обработчика для выбора сотрудника с минимальной нагрузкой.
Резюме
Автоматическое присвоение ответственных сотрудников тикетам в WordPress значительно повышает эффективность службы поддержки. Правильная настройка категорий, учет нагрузки и уведомления помогут сделать процесс прозрачным и быстрым.
Используйте собственные хуки и мета-поля для гибкости или расширяйте возможности с помощью плагинов из WPShop.