Напоминания о новых сообщениях по инциденту

Добрый день!

Очень беспокоит вопрос появления напоминаний о создании новых E-mail сообщений по инциденту. Не знаю в какой момент, но у ответственного пользователя по инциденту появляются напоминания о том, что у инцидента появилось новое E-mail сообщение. Посмотрев деталь E-mail в инцидентах я действительно нашел там новые сообщения. Никто их туда специально не привязывал. Значит, получается, что при разборе почты каким-то образом это сообщение автоматически привязалось к инциденту. Я догадываюсь, что автоматическая привязка происходит по теме сообщения и номеру инцидента. Но это не совсем корректно, т.к. к инциденту номер 200 привязываются сообщения с темой "АКЦИЯ! Рекламный авиатур в Черногорию 200 евро!".

Как настроить корректную работу данного функционала или отключить его вообще?

Нравится

9 комментариев

"Ozzy" написал:Значит, получается, что при разборе почты каким-то образом это сообщение автоматически привязалось к инциденту. Я догадываюсь, что автоматическая привязка происходит по теме сообщения и номеру инцидента.

Да, так и есть. В скрипте scr_MailLinks это делают функции FindIncidentNumber и GetIncidentDataBySubject:

function FindIncidentNumber(Str) {
	var Mask = GetSystemParameterValueEx('IncidentMask', false);
	var NumList = Str.match(/(\d+)/g);
	if (!NumList) {
		return;
	}
	for (var i = 0; i < NumList.length; i++) {
		var Num = Mask.replace(/\%1/g, NumList[i]);
		var SafeNum = '(^|:|#|№|-|\\s+)' + NormalizeForRegex(Num) + '(\\s|\\.|$)';
		if (Str.match(new RegExp(SafeNum, 'ig'))) {
			return Num;
		}
	}
}
 
function GetIncidentDataBySubject(Subject) {
	if (!System.GetHasLicense('Incidents')) {
		return false;
	}
 
	var IncidentNumber = FindIncidentNumber(Subject);
	if (!IncidentNumber) {
	    return null;
	}
    var SelectQuery = GetSingleItemByCode('sq_GetIncidentDataByNumber',
		'MailLinks');
    SelectQuery.Parameters('IncidentNumber').Value = IncidentNumber;
    var Dataset = SelectQuery.Open();
    try {
	    if (IsDatasetEmpty(Dataset)) {
	        return null;
	    }
	    return LoadRecord(Dataset);
	} finally {
		Dataset.Close();
	}
}

Если эта логика вообще не нужна, то можно во второй функции в начале вписать return null; .

Если же хочется привязывать к инцидентам только нужные письма, можно договориться о формате номера (например, [200] или #200) и соответствующим образом модифицировать первую функцию.

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

Александр, воспользовался Вашим советом и отключил функционал полностью в функции GetIncidentDataBySubject. Но в результате по-прежнему появляются напоминания о привязанных письмах к инцидентам ((( Может еще где-то отключить надо?

Странно. То есть напоминания по новым письмам, пришедшим после изменения кода и перезапуска Аутлука?

Ну да. Изменения внес еще 20 августа, старые напоминания удалил. Но они продолжают появляться до сих пор. Тоже грешил на то, что не перезапустили программы, но уже столько времени прошло...

Ozzy, закомментируйте в function SaveMailItem(MailItem, Options) сервиса scr_MSOutlookLibrary строку:

Incident = GetIncidentDataBySubject(MailItem.Subject);

Спасибо, Наталья! Попробую закрыть таким образом. На самом деле такая функция реализуется в пяти разных скриптах. Не хотелось бы закрыть что-нибудь лишнее.

Если функция GetIncidentDataBySubject уже отключена изнутри, какой смысл отключать все её вызовы? Надо смотреть, может, похожая логика сделана ещё где-то отдельно.

Я же говорю, похожая функция реализована в 5 разных скриптах. Её реализация есть в scr_MailLinks, который Вы указали, а есть и в scr_MSOutlookLibrary, который указала Наталья. Необходимо найти правильный и заблокировать вызов.

Показать все комментарии