Автоматические эскалации в тикет-системе — важный инструмент для своевременного реагирования на нерешённые проблемы и улучшения качества поддержки пользователей. В этой статье мы подробно разберём, как реализовать механизм эскалаций в WordPress на примере кастомной тикет-системы, используя хуки, cron-задачи и пользовательские статусы. Приведённые примеры кода помогут вам быстро внедрить автоматизацию в собственный сервис поддержки.
Что такое эскалация тикетов и зачем она нужна
Эскалация — это автоматическое повышение приоритета или изменение статуса тикета, если он не обработан в течение заданного времени. Это позволяет избежать ситуаций, когда запрос пользователя остаётся без внимания, и ускорить решение критичных проблем.
В WordPress часто используются пользовательские статусы и метки для управления тикетами, но стандартных инструментов для эскалаций нет. Поэтому придётся создавать их самостоятельно, чтобы обеспечить автоматическую проверку и изменение статусов.
Например, если тикет в статусе "В ожидании ответа" не обновлялся более 48 часов, его нужно автоматически перевести в статус "Эскалация" и уведомить ответственного менеджера.
Создание пользовательских статусов тикетов для эскалаций
Для начала добавим новые статусы, которые будут отражать этапы эскалации. Используем функцию wpticket_register_ticket_statuses() для регистрации статусов через фильтр register_post_status, если тикеты — это кастомный тип записей.
function wpticket_register_ticket_statuses() {
register_post_status('escalated', array(
'label' => 'Эскалировано',
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop('Эскалировано <span class="count">(%s)</span>', 'Эскалировано <span class="count">(%s)</span>'),
));
}
add_action('init', 'wpticket_register_ticket_statuses');
После этого нужно добавить эти статусы в админские фильтры и в логику обработки тикетов, чтобы можно было выбирать их вручную и отображать в списках.
Настройка cron-задачи для проверки тикетов на эскалацию
Для автоматической проверки тикетов по расписанию используем WP Cron. Создадим задачу, которая будет запускаться, например, каждый час и искать тикеты, которые не обновлялись более 48 часов в статусе «В ожидании ответа».
function wpticket_schedule_escalation_check() {
if (!wp_next_scheduled('wpticket_escalation_cron_hook')) {
wp_schedule_event(time(), 'hourly', 'wpticket_escalation_cron_hook');
}
}
add_action('wp', 'wpticket_schedule_escalation_check');
function wpticket_escalation_cron_function() {
$args = array(
'post_type' => 'ticket',
'post_status' => 'waiting-for-response',
'date_query' => array(
array(
'column' => 'post_modified_gmt',
'before' => '48 hours ago',
),
),
'posts_per_page' => -1,
);
$tickets = get_posts($args);
foreach ($tickets as $ticket) {
wp_update_post(array(
'ID' => $ticket->ID,
'post_status' => 'escalated',
));
// Отправка уведомления ответственному
wpticket_notify_manager($ticket->ID);
}
}
add_action('wpticket_escalation_cron_hook', 'wpticket_escalation_cron_function');
Отправка уведомлений при эскалации тикета
Чтобы менеджеры не пропускали эскалированные тикеты, нужно автоматически отправлять им уведомления. Для этого можно использовать стандартную функцию wp_mail() или интегрировать более мощный плагин уведомлений.
function wpticket_notify_manager($ticket_id) {
$ticket = get_post($ticket_id);
$manager_email = get_option('wpticket_manager_email'); // email менеджера из настроек
$subject = 'Тикет #' . $ticket_id . ' эскалирован';
$message = 'Тикет с заголовком "' . $ticket->post_title . '" не был обработан вовремя и автоматически эскалирован.';
wp_mail($manager_email, $subject, $message);
}
Также можно расширить логику, добавив уведомления нескольким менеджерам или через интеграции с Telegram, Slack и т.п.
Использование плагина Clearfy Pro для оптимизации и автоматизации тикетов
Плагин Clearfy Pro предоставляет инструменты для управления производительностью и безопасности WordPress, а также позволяет гибко настраивать пользовательские типы записей и статусы. Его можно использовать для упрощения создания и контроля тикетов, а также для реализации дополнительных автоматизаций без глубокого погружения в код.
Рекомендации по тестированию и отладке системы эскалаций
После внедрения автоматических эскалаций важно тщательно протестировать систему. Проверьте, что cron-задачи выполняются вовремя, статусы меняются корректно, и уведомления доходят до менеджеров.
Проверить расписание WP Cron можно с помощью плагина WP Crontrol. Для отладки кода используйте логи ошибок, а также временно добавляйте записи в файл журнала с помощью функции error_log().
Не забудьте предусмотреть возможность ручного возврата тикета из статуса «Эскалировано» в нормальный рабочий статус, чтобы менеджеры могли корректно обрабатывать тикеты.
Заключение
Автоматические эскалации в тикет-системе WordPress помогают повысить эффективность поддержки и снизить риск пропуска важных запросов. Совмещая пользовательские статусы, cron-задачи и уведомления, вы создадите удобный инструмент, который будет работать без вашего постоянного контроля.
Если хотите упростить процесс, обратите внимание на плагины из WPSHOP, которые помогут автоматизировать многие рутинные операции.