Автоматизация отчетности по тикетам в системе поддержки — важный шаг для контроля качества и скорости обслуживания клиентов. В этой статье рассмотрим, как создать автоматический отчет по тикетам в WordPress с помощью плагина WPtickets и кастомного кода, который позволит выгружать данные по тикетам в удобном формате и отправлять их по расписанию.
Зачем нужен автоматический отчет по тикетам в WPtickets
Ручное формирование отчетов занимает много времени и подвержено ошибкам. Автоматический отчет позволяет систематически получать актуальную статистику по тикетам: количество новых обращений, статус решения, время обработки и т.д. Это помогает менеджерам поддержки быстро оценивать эффективность работы и выявлять узкие места.
WPtickets предоставляет удобные инструменты для работы с тикетами, но встроенных функций для автоматической отчетности недостаточно. Поэтому мы создадим кастомный скрипт, который будет собирать нужные данные и отправлять их по email.
Создание кастомной функции для сбора данных по тикетам
Для начала напишем функцию wptickets_get_tickets_report(), которая будет собирать статистику по тикетам за заданный период. Используем WP_Query для выборки постов типа ticket с необходимыми параметрами.
function wptickets_get_tickets_report($start_date, $end_date) {
$args = [
'post_type' => 'ticket',
'posts_per_page' => -1,
'date_query' => [
[
'after' => $start_date,
'before' => $end_date,
'inclusive' => true,
],
],
];
$query = new WP_Query($args);
$tickets = $query->posts;
$report = [
'total' => count($tickets),
'open' => 0,
'closed' => 0,
'in_progress'=> 0,
'avg_response_time' => 0,
];
$response_times = [];
foreach ($tickets as $ticket) {
$status = get_post_meta($ticket->ID, '_ticket_status', true);
if ($status === 'open') $report['open']++;
elseif ($status === 'closed') $report['closed']++;
elseif ($status === 'in_progress') $report['in_progress']++;
$created = get_post_time('U', false, $ticket->ID);
$first_response = get_post_meta($ticket->ID, '_first_response_time', true);
if ($first_response) {
$response_times[] = $first_response - $created;
}
}
if (!empty($response_times)) {
$report['avg_response_time'] = array_sum($response_times) / count($response_times);
}
return $report;
}
В этой функции мы собираем общее количество тикетов за период, считаем по статусам и вычисляем среднее время первого ответа, основываясь на метаполях тикетов. Для корректной работы нужно убедиться, что метаполе _first_response_time сохраняется при обработке тикета.
Форматирование отчета и отправка по email
Теперь создадим функцию wptickets_send_report_email(), которая превратит массив с отчетом в читаемый HTML и отправит письмо менеджеру.
function wptickets_send_report_email($report, $start_date, $end_date) {
$subject = "Отчет по тикетам с $start_date по $end_date";
$body = "<h2>Отчет по тикетам с $start_date по $end_date</h2>";
$body .= "<ul>";
$body .= "<li>Всего тикетов: {$report['total']}</li>";
$body .= "<li>Открытых: {$report['open']}</li>";
$body .= "<li>В работе: {$report['in_progress']}</li>";
$body .= "<li>Закрытых: {$report['closed']}</li>";
$avg_hours = round($report['avg_response_time'] / 3600, 2);
$body .= "<li>Среднее время первого ответа: {$avg_hours} часов</li>";
$body .= "</ul>";
$to = get_option('admin_email');
$headers = ['Content-Type: text/html; charset=UTF-8'];
wp_mail($to, $subject, $body, $headers);
}
Обратите внимание, что письмо отправляется на email администратора сайта, но вы можете заменить адрес на любой другой.
Автоматизация отправки отчетов по расписанию через WP-Cron
Чтобы отчет формировался и отправлялся автоматически, создадим крон-задачу. Добавим в файл функций следующий код:
function wptickets_schedule_daily_report() {
if (!wp_next_scheduled('wptickets_daily_report_hook')) {
wp_schedule_event(strtotime('tomorrow midnight'), 'daily', 'wptickets_daily_report_hook');
}
}
add_action('wp', 'wptickets_schedule_daily_report');
function wptickets_daily_report_callback() {
$yesterday = date('Y-m-d', strtotime('yesterday'));
$today = date('Y-m-d');
$report = wptickets_get_tickets_report($yesterday, $today);
wptickets_send_report_email($report, $yesterday, $today);
}
add_action('wptickets_daily_report_hook', 'wptickets_daily_report_callback');
Этот код планирует ежедневную задачу, которая формирует отчет по тикетам за предыдущий день и отправляет его на email. При необходимости расписание можно изменить или добавить дополнительные параметры.
Дополнительные советы по улучшению отчетов в WPtickets
1. Расширьте сбор данных: Добавляйте метрики, например, среднее время закрытия тикета, количество повторных обращений или оценку удовлетворенности клиента.
2. Используйте таблицы или CSV: Для более удобного анализа можно формировать отчеты в формате CSV и прикреплять их к письму.
3. Интеграция с WPRemark: Для улучшения анализа можно подключить WPRemark (https://wpshop.ru/wpremark/?utm_source=wptickets.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskiy-otchet-po-tiketam-v-wordpress-s-wptickets) и собирать отзывы клиентов вместе с тикетами.
4. Защита от сбоев: Добавьте логирование ошибок отправки и возможность повторной отправки отчета вручную.
Итоги
С помощью этого решения вы сможете автоматизировать процесс формирования отчетности по тикетам в WPtickets, что значительно сэкономит время и повысит качество поддержки. Используйте приведенный код как основу и адаптируйте под свои бизнес-процессы.