Как отправлять новые тикеты WPtickets в Slack или Telegram

Если тикеты уже собираются в WordPress, следующий узкий и полезный шаг — не держать операторов в админке, а сразу дублировать новые обращения в рабочий канал. На практике это решает две задачи: команда видит новые заявки быстрее, а дежурный не пропускает тикет, даже если не открыт кабинет поддержки.

Ниже разберём сценарий без выдуманных интеграций: через обычный HTTP-запрос к Slack Incoming Webhook или Telegram Bot API. Такой подход не зависит от конкретного интерфейса плагина, а значит его проще сопровождать и отлаживать.

Когда это действительно нужно

Интеграция полезна не всем подряд. Она оправдана, если у вас есть хотя бы один из этих сценариев:

  • поддержка дежурит в Slack/Telegram, а не в админке WordPress;
  • тикеты приходят редко, но каждый важен и должен быть замечен сразу;
  • нужно разделять уведомления по каналам: продажи, техподдержка, VIP-клиенты;
  • вы хотите быстро увидеть тему обращения, не открывая WordPress;
  • в команде есть внешний подрядчик, которому не нужен доступ в админку.

Если тикетов много, а сообщения в чатах начинают шуметь, лучше сразу продумать фильтрацию: отправлять только новые тикеты, а не каждое изменение статуса.

Диагностика проблемы перед настройкой

Перед кодом стоит проверить, что именно вы хотите отправлять и откуда брать данные. Это экономит время, потому что в разных установках WPtickets поля тикета могут отличаться по названию и доступности.

Что проверить в админке и в логах

  • создаётся ли тикет вообще и появляется ли он в списке;
  • есть ли у тикета заголовок, email автора и текст первого сообщения;
  • не скрывает ли кэш или security-плагин административные запросы;
  • работает ли исходящая почта и HTTP-запросы с сервера;
  • есть ли на хостинге ограничения на wp_remote_post() или внешние соединения.

Если сайт уже использует SMTP, это не мешает интеграции с чатами: здесь нужен не почтовый канал, а обычный HTTPS-запрос к API.

Какой вариант выбрать: Slack, Telegram или код

ВариантКогда подходитПлюсыМинусы
Slack Incoming WebhookКоманда работает в SlackПростой POST-запрос, легко читать сообщенияНужен рабочий webhook и канал
Telegram Bot APIНужны уведомления в чат или группуБыстро, удобно для мобильных уведомленийНужно хранить token и chat_id
Кастомный PHP-кодНужна фильтрация и контроль форматаГибкость, можно добавить логикуНужно поддерживать код

Если задача простая, достаточно одного webhook. Если нужно, например, отправлять в Telegram только тикеты с приоритетом high, без кода уже не обойтись.

Пошаговое решение через WordPress-хук

Ниже пример, который отправляет уведомление после создания тикета. Название хука у конкретной версии WPtickets может отличаться, поэтому сначала проверьте документацию плагина или список доступных действий в коде. Сама схема остаётся одинаковой: поймать событие создания тикета и отправить POST-запрос.

Пример для Slack Incoming Webhook

<?php
add_action( 'wptickets_after_ticket_created', 'wptickets_notify_slack_on_new_ticket', 10, 2 );

function wptickets_notify_slack_on_new_ticket( $ticket_id, $ticket_data ) {
    $webhook_url = 'https://hooks.slack.com/services/XXX/YYY/ZZZ';

    $title   = ! empty( $ticket_data['subject'] ) ? $ticket_data['subject'] : sprintf( 'Тикет #%d', (int) $ticket_id );
    $author  = ! empty( $ticket_data['author_email'] ) ? $ticket_data['author_email'] : 'не указан';
    $message = ! empty( $ticket_data['message'] ) ? wp_strip_all_tags( $ticket_data['message'] ) : '';

    $payload = array(
        'text' => sprintf(
            'Новый тикет #%d: %s\nАвтор: %s\nТекст: %s',
            (int) $ticket_id,
            $title,
            $author,
            mb_substr( $message, 0, 300 )
        ),
    );

    $response = wp_remote_post( $webhook_url, array(
        'timeout' => 10,
        'headers' => array(
            'Content-Type' => 'application/json; charset=utf-8',
        ),
        'body' => wp_json_encode( $payload ),
    ) );

    if ( is_wp_error( $response ) ) {
        error_log( 'WPtickets Slack notify error: ' . $response->get_error_message() );
        return;
    }

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code < 200 || $code >= 300 ) {
        error_log( 'WPtickets Slack notify HTTP code: ' . $code );
    }
}

Этот вариант хорош тем, что не требует отдельного плагина-посредника. Но webhook URL нельзя светить в публичном репозитории или в открытом сниппете.

Пример для Telegram Bot API

<?php
add_action( 'wptickets_after_ticket_created', 'wptickets_notify_telegram_on_new_ticket', 10, 2 );

function wptickets_notify_telegram_on_new_ticket( $ticket_id, $ticket_data ) {
    $bot_token = '123456789:AAExampleTokenHere';
    $chat_id   = '-1001234567890';

    $title   = ! empty( $ticket_data['subject'] ) ? $ticket_data['subject'] : sprintf( 'Тикет #%d', (int) $ticket_id );
    $author  = ! empty( $ticket_data['author_email'] ) ? $ticket_data['author_email'] : 'не указан';
    $message = ! empty( $ticket_data['message'] ) ? wp_strip_all_tags( $ticket_data['message'] ) : '';

    $text = sprintf(
        "Новый тикет #%d\nТема: %s\nАвтор: %s\nТекст: %s",
        (int) $ticket_id,
        $title,
        $author,
        mb_substr( $message, 0, 500 )
    );

    $url = sprintf( 'https://api.telegram.org/bot%s/sendMessage', $bot_token );

    $response = wp_remote_post( $url, array(
        'timeout' => 10,
        'body'    => array(
            'chat_id' => $chat_id,
            'text'    => $text,
        ),
    ) );

    if ( is_wp_error( $response ) ) {
        error_log( 'WPtickets Telegram notify error: ' . $response->get_error_message() );
        return;
    }

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code < 200 || $code >= 300 ) {
        error_log( 'WPtickets Telegram notify HTTP code: ' . $code );
    }
}

Для Telegram важно заранее добавить бота в группу и получить правильный chat_id. Если отправка идёт в супергруппу, идентификатор обычно начинается с -100.

Как не отправлять лишнее и не засорять чат

Самая частая ошибка — слать в мессенджер всё подряд: каждое изменение статуса, каждую внутреннюю заметку, каждую правку агентом. Для рабочих каналов это быстро превращается в шум.

Практичнее ограничиться такими условиями:

  • отправлять только при создании нового тикета;
  • не отправлять тикеты от внутренних пользователей или администраторов;
  • обрезать длинный текст сообщения;
  • не включать вложения в первый этап, если они могут содержать лишние данные;
  • добавить префикс по отделу или приоритету.

Если у вас есть кастомные поля, можно включить в уведомление только те, которые реально нужны оператору: номер заказа, тип проблемы, домен сайта клиента.

Проверка результата после внедрения

После добавления кода не ограничивайтесь визуальной проверкой в чате. Нужно убедиться, что запрос действительно уходит, а ответ API успешный.

  1. Создайте тестовый тикет с короткой темой и текстом.
  2. Проверьте, пришло ли сообщение в Slack или Telegram.
  3. Откройте debug.log, если включён WP_DEBUG_LOG, и посмотрите, нет ли ошибок HTTP.
  4. Проверьте, не дублируется ли уведомление при обновлении тикета.
  5. Создайте тикет с длинным текстом и убедитесь, что сообщение не ломает формат.

Если уведомление не пришло, сначала смотрите код ответа API. Для Slack и Telegram это обычно быстрее, чем искать проблему в самом WPtickets.

Частые ошибки и как их исправить

Хук не срабатывает

Причина обычно в том, что выбран не тот action или код подключён слишком поздно. Проверьте, что сниппет загружается из functions.php дочерней темы, mu-plugin или собственного мини-плагина, а не из места, которое отключается при обновлении темы.

Сообщение приходит, но без текста

Это бывает, если в массиве тикета другие ключи. Не угадывайте названия полей: временно залогируйте $ticket_data через error_log( print_r( $ticket_data, true ) ); и посмотрите структуру.

Telegram отвечает ошибкой 400

Обычно проблема в chat_id, в слишком длинном сообщении или в неподдерживаемых символах. Начните с простого текста без HTML и проверьте отправку в личный чат, а не в группу.

Slack webhook возвращает не 200

Проверьте URL webhook, активен ли он в рабочем пространстве и не был ли удалён канал. Иногда проблема банальна: webhook скопирован не полностью.

Уведомление дублируется

Значит, хук срабатывает не только на создание, но и на обновление. В таком случае нужен более точный action или дополнительная проверка, что тикет ещё не отправлялся. Для этого можно хранить флаг в метаполе тикета.

Безопасность и производительность

Не храните токены и webhook URL в публичном коде. Если проект ведётся в Git, вынесите секреты в переменные окружения или хотя бы в конфиг, который не коммитится.

Ещё один момент — не делайте внешний запрос синхронно, если тикетов очень много и сервер слабый. Для небольших сайтов это нормально, но при высокой нагрузке лучше отправлять уведомления через отложенную задачу или очередь. Иначе пользователь будет ждать завершения HTTP-запроса к Slack или Telegram прямо во время отправки тикета.

Если вам нужно дополнительно чистить админку от лишнего мусора и дублей, полезно сочетать такую интеграцию с аккуратной оптимизацией сайта. Например, в проектах на WPShop иногда используют Clearfy Pro для отключения лишних дублей и служебного шума, но саму отправку тикетов в чат он не заменяет.

Мини-чек-лист перед запуском в продакшене

  • проверен конкретный хук создания тикета;
  • webhook или bot token не лежит в открытом репозитории;
  • в сообщении нет лишних персональных данных;
  • есть логирование ошибок HTTP;
  • тестовый тикет успешно приходит в нужный канал;
  • уведомление не дублируется при редактировании тикета;
  • длинные сообщения обрезаются до разумного размера.

Если после проверки всё работает, дальше уже можно расширять логику: отправлять разные сообщения по отделам, ставить отдельные каналы для VIP-клиентов или добавлять ссылку на карточку тикета в админке WordPress.

Как создать простую классификацию тикетов в WPtickets для WordPress
22.02.2026
Как создать пользовательские свойства для тикетов в WordPress с WPtickets
26.02.2026
Как создать автоматический отчет по тикетам в WPtickets для WordPress
24.01.2026
Установка и настройка WPtickets плагина для поддержки клиентов в WordPress
24.11.2025
WooCommerce: как показывать в тикетах только заказы клиента и не раскрывать чужие данные
08.08.2026