Как избежать дубликатов и анализировать e-mail в GLPI

Дублирующиеся заявки из-за «Ответить всем» исчезают, когда Mail Analyzer читает заголовки References и In-Reply-To письма и ещё до создания заявки решает, является ли сообщение комментарием или новой заявкой.

В этой статьеРазделов: 8

Дублирующиеся заявки возникают из-за простой детали: когда кто-то нажимает «ответить всем» в переписке с поддержкой, сборщик почты GLPI не распознаёт сообщение как часть разговора и создаёт новую заявку. Модуль Mail Analyzer перехватывает такое сообщение до создания заявки и по заголовкам самого письма решает, является ли оно новой заявкой или лишь комментарием к исходной.

Проблема: встроенный сборщик теряет цепочку

Сборщик почты GLPI связывает ответ с исходной заявкой, читая метку, которую он сам вставляет в тему уведомлений, в формате [GLPI #0000123]. Пока эта метка сохраняется в ответе, всё работает: сообщение становится комментарием к нужной заявке. Проблема появляется, когда метка теряется.

Классический сценарий — «Ответить всем». Клиент создаёт заявку и ставит руководителя в копию. Поддержка отвечает, руководитель решает прокомментировать и нажимает «Ответить всем». Его почтовый клиент переписывает тему (RE:, ENC:, FW:), обрезает метку или начинает новое письмо на основе истории — и GLPI, не найдя [GLPI #...], создаёт вторую заявку по тому же разговору.

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

Как работает Mail Analyzer

Модуль работает через хуки жизненного цикла заявки, перехватывая уже собранное письмо до того, как оно станет заявкой. Вместо того чтобы полагаться только на метку в теме, он читает стандартные заголовки письма (RFC 5322) и применяет иерархическое решение по трём стратегиям:

  • Анализ References — проверяет, ссылается ли письмо на Message-ID, созданный самим GLPI (формат GLPI_*). Если да, это законный ответ на заявку, и он становится комментарием.
  • Анализ In-Reply-To — если In-Reply-To указывает на письмо третьего лица, уже зарегистрированное модулем, а не на Message-ID GLPI, сообщение определяется как цепочка копий и блокируется.
  • Проверка первого письма — запасной вариант: если у заявки ещё нет ни одного зарегистрированного письма, это сообщение считается исходным и пропускается.

Поверх этой основы три настройки управляют поведением в реальных средах:

  • Thread-Index — улучшает обнаружение цепочек в средах Microsoft (Outlook/Exchange), которые используют этот собственный заголовок помимо In-Reply-To.
  • Block Chain Emails — более агрессивный режим, который активно блокирует ответы третьих лиц из копии. Подходит для операций с большим объёмом, применять с осторожностью.
  • Шаблон уведомления — когда письмо блокируется, отправитель получает настраиваемое уведомление с объяснением причины, что сохраняет прозрачность.

Заголовки, которые всё решают

На практике разница между комментарием и дубликатом заключается в двух строках заголовка. Пример ниже показывает оба случая рядом:

# Resposta legitima ao chamado: o cabecalho References cita o Message-ID do GLPI (GLPI_*)
# --> Mail Analyzer trata como ACOMPANHAMENTO do ticket original
Subject: [GLPI #0004521] Impressora do fiscal sem toner
Message-ID: <[email protected]>
In-Reply-To: <[email protected]>
References:  <[email protected]>

# Terceiro em copia clicou "Responder a todos":
# In-Reply-To aponta para o e-mail de OUTRO usuario, nao para um Message-ID do GLPI
# --> Mail Analyzer BLOQUEIA a criacao de um ticket duplicado
Subject: RE: Impressora do fiscal sem toner
Message-ID: <[email protected]>
In-Reply-To: <[email protected]>
References:  <[email protected]>

Возможности модуля и встроенное поведение

СитуацияВстроенный сборщик GLPIС Mail Analyzer
Ответ сохраняет метку [GLPI #id] в темеСтановится комментарием к заявкеСтановится комментарием к заявке
Третье лицо из копии отвечает «всем», и тема переписываетсяСоздаётся новая заявка (дубликат)Распознаёт цепочку по References/In-Reply-To и не дублирует
Среда Exchange, группирующая по Thread-IndexЗависит только от темы и In-Reply-ToТакже использует Thread-Index для сопоставления разговора
Письмо заблокировано как часть цепочки копийНеприменимоОтправитель получает настраиваемое уведомление
Первое письмо по новой темеСоздаёт заявкуРаспознаёт как исходное и разрешает создание

Как включить

  1. Установите плагин NexTool в GLPI и убедитесь, что сбор почты (приёмники) уже работает.
  2. Откройте Настройки > NexTool > Модули.
  3. Включите модуль Mail Analyzer.
  4. Настройте Thread-Index и Block Chain Emails в соответствии с профилем среды.
  5. Задайте шаблон уведомления для заблокированных писем.

Что мы узнали при сопровождении

При сопровождении сборщиков почты у клиентов ошибка, порождающая больше всего дубликатов, не техническая проблема GLPI, а поведенческая: руководитель в копии отвечает с телефона, приложение переписывает тему, и метка пропадает. До Mail Analyzer «исправлением» была просьба к людям не редактировать тему, что никогда не работает. Мы стали решать проблему у источника, читая References и In-Reply-To, которые почтовый клиент сохраняет, даже когда меняет тему. Деталь, которая видна только в эксплуатации: в средах Exchange включение Thread-Index даёт реальную разницу, потому что Outlook группирует разговор по этому заголовку и не всегда сохраняет чистый In-Reply-To. И практическая рекомендация: включайте Block Chain Emails постепенно и всегда с настроенным шаблоном уведомления, иначе законное письмо третьего лица блокируется молча, и никто этого не замечает, пока клиент не спросит.

Кому подходит (и когда не использовать)

Mail Analyzer подходит любой службе поддержки, которая создаёт заявки через сбор почты и работает в корпоративной среде, особенно:

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

Включать его нет смысла, если вы не используете сбор почты: если заявки поступают только через службу поддержки или через форму, перехватывать нечего. И стоит осторожно относиться к Block Chain Emails в небольших операциях, где дубликаты редки, потому что агрессивный режим может заблокировать письмо третьего лица, которое действительно должно было стать новой заявкой.

Совместимость

  • GLPI: 10.x и 11.x
  • План: FREE
  • Плагин: NexTool 3.x или выше
  • PHP: 8.0+

Mail Analyzer входит в NexTool — модульный плагин для GLPI. Чтобы увидеть модуль в вашем сценарии сбора почты, свяжитесь с командой.


Проверено командой NexTool Solutions.

Часто задаваемые вопросы

Встроенный сборщик GLPI связывает ответы с заявкой по метке [GLPI #id] в теме; если эта метка теряется, он создаёт дубликат. Модуль Mail Analyzer перехватывает письмо до создания заявки и использует заголовки References и In-Reply-To, чтобы распознать разговор и направить всё в исходную заявку.

Потому что почтовый клиент руководителя обычно переписывает тему или начинает новое письмо, удаляя метку [GLPI #id], которую GLPI использует для сопоставления ответа. Без метки сборщик не знает, что это та же цепочка, и создаёт новую заявку. Mail Analyzer решает это, читая стандартные заголовки письма, которые сохраняются при редактировании темы.

Да. Модуль работает с письмами, уже собранными GLPI, независимо от сервера (Exchange, Gmail, Zimbra и т. д.). В средах Microsoft включение опции Thread-Index улучшает обнаружение, потому что Outlook группирует разговор по этому собственному заголовку.

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

Нет. Mail Analyzer обнаруживает цепочки копий автоматически по заголовкам письма. Вы лишь включаете модуль, настраиваете Thread-Index и Block Chain Emails под свою среду и задаёте шаблон уведомления.

Нужна помощь?