Уведомление (эскалация) о наступлении Due Date

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

Модератор: ykolesnikov

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

Уведомление (эскалация) о наступлении Due Date

Сообщение ykolesnikov » 21 май 2012, 09:45

Добрый день!
Вновь поднимаю вопрос создания уведомления о достижении (а еще лучше - о предстоящем наступлении, по типу EscalationNotifyBefore) заявленной желаемой даты выполнения заявки.
Дата задается DynamicField или9 FreeTime в 3.0.х) - FreeTime6 с именем DueDate (Выполнить к дате) - и выводится в интерфейсах создания заявки и у клиента и у агента (телефонная заявка)

Вопрос - как уведомить агента о наступлении (или приближении наступления) события - указанной даты.

При конфигурировании уведомлений о событии, можно только создать уведомление об изменении этого поля.
В Generic Agent (Планировщик задач) - по этому полю можно фильтровать, но в задании надо указать конкретную дату или диапазон дат - поскольку задается константа, а не переменная (как я понимаю) такое задание руками надо создавать ежедневно.

Никак не пойму с какой стороны подступиться к этой проблеме, а было бы здорово иметь такой механизм. :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

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

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение ykolesnikov » 22 май 2012, 08:58

Нет идей? :cry:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение alexus » 22 май 2012, 09:22

Легкий кастом эскалаций поможет :D
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение ykolesnikov » 22 май 2012, 09:29

Алексей, а чуть подробней! :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение alexus » 22 май 2012, 12:02

Есть системный модуль, который отвечает за эскалацию. Надо "попросить" его понаблюдать за этим полем. Мы такое не делали, но думаю проблем не должно быть.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение ykolesnikov » 07 июн 2012, 13:00

О.К.
Коллега из Латвии на аглицком форуме выдал идею и, мне кажется, она продуктивна.
Суть в том, чтобы создать дополнительно скрытое динамическое поле и написать функцию в GenericAgent.pm, которая бы вычисляла разность между DueDate и текущим временем. При достижении разницы некоторой дельты это скрытое поле обновляется (любое желаемое значение). Далее настраиваем уведомление о событии DynamicField_DueDateUpdate (оно есть есть для созданного поля DueDate)
Приведенный ниже кусок кода возвращает значение в форме '2012-01-01 00:00:01'
Необходимые функции:

Код: Выделить всё

 Select all
    my ( $s, $m, $h, $D, $M, $Y ) = $Self->{TimeObject}->SystemTime2Date(
            SystemTime => $Self->{TimeObject}->SystemTime(),
        );
    my $Date   = "$Y-$M-$D $h:$m:$s";
    my $Diff    = $Param{DueDate}-$Date;
После этого надо создать задание для Generic Agent
Примерно так.
Поскольку программист я никакой, предлагаю сообществу доработать эту тему превратив в реальный код и статью в Howtos. :oops: :)
Коллега из Латвии, обещал код, но он пока где-то в отсутствии.
Надеюсь, это будет полезно.
Оригинал здесь - http://forums.otterhub.org/viewtopic.php?f=53&t=15492
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Artjoms
OTRS Новобранец
Сообщения: 34
Зарегистрирован: 06 окт 2011, 17:36
Откуда: Latvija

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение Artjoms » 18 июн 2012, 17:45

Здрасте!
Вооот, нашёл наконец-то этот модуль, заодно переписал его с фрифилдов на динамикфилды. Сразу предупреждаю - это абсолютно грязнейший хардкод, и я его написал, только потому что это был единичный случай использования, которому не надо было переживать миграцию... так что Use on your own risk :D:D:D

Module Kernel::System::GenericAgent.pm

Код: Выделить всё

++ ::815::830::
  my $Ticket = "($Param{TicketNumber}/$Param{TicketID})";

			my %TicketData = $Self->{TicketObject}->TicketGet(
			TicketID => $_, 
			DynamicFields => 1, 
	);
	my $DueDate = 1;
	if($TicketData{DynamicField_TicketFreeTime6}){
		 $DueDate   = $Self->{TimeObject}->TimeStamp2SystemTime(
        String => $TicketData{DynamicField_TicketFreeTime6},
    ); 
     
    } 
	my $CurrentDate = $Self->{TimeObject}->SystemTime();

    my $Diff    = $DueDate - $CurrentDate;

++ ::1124::1135::
	   $Self->{LogObject}->Log( Priority => 'error', Message => "Difereneceis  $Diff Currentdate is $CurrentDate DueDate is $DueDate ticketid is $Param{TicketID} dnname - $DynamicFieldConfig->{Name}");
		if($DynamicFieldConfig->{Name} eq 'dummmmy') {	
			    

			 $Success = $Self->{BackendObject}->ValueSet(
                DynamicFieldConfig => $DynamicFieldConfig,
                ObjectID           => $Param{TicketID},
                Value              => 'insertyourtexthere',
                UserID             => 1,
            );
		
		}

Ну и сам модуль в аттачменте
GenericAgent.zip
(7.21 КБ) 291 скачивание
Smile :)
----------------------------------------
Artjoms Petrovs
System Analyst / Системный Аналитик
Software Developer / Разработчик Информационных Систем
----------------------------------------
OTRS 5 Patch Level 9

yuri0001
OTRS Бывалый
Сообщения: 492
Зарегистрирован: 11 фев 2011, 20:25
Откуда: Череповец

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение yuri0001 » 18 июн 2012, 19:11

Добрый вечер!
Большое спасибо. Испробуем. Нужная вещь.Еще раз спасибо! :D
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

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

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение ykolesnikov » 31 авг 2012, 13:24

Добрый день!
Наконец дошли руки позаниматься этой доработкой и сразу появились вопросы.
Поскольку в Perl я практически не смыслю :roll:
1. В первой части вставляемого кода вычисляется значение разницы между текущей датой и введенным значением динамического поля TicketFreeTime6 (его можно/нужно заменить на свое имя если оно отличается от этого). По описанной ранее идее, далее должна следовать проверка этой разницы с некоей дельтой (константой) и если она меньше этой дельты, то другому скрытому динамическому полю, скажем DueDateReached присваивается некое, любое значение, служащее лишь одной цели - инициировать событие изменения этого поля - TicketDynamicFieldUpdate_DueDateReached.
Вот этого кода я не вижу (если я правильно все понимаю), а правильно его написать не могу в силу :ugeek: в Perl

2. Во второй части вставляемого кода во фразе -

Код: Выделить всё

 if($DynamicFieldConfig->{Name} eq 'dummmmy')
видимо надо вставить имя своего поля - DueDateReached вместо dummmmy?
Ну и, наконец, в фразе -

Код: Выделить всё

Value => 'insertyourtexthere'
- ничего менять, наверное, необязательно т.к. его достаточно, лишь бы поле обновилось?

3. В каком виде надо задавать дельту - секундах или других единицах и в каком формате? Просто количество единиц или что-то типа НН:ММ:SS или как-то еще?
:oops: :oops: :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

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

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение ykolesnikov » 18 окт 2012, 12:36

Ну что коддеги, так никто и не заинтересовался?
Вариант, что привел "Artjoms", с моими данными не заработал. Идею считаю по-прежнему продуктивной, а знаний не хватает, увы.
Мне представляется сама тема полезной, может кто доведет до ума?
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

yuri0001
OTRS Бывалый
Сообщения: 492
Зарегистрирован: 11 фев 2011, 20:25
Откуда: Череповец

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение yuri0001 » 11 ноя 2012, 15:06

Так никого и не заинтересовала тема? :x
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

masalexven
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 06 ноя 2012, 15:57

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение masalexven » 11 ноя 2012, 15:21

ykolesnikov писал(а):Ну что коддеги, так никто и не заинтересовался?
Вариант, что привел "Artjoms", с моими данными не заработал. Идею считаю по-прежнему продуктивной, а знаний не хватает, увы.
Мне представляется сама тема полезной, может кто доведет до ума?
Присоединяюсь, а лучше еще и SMS посылать, т.к. выездной специалист бОльшую часть времени на выездах и смотреть свою почту может только урывками. :)
OTRS 3.1.11 ITSM 3.1.6 FreeBSD

merkushov
OTRS Бывалый
Сообщения: 310
Зарегистрирован: 25 окт 2012, 15:06
Откуда: Воронеж
Поблагодарили: 2 раза

Re: Уведомление (эскалация) о наступлении Due Date

Сообщение merkushov » 12 ноя 2012, 09:42

yuri0001 писал(а):Так никого и не заинтересовала тема? :x
Возможно, годика через пол. Сейчас подобной задачи не стоит.
Меркушов Виктор, perl программист

Ответить