Поправьте, если не прав, OTRS при разборе почты ориентируется в первую очередь на email клиента и в соответствии с email'ом назначает CustomerUser.
Но бывают специфичные случаи, как например у нас, несколько клиентов могут обращаться от лица одной компании(один ИНН), они могут меняться также стремительно как и курс валюты,поэтому у нас идет привязка по ИНН.
Для того чтобы OTRS искал ИНН в теме письма предлагаю следующий код. Подходит как и для 3.3.х , так и 4.0.х
Схема работы:
1. Смотрим Тему письма , если есть 1 ИНН - присваиваем его как CustomerUser, если нет - идем в п.2.
2. Смотрим Тело письма, если есть 1 ИНН - присваиваем его как CustomerUser, если нет - идем в п.3.
3. Присваиваем CustomerUser - 'unknown@customer.exam'
Данный код отрабатывает перед обработкой операторами, поэтому в любом случае будет исправлено, если вдруг чего.
Почему ИНН - потому что далее идет подтягивание из внутренних БД клиентов, и в итоге мы получаем красивую картинку с наименованием клиента и плюс история общения по организации сохранится в любом случае.
Собственно сам код, если есть программеры - не пинайте, это второй код на Perle вообще.
Правки вносятся в файл /opt/otrs/Kernel/System/Postmaster/NewTicket.pm
Код: Выделить всё
# присваиваем ИНН из Темы и Тела
my @inn_subject = (); # определяем 2 массива данных
my @inn_body = ();
my $str_subject = $GetParam{Subject};
my $str_body = $GetParam{Body};
@inn_subject=$str_subject=~m/(\b[0-9]{10,12}\b)/g; # поиск ИНН 10 или 12 знаков в ТЕМЕ
@inn_body=$str_body=~m/(\b[0-9]{10,12}\b)/g; # поиск ИНН 10 или 12 знаков в ТЕЛЕ
my $size_subject = @inn_subject; # присваиваем размер массива переменной
my $size_body = @inn_body;
if ( $size_subject == 1 ) # Если количество элементов в массиве равно 1
{
$GetParam{'X-OTRS-CustomerNo'} = shift @inn_subject;
}
elsif ( $size_body == 1 )
{
$GetParam{'X-OTRS-CustomerNo'} = shift @inn_body;
} else {
$GetParam{'X-OTRS-CustomerNo'} = "'unknown\@customer.exam'";
}
$GetParam{'X-OTRS-CustomerUser'} = $GetParam{'X-OTRS-CustomerNo'};
1. # if there is no customer id found!
2. # if there is no customer user found!
их нужно закомментить, ну и апач в рестарт.
Сразу же отвечаю на возможное замечание про правку файлов в Kernel/System/Postmaster/, а не в /opt/otrs/Custom/Kernel/System/Postmaster/ - не срабатывает, почему еще не понял, но если у кого запустится именно из Custom - дайте знать.