В современных службах поддержки клиентов важно обеспечить прием обращений из разных каналов: email, веб-формы, онлайн-чат. WP Tickets — мощный плагин для организации системы поддержки в WordPress, но по умолчанию работает с тикетами, созданными через форму на сайте. В этой статье разберем, как расширить функционал WP Tickets, чтобы собирать тикеты из нескольких каналов, автоматизировать их обработку и не потерять важные обращения.
Почему нужна мультиканальная поддержка в WP Tickets
Традиционная поддержка через форму на сайте часто ограничивает удобство клиентов: не все хотят заходить на сайт и заполнять форму, некоторые предпочитают написать письмо или чат. Обеспечение приема тикетов из разных каналов позволяет:
- Увеличить лояльность клиентов — они обращаются удобным способом.
- Снизить нагрузку на операторов — все обращения в одном месте.
- Повысить скорость реакции — автоматические маршруты по каналам.
Реализация такой системы требует интеграции WP Tickets с почтовыми сервисами и чат-платформами, что мы подробно рассмотрим далее.
Интеграция email в WP Tickets для автоматического создания тикетов
WP Tickets не имеет встроенного функционала для приема писем и конвертации их в тикеты, но можно настроить такую схему с помощью дополнительных плагинов и кастомного кода.
Используем плагин WP Mail SMTP для надежной доставки и приема почты
Для начала установим WP Mail SMTP. Он обеспечивает корректную отправку и прием почты через SMTP-серверы. Это нужно, чтобы почтовый сервер не блокировал письма и можно было обрабатывать входящие.
Парсинг писем и создание тикетов
Для автоматического создания тикетов из писем напишем функцию, которая будет запускаться по крону и проверять почту с помощью IMAP. Пример кода:
function wptickets_fetch_emails_create_tickets() {
$hostname = '{imap.example.com:993/imap/ssl}INBOX';
$username = 'support@example.com';
$password = 'yourpassword';
$inbox = imap_open($hostname, $username, $password);
if (!$inbox) return;
$emails = imap_search($inbox, 'UNSEEN');
if ($emails) {
foreach ($emails as $email_number) {
$overview = imap_fetch_overview($inbox, $email_number, 0)[0];
$message = imap_fetchbody($inbox, $email_number, 1);
// Создаем новый тикет в WP Tickets
$ticket_data = array(
'post_title' => 'Email: ' . $overview->subject,
'post_content' => $message,
'post_type' => 'wptickets_ticket',
'post_status' => 'publish',
);
wp_insert_post($ticket_data);
// Помечаем письмо как прочитанное
imap_setflag_full($inbox, $email_number, '\\Seen');
}
}
imap_close($inbox);
}
// Добавляем в крон
if (!wp_next_scheduled('wptickets_check_email_hook')) {
wp_schedule_event(time(), 'five_minutes', 'wptickets_check_email_hook');
}
add_action('wptickets_check_email_hook', 'wptickets_fetch_emails_create_tickets');Этот код подключается к почтовому ящику, ищет новые письма, создает из них тикеты и помечает письма как прочитанные. Рекомендуется настроить крон с интервалом 5 минут для оперативного приема обращений.
Интеграция онлайн-чата с WP Tickets
Многие клиенты предпочитают решать вопросы через чат. Чтобы объединить чат и тикеты, можно использовать популярные сервисы, например, Tawk.to или LiveChat, с помощью их API создавать тикеты в WP Tickets при завершении разговора.
Пример интеграции через webhook
Допустим, чат-сервис поддерживает webhook на завершение сессии. Создаем обработчик в WordPress:
add_action('rest_api_init', function () {
register_rest_route('wptickets/v1', '/chat-webhook', array(
'methods' => 'POST',
'callback' => 'wptickets_chat_webhook_handler',
'permission_callback' => '__return_true',
));
});
function wptickets_chat_webhook_handler(WP_REST_Request $request) {
$data = $request->get_json_params();
if (empty($data['chat_transcript'])) {
return new WP_Error('no_data', 'No chat transcript provided', array('status' => 400));
}
$post_data = array(
'post_title' => 'Чат с клиентом: ' . sanitize_text_field($data['client_name'] ?? 'Без имени'),
'post_content' => wp_kses_post($data['chat_transcript']),
'post_type' => 'wptickets_ticket',
'post_status' => 'publish',
);
$ticket_id = wp_insert_post($post_data);
if (is_wp_error($ticket_id)) {
return $ticket_id;
}
return array('success' => true, 'ticket_id' => $ticket_id);
}Зарегистрируйте URL https://your-site.com/wp-json/wptickets/v1/chat-webhook в настройках webhook вашего чат-сервиса. После завершения сессии чат будет отправлять расшифровку разговора, и она автоматически превратится в тикет WP Tickets.
Оптимизация формы создания тикетов для разных каналов
Чтобы объединить форму на сайте с мультиканальной поддержкой, можно добавить выбор канала обращения. Это позволит оператору сразу видеть источник и обрабатывать заявки приоритетнее.
Добавляем поле выбора канала в форму WP Tickets
Для этого используем фильтр WP Tickets и добавим поле с помощью хуков:
add_filter('wptickets_ticket_form_fields', 'wptickets_add_channel_field');
function wptickets_add_channel_field($fields) {
$fields['channel'] = array(
'label' => 'Канал обращения',
'type' => 'select',
'options' => array(
'form' => 'Форма на сайте',
'email' => 'Email',
'chat' => 'Онлайн-чат',
),
'required' => true,
'default' => 'form',
);
return $fields;
}
// Сохраняем значение в метаполе тикета
add_action('wptickets_ticket_created', 'wptickets_save_channel_meta', 10, 2);
function wptickets_save_channel_meta($ticket_id, $data) {
if (!empty($data['channel'])) {
update_post_meta($ticket_id, '_wptickets_channel', sanitize_text_field($data['channel']));
}
}Теперь при создании тикета вручную или через форму можно указывать источник обращения, что поможет в отчетности и аналитике.
Автоматизация обработки тикетов из разных каналов
После приема обращений важно настроить автоматическое распределение и приоритизацию тикетов по каналам.
Пример автоматического присваивания меток по каналу
add_action('wptickets_ticket_created', 'wptickets_assign_tags_by_channel', 20, 2);
function wptickets_assign_tags_by_channel($ticket_id, $data) {
$channel = get_post_meta($ticket_id, '_wptickets_channel', true);
if ($channel) {
switch ($channel) {
case 'email':
wp_set_post_terms($ticket_id, array('email'), 'wptickets_tags', true);
break;
case 'chat':
wp_set_post_terms($ticket_id, array('chat'), 'wptickets_tags', true);
break;
case 'form':
wp_set_post_terms($ticket_id, array('form'), 'wptickets_tags', true);
break;
}
}
}Это позволит фильтровать тикеты по источнику, оперативно анализировать нагрузку и оптимизировать работу операторов.
Заключение по мультиканальной поддержке в WP Tickets
Объединение email, чата и формы обращения в единую систему WP Tickets значительно повысит качество поддержки и удобство для клиентов. Хотя WP Tickets не имеет нативной поддержки мультиканальности, с помощью интеграций, плагина WP Mail SMTP, API чат-сервисов и кастомного кода можно построить надежный и удобный сервис поддержки.
Для расширения возможностей рекомендуем изучить плагины и сервисы, которые интегрируются с WP Tickets и облегчают автоматизацию, например WPRemark для управления комментариями и уведомлениями, или My Popup для интерактивного сбора обращений.