Время решения заявки задать агентом
Модератор: ykolesnikov
Время решения заявки задать агентом
Здравствуйте.
Заявки создаются агентами через Заявки->Новая телефонная заявка.
Каким образом сделать так чтобы агент который ее создает ставил время выполнения заявки?
Тоесть сегодня он завел заявку и ее нужно выполнить(по его мнению) за 2 дня, завел заявку и через 2 дня если заявка не закрыта пришло уведомление, типо АЛАРМ! нужно закрывать или чтото делать.
А в следующий раз он заводит заявку и он считает что ее нужно решить через 1 день. и все по той же схеме напоминания.
Как реализовать это?
PS время решения я так же видел в настройках очереди, но это не подходит т.к. на каждую заявку в очереди может быть разное решение.
Заявки создаются агентами через Заявки->Новая телефонная заявка.
Каким образом сделать так чтобы агент который ее создает ставил время выполнения заявки?
Тоесть сегодня он завел заявку и ее нужно выполнить(по его мнению) за 2 дня, завел заявку и через 2 дня если заявка не закрыта пришло уведомление, типо АЛАРМ! нужно закрывать или чтото делать.
А в следующий раз он заводит заявку и он считает что ее нужно решить через 1 день. и все по той же схеме напоминания.
Как реализовать это?
PS время решения я так же видел в настройках очереди, но это не подходит т.к. на каждую заявку в очереди может быть разное решение.
Ubuntu 12.04, OTRX 3.2.9, MySQL
-
- OTRS Гуру
- Сообщения: 3119
- Зарегистрирован: 24 дек 2010, 09:27
- Откуда: Череповец
- Благодарил (а): 4 раза
- Поблагодарили: 5 раз
- Контактная информация:
Re: Время решения заявки задать агентом
Есть стандартное динамическое поле, не помню как в оригинале, я его переназвал DueDate - выполнить к дате. В него можно заносить желаемую дату выполнения. Проблема в том, что по наступлению этой даты, т.е по значению этого поля нет события для настройки уведомления.
Я поднимал эту тему в - viewtopic.php?f=2&t=1062, там даже изложен подход к реализации. Но поскольку я сам не программист в Perl, то решения, пока, так и нет.
Если возьметесь довести до ума, будет здорово. Думаю, многие будут благодарны.
Я поднимал эту тему в - viewtopic.php?f=2&t=1062, там даже изложен подход к реализации. Но поскольку я сам не программист в Perl, то решения, пока, так и нет.
Если возьметесь довести до ума, будет здорово. Думаю, многие будут благодарны.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая
Re: Время решения заявки задать агентом
В моей версии в планировщике задач, появилось мое динамическое поле в фильтре заявок.
НО! там можно выбрать только диапазон "между", что естественно не подходит, потому что я не могу задать диапазон.
следовательно нужно как то сделать графу "за последние", как например для граф, создана, или ожидание.
Я создал поле с параметром типа "Data/Time".
НО! там можно выбрать только диапазон "между", что естественно не подходит, потому что я не могу задать диапазон.
следовательно нужно как то сделать графу "за последние", как например для граф, создана, или ожидание.
Я создал поле с параметром типа "Data/Time".
Ubuntu 12.04, OTRX 3.2.9, MySQL
-
- OTRS Гуру
- Сообщения: 5203
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 94 раза
- Поблагодарили: 84 раза
Re: Время решения заявки задать агентом
Нужен кастом для создания события эскалации для динамического поля. По умолчанию таких свойств у дин. полей типа Дата и Время нет.
С уважением,
Алексей Юсов
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? Спросите меня как!
Алексей Юсов
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? Спросите меня как!
Re: Время решения заявки задать агентом
Коллеге, автору темы. Я уже писал выше, почитайте тему по ссылке. Там есть описание метода доработки, надо только реализовать схему. Настройками - не решается задача.alexus писал(а):Нужен кастом для создания события эскалации для динамического поля. По умолчанию таких свойств у дин. полей типа Дата и Время нет.
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
-
- OTRS Гуру
- Сообщения: 5203
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 94 раза
- Поблагодарили: 84 раза
Re: Время решения заявки задать агентом
Кто готов проспонсировать разработку?
С уважением,
Алексей Юсов
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? Спросите меня как!
Алексей Юсов
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? Спросите меня как!
Re: Время решения заявки задать агентом
Я разбираюсь модулем GenericAgent.pm, как по ссылке написано.
Идея понятна.
Но вот как можно дебажить этот pm, например там вычисляется разница во времени, поэтому вопрос как например эту переменную записать в файл чтобы посмотреть что вообще туда пишется.
PS и так же как посмотреть LogObject->Log, т.к. Просматривается этот объект где находится ошибка что время не соответствует, как просмотреть что в этот Лог падает.
Идея понятна.
Но вот как можно дебажить этот pm, например там вычисляется разница во времени, поэтому вопрос как например эту переменную записать в файл чтобы посмотреть что вообще туда пишется.
PS и так же как посмотреть LogObject->Log, т.к. Просматривается этот объект где находится ошибка что время не соответствует, как просмотреть что в этот Лог падает.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
В общем что получается.
1. добавил в GenericAgent.pm блок который обрабатывает разницу в датах и блок который должен менять значение у дополнительного динамического поля.
2. Блок даты, тоесть изменения даты работает нормально(как было в примере по ссылке, даты вычислить не может значит пишет в лог ошибку). До этого блока обрабатывает нормально, тоесть в логах появляются записи об нужных ошибках, для каждого динамического поля.
3. Когда блок пишет в лог очередное сообщение, в это время проверяем имя динамического поля, если оно соответствует моему дополниительному тогда заходим в блок смены параметра.
4. Блок смены значения.
5. Потом когда все отрабатывает, в заявке(Предворительно динамическое поле которое изменяется я сделал видимым в заявке) и значение не меняется.
Каким образом можно поменять значение через perl у моего динамического поля.
1. добавил в GenericAgent.pm блок который обрабатывает разницу в датах и блок который должен менять значение у дополнительного динамического поля.
2. Блок даты, тоесть изменения даты работает нормально(как было в примере по ссылке, даты вычислить не может значит пишет в лог ошибку). До этого блока обрабатывает нормально, тоесть в логах появляются записи об нужных ошибках, для каждого динамического поля.
3. Когда блок пишет в лог очередное сообщение, в это время проверяем имя динамического поля, если оно соответствует моему дополниительному тогда заходим в блок смены параметра.
4. Блок смены значения.
Код: Выделить всё
$Success = $Self->{BackendObject}->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $Param{TicketID},
Value => 'Тут вставляю мой параметр текстовый',
UserID => 1,
);
Каким образом можно поменять значение через perl у моего динамического поля.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Код: Выделить всё
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;
Чтобы в дальнейшем расчитать разницу.
Тоесть в кусок
Код: Выделить всё
if($TicketData{DynamicField_TicketFreeTime6})
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Пока проблему решить не удалось, т.к. остается непонятки с типом данных которые устанавливается в динамическом поле.
Если кто знает какой нужно тип данных подставлять напишите, как бы только в этом получается проблема.
Спасибо.
Если кто знает какой нужно тип данных подставлять напишите, как бы только в этом получается проблема.
Спасибо.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Исходя из задачи, т. е. - оповещение о наступлении установленной даты/времени исполнения заявки - и использования для этого динамических полей, варианта два - у дин. полей таких типов полей всего два - Date и Date/Time. Что они возвращают в программе, думаю, при знании языка, труда не составит- присвойте значение и выведите на экран/печать. Соответственно, при сравнении с системными датами нужно приводить к единому виду. (Это мнение давно не программиста).
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Re: Время решения заявки задать агентом
так а что ранее писалось про
что это за тип?
или нужно использовать DynamicField_Date/Time ?
Код: Выделить всё
DynamicField_TicketFreeTime6
или нужно использовать DynamicField_Date/Time ?
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Я так понимаю - нужно просто зайти в описание этого поля и посмотреть его тип. Просто это поле изначально настроено на это понятие - Due Date - выполнить к дате. Я пока не встречал, чтобы оно где - то использовалось в стандартном функционале и ITSM, но ничто не мешает создать и свое поле и использовать для этой цели. Суть изложенной идеи и метода решения не меняется.
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Re: Время решения заявки задать агентом
Так, в общем получилась эта часть.
В итоге получается что переменная называется "DynamicField_*Name*", гду *Name* - это имя динамического поля, и пихаем ее в переменную, и все нормально(не нужны теперь получается FreeTime или FreeText), ну это для версии 3.2.9.
Получается что у меня есть две переменных, одна с текущей датой другая с датой динамического поля, я делаю разницу их, и если переменная отрицательная то тогда меняем значение поля(данное действие, изменение значения, производиться с любой опирацией планировщика).
Поэтому нужно создать еще одно задание которое бы чтото меняла в заявке, чтобы на это реагировало Уведомление событий.
Теперь следующая беда: как сделать уведомления.
1) Сделать свое собственное событие, так чтобы после смены типа скрытого динамического поля это событие срабатывало в уведомлении.
2) Сделать как то через планировщик задач, но сделать отправку через пользовательский модуль, на прямую командой sendmail(тогда как вставить e-mail нужного агента).
3) Создать новое состояние, так чтобы когда заявка находится в этом состоянии то тогда АЛЕС! Уведомлятор на него сработает(Тогда как скрыть это состояние, тоесть не дать его устанавливать агентам)
3) Ваши предложения.
В итоге получается что переменная называется "DynamicField_*Name*", гду *Name* - это имя динамического поля, и пихаем ее в переменную, и все нормально(не нужны теперь получается FreeTime или FreeText), ну это для версии 3.2.9.
Получается что у меня есть две переменных, одна с текущей датой другая с датой динамического поля, я делаю разницу их, и если переменная отрицательная то тогда меняем значение поля(данное действие, изменение значения, производиться с любой опирацией планировщика).
Поэтому нужно создать еще одно задание которое бы чтото меняла в заявке, чтобы на это реагировало Уведомление событий.
Теперь следующая беда: как сделать уведомления.
1) Сделать свое собственное событие, так чтобы после смены типа скрытого динамического поля это событие срабатывало в уведомлении.
2) Сделать как то через планировщик задач, но сделать отправку через пользовательский модуль, на прямую командой sendmail(тогда как вставить e-mail нужного агента).
3) Создать новое состояние, так чтобы когда заявка находится в этом состоянии то тогда АЛЕС! Уведомлятор на него сработает(Тогда как скрыть это состояние, тоесть не дать его устанавливать агентам)
3) Ваши предложения.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Событие - TicketDynamicFieldUpdate_Имя поля. Здесь должно быть имя динамического поля (скрытого, в рабочем варианте), значение которого Вы будете менять при достижении установленной даты. Поэтому никакого нового события изобретать не надо, это стандартное событие в Вашей системе и присутствует для имеющихся динамических полей, в т. ч. и пользовательских.
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
-
- OTRS Гуру
- Сообщения: 5203
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 94 раза
- Поблагодарили: 84 раза
Re: Время решения заявки задать агентом
Если использовать стандартную системную функцию по обновлению значения динамического поля, то уведомление на событие, о котором говорил Юрий, сработает железно.
С уважением,
Алексей Юсов
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? Спросите меня как!
Алексей Юсов
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? Спросите меня как!
Re: Время решения заявки задать агентом
Спасибо.
Да действительно такие события есть. Я их сразу не заметил.
Ну вот и отлично буду пробовать.
Да действительно такие события есть. Я их сразу не заметил.
Ну вот и отлично буду пробовать.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
А если динамическое поле меняется из скрипта из GenericAgent.pm, событие TicketDynamicFieldUpdate_Имя поля разве сработает.
В общем у меня не срабатывает, то есть поле скриптом сменилось, а событие так и не сработало...
В чем может быть подвох?
В общем у меня не срабатывает, то есть поле скриптом сменилось, а событие так и не сработало...
В чем может быть подвох?
Ubuntu 12.04, OTRX 3.2.9, MySQL
-
- OTRS Гуру
- Сообщения: 5203
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 94 раза
- Поблагодарили: 84 раза
Re: Время решения заявки задать агентом
Подвох может быть в чем угодно. НО не видя кода, трудно что-либо сказать.
С уважением,
Алексей Юсов
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? Спросите меня как!
Алексей Юсов
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? Спросите меня как!
Re: Время решения заявки задать агентом
Вот код:
В интерфейсе видно что динамическое полу меняется, раньше было пустое а после срабатывания планировщика, там становиться нужное мне значение.
Но всеравно уведомление не срабатывает.
PS изменение значения динамического поля, является его обновлением? и уведомление сработает на это событие... так вопрос на засыпку...
Код: Выделить всё
my $Ticket = "($Param{TicketNumber}/$Param{TicketID})";
my %TicketData = $Self->{TicketObject}->TicketGet(
TicketID => $_,
DynamicFields => 3, # тут номер моего динамического поля...
);
$Success = $Self->{BackendObject}->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $Param{TicketID},
Value => 'Тут вставляю мой параметр текстовый',
UserID => 1,
);
Но всеравно уведомление не срабатывает.
PS изменение значения динамического поля, является его обновлением? и уведомление сработает на это событие... так вопрос на засыпку...
Ubuntu 12.04, OTRX 3.2.9, MySQL
-
- OTRS Гуру
- Сообщения: 5203
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 94 раза
- Поблагодарили: 84 раза
Re: Время решения заявки задать агентом
Код: Выделить всё
=item ValueSet()
sets a dynamic field value. This is represented by one or more rows in the dynamic_field_value
table, each storing one text, date and int field. Please see how they will be returned by
L<ValueGet()>.
my $Success = $DynamicFieldValueObject->ValueSet(
FieldID => $FieldID, # ID of the dynamic field
ObjectID => $ObjectID, # ID of the current object that the field
# must be linked to, e. g. TicketID
Value => [
{
ValueText => 'some text', # optional, one of these fields must be provided
ValueDateTime => '1977-12-12 12:00:00', # optional
ValueInt => 123, # optional
},
...
],
UserID => $UserID,
);
=cut
С уважением,
Алексей Юсов
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? Спросите меня как!
Алексей Юсов
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? Спросите меня как!
Re: Время решения заявки задать агентом
Ну и как? Что-нибудь получилось, наконец? Или "Караул устал"?
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Re: Время решения заявки задать агентом
Нет, пока решить не удалось, всеравно уведомление не срабатывает на изменение поля из GeneralAgent.pm.
Хотя поле нормально изменяется из этого модуля, по достижению нужных мне результатов.
А вот оповещение на почту сделать как? Событие изменения динамического поля не срабатывает, видимо нужно еще чтото гдето подправить/добавить чтобы срабатывало.
Кто знает что, как работает механизм отслеживания срабатывания событий пишите.
Спасибо всем за помощь.
Хотя поле нормально изменяется из этого модуля, по достижению нужных мне результатов.
А вот оповещение на почту сделать как? Событие изменения динамического поля не срабатывает, видимо нужно еще чтото гдето подправить/добавить чтобы срабатывало.
Кто знает что, как работает механизм отслеживания срабатывания событий пишите.
Спасибо всем за помощь.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Протестировав систему еще раз получается что все работает.
в общем хот мысли понятен из всего вышеперечисленного.
Загвоздка была на самом деле в одинарных ковычках. Тоесть в файле GenericAgent.pm прискаевать значение(текстовое) нужно через простые одинарные кавычки(например 'text' ).
В итоге изменение динамического поля(событие) срабатывает, и уведомление улетает на почту агенту.
План действий:
1) создали 2 динамических поля. 1 поле которое устанавливается с датой(выполнить до какого то срока), 2 будет само проверяемое и изменяемое значение(тоесть мы его будем менять при достижении нужной даты)
2) настраиваем видимость поля даты в заявках( у меня это просто в телефонной заявке новой Ticket::Frontend::AgentTicketPhone###DynamicField).
3) Так теперь дописываем нужные куски кода в GenericAgent.pm( тоесть при достижении отрицательного значения в разнице текущей даты и заданой "выполнить до", будем менять значените текстового динамического поля, не забываем про одинарные ковычки)
4) Устанавливаем планировщик, на пустое срабатывание(если у вас никаких планировщиков нет), если какие то другие планировщики есть, то код в GenericAgent будет срабатывать вместе с любым планировщиком, тем самым если достигнута разница в датах, то все отлично.
5) Делаем новое уведомление, и настраиваем его на обновление Вашего текстового динамического поля, на отправку почты.
6) В общем то и все.
в общем хот мысли понятен из всего вышеперечисленного.
Загвоздка была на самом деле в одинарных ковычках. Тоесть в файле GenericAgent.pm прискаевать значение(текстовое) нужно через простые одинарные кавычки(например 'text' ).
В итоге изменение динамического поля(событие) срабатывает, и уведомление улетает на почту агенту.
План действий:
1) создали 2 динамических поля. 1 поле которое устанавливается с датой(выполнить до какого то срока), 2 будет само проверяемое и изменяемое значение(тоесть мы его будем менять при достижении нужной даты)
2) настраиваем видимость поля даты в заявках( у меня это просто в телефонной заявке новой Ticket::Frontend::AgentTicketPhone###DynamicField).
3) Так теперь дописываем нужные куски кода в GenericAgent.pm( тоесть при достижении отрицательного значения в разнице текущей даты и заданой "выполнить до", будем менять значените текстового динамического поля, не забываем про одинарные ковычки)
4) Устанавливаем планировщик, на пустое срабатывание(если у вас никаких планировщиков нет), если какие то другие планировщики есть, то код в GenericAgent будет срабатывать вместе с любым планировщиком, тем самым если достигнута разница в датах, то все отлично.
5) Делаем новое уведомление, и настраиваем его на обновление Вашего текстового динамического поля, на отправку почты.
6) В общем то и все.
Ubuntu 12.04, OTRX 3.2.9, MySQL
Re: Время решения заявки задать агентом
Очень радостно, что у Вас заработало
Однако, идея была понятна и ранее.
Если Вас не затруднит, коллега, сочините тему для Howtos, с текстом изменений/дополнений в GenericAgent.pm, ну и, аналогично Вашему описанию в этой теме, с изложением методики по полочкам. Надеюсь, это выполнимо?
Однако, идея была понятна и ранее.
Если Вас не затруднит, коллега, сочините тему для Howtos, с текстом изменений/дополнений в GenericAgent.pm, ну и, аналогично Вашему описанию в этой теме, с изложением методики по полочкам. Надеюсь, это выполнимо?
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5