Автоматические ответы в тикет-системе — это удобный способ оперативно информировать пользователей о статусе их обращений, подтверждать получение тикета и снижать нагрузку на службу поддержки. В этой статье мы подробно разберем, как реализовать такую функцию на WordPress, используя собственный код и готовые плагины.
Зачем нужны автоматические ответы в тикет-системе WordPress
Автоответы позволяют мгновенно уведомлять пользователей о том, что их тикет принят в обработку. Это повышает доверие и улучшает пользовательский опыт, а поддержке дает время подготовить развернутый ответ. Кроме того, автоматизация помогает избежать повторных вопросов о статусе обращения.
Типичные сценарии для автоответов:
- Подтверждение создания тикета;
- Изменение статуса тикета (например, «в работе», «решен»);
- Запрос дополнительной информации;
- Закрытие тикета с благодарностью.
Выбор плагина для создания тикет-системы с автоответами
Если у вас еще нет тикет-системы, рекомендую обратить внимание на плагины с поддержкой автоответов. Например:
- JS Help Desk — простая и бесплатная система с базовыми автоответами.
- Expert Review — плагин для отзывов и тикетов с расширенной системой уведомлений.
Но если нужна гибкость и кастомизация, лучше создавать автоответы программно.
Как реализовать автоматические ответы программно в WordPress
Предположим, у вас есть кастомный тип записей ticket, который используется для тикетов. Добавим функцию, которая при изменении статуса тикета будет отправлять письмо с автоматическим ответом.
1. Хук для отслеживания изменения статуса тикета
В WordPress мы можем использовать хук transition_post_status или save_post_ticket. Пример:
function wpticket_send_auto_response($post_id, $post, $update) {
if ($post->post_type !== 'ticket') {
return;
}
// Проверяем, что это обновление, а не новая запись
if (!$update) {
return;
}
// Получаем предыдущий статус
$old_status = get_post_meta($post_id, '_old_ticket_status', true);
$new_status = get_post_status($post_id);
if ($old_status === $new_status) {
return; // Статус не изменился
}
// Сохраняем новый статус для последующего сравнения
update_post_meta($post_id, '_old_ticket_status', $new_status);
// Отправляем письмо при смене статуса
wpticket_send_email_on_status_change($post_id, $new_status);
}
add_action('save_post_ticket', 'wpticket_send_auto_response', 10, 3);
2. Функция отправки письма
Создадим функцию, которая формирует и отправляет письмо пользователю:
function wpticket_send_email_on_status_change($post_id, $new_status) {
$post = get_post($post_id);
$user_email = get_post_meta($post_id, '_ticket_user_email', true); // email пользователя
if (empty($user_email)) {
return; // Нет email — ничего не отправляем
}
$subject = 'Обновление статуса вашего тикета №' . $post_id;
$message = "Здравствуйте!\n\nСтатус вашего тикета изменился на: " . $new_status . ".\n\n";
$message .= "Вы можете просмотреть тикет по ссылке: " . get_permalink($post_id) . "\n\nСпасибо за обращение!";
wp_mail($user_email, $subject, $message);
}
Как сохранить email пользователя при создании тикета
Чтобы функция работала, нужно сохранять email пользователя в мета-поле _ticket_user_email. Если тикеты создаются из формы, добавьте в обработчик сохранение:
if (isset($_POST['user_email'])) {
update_post_meta($post_id, '_ticket_user_email', sanitize_email($_POST['user_email']));
}
Дополнительные возможности: шаблоны писем и локализация
Для удобства и масштабирования автоответов рекомендую вынести текст сообщений в отдельные шаблоны или использовать фильтры для их изменения. Например:
function wpticket_get_email_template($status) {
$templates = [
'new' => 'Ваш тикет принят и будет обработан в ближайшее время.',
'in_progress' => 'Ваш тикет находится в обработке.',
'closed' => 'Ваш тикет закрыт. Спасибо за обращение!'
];
return isset($templates[$status]) ? $templates[$status] : 'Обновление по вашему тикету.';
}
В функции отправки письма тогда можно использовать:
$message = "Здравствуйте!\n\n" . wpticket_get_email_template($new_status) . "\n\nС уважением, служба поддержки.";
Рекомендации по улучшению автоответов
- Используйте HTML-письма для более приятного оформления;
- Добавьте ссылки на базу знаний или FAQ для самостоятельного решения;
- Логируйте отправленные письма для отладки и контроля;
- Добавьте проверку частоты отправки, чтобы не спамить пользователя;
- Используйте SMTP-серверы или специализированные сервисы для надежной доставки.
Заключение
Автоматические ответы — важный элемент любой тикет-системы. Их можно реализовать как с помощью готовых плагинов, так и самостоятельно, используя хук save_post_ticket и функцию wp_mail. Такой подход позволит гибко настраивать логику уведомлений под ваши задачи и существенно повысит качество поддержки.
Для расширенного функционала советую посмотреть на Expert Review — плагин с широкими возможностями по управлению тикетами и уведомлениями.