Страница 1 из 1

Эскалация не возвращается при повторном открытии заявки

Добавлено: 27 ноя 2014, 14:20
Olga89
Здравствуйте, коллеги! Пытаюсь реализовать эскалацию заявок через сервисы и SLA для каждой очереди. Возникла проблема: заявка создается - эскалация назначается, после закрытия заявки - эскалация пропадает, все верно. Но после того, как клиент отвечает на заявку и тем самым переводит ее из статуса close в статус open, эскалация не возвращается. Подскажите, пожалуйста, что сделать для того, чтобы эскалация продолжала отсчет? Заранее спасибо!

Re: Эскалация не возвращается при повторном открытии заявки

Добавлено: 27 ноя 2014, 20:18
merkushov
После снятия эскалации, в заявке данные о ней обнуляются. Следы можно найти только в истории.
Для того чтобы восстановить отсчёт эскалации после её снятия вам нужно написать свой обработчик (1 pm файл) и повесить его на событие TicketStateUpdate. В обработчике, достаньте все записи истории по заявке и на их основе восстановите эскалацию.

Re: Эскалация не возвращается при повторном открытии заявки

Добавлено: 12 дек 2014, 09:12
Olga89
Виктор, подскажите, пожалуйста, как писать обработчик и где его писать? Можете какой-нибудь примерчик скинуть?

Re: Эскалация не возвращается при повторном открытии заявки

Добавлено: 12 дек 2014, 11:42
merkushov
Пример и действующие варианты обработчиков лежат тут Kernel/System/Ticket/Event/*
Подключать их к коду лучше через xml файл, который нужно положить в Kernel/Config/Files/ Пример xml блока

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

    <ConfigItem Name="Ticket::EventModulePost###100-ArchiveRestore" Required="1" Valid="1">
        <Description Translatable="1">Restores a ticket from the archive (only if the event is a state change, from closed to any open available state).</Description>
        <Group>Ticket</Group>
        <SubGroup>Core::Ticket</SubGroup>
        <Setting>
            <Hash>
                <Item Key="Module">Kernel::System::Ticket::Event::ArchiveRestore</Item>
                <Item Key="Event">TicketStateUpdate</Item>
            </Hash>
        </Setting>
    </ConfigItem>
при подключении нужно указать событие, по которому будет запускаться обработчик.

Методы для работы с историей заявок лежат в Kernel::System::Ticket
Генерация события TicketStateUpdate происходит в Kernel::System::Ticket::TicketStateSet. Помимо идентификатора заявки в обработчик передаётся хэш, содержащий поля заявки в её предыдущем состоянии.

Остальное дело техники.