ИНН организации вместо email'ов

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
N_ton
OTRS Новобранец
Сообщения: 108
Зарегистрирован: 09 авг 2012, 22:57
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Контактная информация:

ИНН организации вместо email'ов

Сообщение N_ton » 10 июн 2016, 16:23

Добрый день.
Поправьте, если не прав, 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'};
Далее следуют 2 блока по ним и ориентируемся со вставкой кода:
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 - дайте знать.
OTRS 3.3.8, Debian 7, PostgreSQL 9.1.13
OTRS 4.0.17, Debian 8, MySQL + MSSQL

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: ИНН организации вместо email'ов

Сообщение ykolesnikov » 10 июн 2016, 17:50

Ну, вообще-то, для организации клиента лучше использовать CustomerID, а почту клиента оставить, т.к. по ней идет общение клиента с системой (уведомления).
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

N_ton
OTRS Новобранец
Сообщения: 108
Зарегистрирован: 09 авг 2012, 22:57
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Контактная информация:

Re: ИНН организации вместо email'ов

Сообщение N_ton » 14 июн 2016, 10:49

Поле SenderEmailAddress остается нетронутым, вас видимо ввело в заблуждение значение 'unknown@customer.exam', его можем заменить на 'Неизвестный клиент', кому как удобнее.
И общение системы никоим образом не рушится, а продолжается по email'у отправителя.
Суть изменений в том, что мы не даем системе производить привязку тикета основываясь на адресе отправителя. Разве правильно привязывать письмо к vasya.pupkin@mail.com,
если он на самом деле является сотрудником компании "Рога и копыта"? Если система не может точно определить привязку к клиенту, значит надо указать, что это неизвестный нам клиент, и оператор уже будет понимать, что, в первую очередь, требуется идентифицировать клиента.
для организации клиента лучше использовать CustomerID, а почту клиента оставить
- это мы и попытались сделать, чтобы отрс перестал ставить email'ы клиентов в поле CustomerID.
OTRS 3.3.8, Debian 7, PostgreSQL 9.1.13
OTRS 4.0.17, Debian 8, MySQL + MSSQL

Ответить