Перейти к содержанию

Оценки клиентов

Когда заявка решена, Helpdesk Pro может спросить клиента «How did we do?» с тремя ответами в один клик: Great, Okay и Not good. Вопрос есть в письме о решении и на странице обращения клиента. Клиент может добавить комментарий и некоторое время менять ответ. Сотрудники видят ответ в заявке, списке заявок и на экране Ratings; другие клиенты его никогда не видят.

Включение оценок

  1. Откройте страницу настроек плагина и перейдите на вкладку Ratings.
  2. Включите Ask for Ratings (csat.enabled).
  3. При желании перечислите слаги проектов, в которых нужно спрашивать (csat.projects); пустое значение спрашивает во всех проектах.
  4. Сохраните.

Кого спрашивают и когда

  • Когда: каждый раз, когда заявка переходит в решённый статус. Это открывает один опрос для этого решения. Если заявку открыть снова и решить ещё раз, появится новый опрос, поэтому обращение собирает один ответ на каждое решение.
  • Кого: только заявителя, и только если он клиент. Клиент в копии получает то же письмо о решении без ссылок, а обращение, которое сотрудник открыл для себя, никогда не оценивается.
  • Сколько действует: csat.token_days (14 дней) с момента решения. После этого ссылки в письме перестают работать, а страница обращения перестаёт спрашивать. Повторное открытие обращения сразу закрывает опрос.
  • Кому засчитывается: каждый опрос засчитывается одному сотруднику: исполнителю заявки на момент решения или, если исполнителя не было, сотруднику, который её решил. Если клиент сам отмечает своё неназначенное обращение решённым или это делает автоматизация, никому не засчитывается.

Заявка, решённая при выключенных оценках или в проекте, где оценки не спрашивают, не получает опроса.

Письмо

В письме client-resolved есть строка «How did we do?» с тремя ссылками в HTML- и текстовой части:

How did we do?
Great: https://example.com/help/rate/Xb3…?r=great
Okay: https://example.com/help/rate/Xb3…?r=okay
Not good: https://example.com/help/rate/Xb3…?r=not_good

Ссылки несут токен, созданный для этого письма. Helpdesk Pro хранит только его хеш, поэтому копия базы данных ничего не сможет оценить. Токен работает для одного обращения и одного человека без входа, пока опрос открыт.

Ссылки отрисовываются шаблоном templates/emails/helpdesk/partials/csat.html.twig. Тема может изменить их оформление, добавив свою копию этого partial.

Почтовые системы открывают ссылки раньше людей. Outlook Safe Links, сканеры Gmail и корпоративные почтовые шлюзы запрашивают каждую ссылку в сообщении для проверки. Если бы открытие ссылки оценки записывало оценку, каждое просканированное письмо приходило бы уже оценённым, часто как «Not good», потому что сканер открывает все три ссылки, и побеждает последняя. Поэтому клик разделён на два шага:

  1. GET {mount}/rate/{token}?r=great только показывает страницу. Он ничего не записывает, даже «ссылка была открыта». Страница показывает три ответа с выбранным тем, что был в письме.
  2. Небольшой скрипт на странице сразу отправляет этот ответ, поэтому для человека клик в письме остаётся единственным кликом. Если вкладка открылась в фоне, скрипт ждёт, пока человек на неё посмотрит. Без JavaScript страница говорит «Press your answer to send it».
  3. POST {mount}/rate/{token} записывает ответ, после чего страница благодарит и предлагает поле комментария.

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

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

Страница оценки

{mount}/rate/{token} отрисовывает templates/helpdesk/rate.html.twig внутри страницы справочного центра со стилями портала, поэтому она следует светлому или тёмному режиму сайта. На ней показано:

  • До ответа: «How did we do?», тема обращения и три ответа.
  • После ответа: «Thanks for your feedback», данный ответ, кнопки для его изменения и поле комментария. После «Not good» поле спрашивает «Sorry to hear that. What could we have done better?», если включён csat.ask_comment_on_not_good. Также указано, до какого момента ответ можно изменить.
  • Ссылка, которой нельзя воспользоваться: объясняется почему (неизвестная, истёкшая, обращение снова открыто, решено заново или оценки выключены для его проекта) и даётся ссылка на обращение или справочный центр.

Комментарий может быть до 2 000 символов. Отправка пустого комментария очищает его.

На странице обращения

Вошедший клиент, смотрящий на своё решённое обращение, видит тот же блок «How did we do?» в начале переписки, пока опрос открыт. Клиент, который сам отметил своё обращение решённым, не получает письма о решении, поэтому его спрашивают здесь. Клиенты в копии и другие клиенты никогда не видят этот блок, ответ или комментарий.

В рабочей области

  • Карточка Rating в заявке показывает ответ цветной плашкой, комментарий, кому засчитано, когда ответили и может ли клиент ещё изменить ответ. Ответы прошлых решений перечислены под ней.
  • Список заявок показывает небольшую отметку рядом с темой оценённой заявки.
  • Ratings (#/ratings, в разделе Work, отображается при включённых оценках) перечисляет ответы, начиная с новых, с чипами для каждого ответа, With a comment, Credited to me и фильтром по проекту. Каждая строка открывает заявку.

Любое представление рабочей области показывает оценки только по заявкам в проектах, где работает сотрудник. Отчёты показывают оценку и долю ответивших (см. Отчёты).

Уведомления «Not good»

Когда включён csat.notify_not_good, новый ответ «Not good» звонит в колокольчик сотрудника, которому засчитана оценка: «Cleo rated “Invoice missing” Not good». Это считается адресованным ему, поэтому при уровне aimed по умолчанию также отправляется по почте, если он не прочитает раньше. Изменение комментария или повторный ответ «Not good» не звенит снова. Если никому не засчитано, никто не уведомляется.

Оценки также работают в правилах: The client rates the ticket и The client comments on their rating — триггеры, а Rating и Rating comment — условия. Например: «Когда клиент ставит Not good, добавить заметку и назначить тимлиду».

Настройки

На вкладке Ratings настроек плагина:

Ключ По умолчанию Что делает
csat.enabled false Спрашивать оценки вообще.
csat.projects [] Слаги проектов, где спрашивать. Пусто — спрашивать во всех проектах.
csat.token_days 14 Сколько опрос остаётся открытым.
csat.ask_comment_on_not_good true После «Not good» спрашивать «What could we have done better?» вместо тихого необязательного комментария.
csat.notify_not_good true Ответ «Not good» уведомляет сотрудника, которому засчитана оценка.

Выключение оценок останавливает новые опросы, а ссылки в уже отправленных письмах начинают говорить «Ratings are closed». Уже данные ответы сохраняются.

Конфиденциальность

Оценки и комментарии — персональные данные, и они участвуют в объединении и удалении:

  • Объединение двух людей: оценки, которые дал один, оценки, засчитанные ему, и его открытые ссылки на оценку переходят к сохраняемому человеку.
  • Удаление (anonymize): его ссылки на оценку удаляются, а каждая данная им оценка теряет комментарий и связь с ним. Ответ остаётся анонимной цифрой.
  • Удаление (delete_content): данные им оценки удаляются.
  • Удаление сотрудника сохраняет его заслуги по оценкам под «Erased person #id».

Истёкшие ссылки на оценку удаляются ежедневным заданием maintenance.prune.

API и MCP

Только для сотрудников. Клиенты никогда не попадают на эти маршруты.

Маршрут Право Запрос Ответ Инструмент MCP
GET /helpdesk-pro/ratings desk rating (great, okay, not_good), project, staff (id человека, me или none), from, to, comment=1, answered (1, 0 или all), page, per_page Строки {id, round, rating, label, comment, source, asked_at, rated_at, updated_at, staff, ticket, requester_id, person_id}; meta.counts по ответам и meta.enabled list_ratings
GET /helpdesk-pro/ratings/summary reports Как выше, плюс group (staff или project) {counts, answered, asked, score, response_rate, from, to}, а при группировке — groups get_ratings_summary
GET /helpdesk-pro/tickets/{id}/rating desk Новейший опрос заявки или null, если её никогда не спрашивали get_ticket_rating

score — доля ответов Great в целых процентах, а response_rate — доля опросов, получивших ответ.

Полезная нагрузка заявки в API несёт оценку в extra.csat. Сотрудники, работающие с заявкой, получают полный ответ с open, expires_at и earlier. Заявитель, читающий своё обращение, получает {rating, label, comment, rated_at, open}. Все остальные не получают ключа csat.