OTRS Первоначальный создатель тикета

Возможно ли в OTRS (версия 3.1, 3.2 или 3.3) отображать первоначального создателя заявки на странице обзора клиента (CustomerTicketOverview.dtl) или на странице сведений (CustomerTicketZoom.dtl)? Например, если я создаю тикет в качестве агента, я хотел бы показать имя агента, в противном случае, если клиент создал этот тикет, я хотел бы показать имя клиента.

Я пробовал это:

$Text{"$QData{"FromRealname","60"}"}

который, кажется, всегда печатает имя пользователя, который последним ответил на билет. Если билет новый, он содержит имя клиента, если клиент его создал, или если это был телефонный билет, в противном случае, если это был билет электронной почты, он, кажется, содержит имя адреса электронной почты, который назначен с очередью.

$Text{"$Data{"CreatedBy"}"}

который, кажется, содержит идентификатор человека, создавшего билет. Есть ли способ сделать то, что я хочу?


person lanoxx    schedule 15.09.2014    source источник


Ответы (1)


Да, это возможно. Но вам нужно выполнить поиск, чтобы преобразовать UserID в «читаемое» имя.

Сначала сделайте копию Kernel/Modules/CustomerTicketZoom.pm в Custom/Kernel/Modules/CustomerTicketZoom.pm, затем измените метод _mask следующим образом (около L#:1000):

    # ticket owner
if ( $Self->{Config}->{AttributesView}->{Owner} ) {
    my $OwnerName = $Self->{AgentUserObject}->UserName(
        UserID => $Param{OwnerID},
    );
    $Self->{LayoutObject}->Block(
        Name => 'Owner',
        Data => { OwnerName => $OwnerName },
    );
}
####### this is the new part #######
# ticket creator
if ( $Param{CreateBy} != 1 ) {

    #1 is the default account if a ticket is created by a customer
    my $CreatorName = $Self->{AgentUserObject}->UserName(
        UserID => $Param{CreateBy},
    );
    $Self->{LayoutObject}->Block(
        Name => 'Creator',
        Data => { CreatorName => $CreatorName },
    );

}
####### this is the end of the new part #######    
# ticket responsible
if (
    $Self->{ConfigObject}->Get('Ticket::Responsible')
    &&
    $Self->{Config}->{AttributesView}->{Responsible}
    )
{
    my $ResponsibleName = $Self->{AgentUserObject}->UserName(
        UserID => $Param{ResponsibleID},
    );
    $Self->{LayoutObject}->Block(
        Name => 'Responsible',
        Data => { ResponsibleName => $ResponsibleName },
    );
}

# check if ticket is normal or process ticket

Я использовал OTRS 3.3.8+ITSM, поэтому ваши номера строк могут отличаться. Новый вставленный блок проверяет, является ли создатель != UserID 1, который является локальной учетной записью администратора, используемой OTRS для создания заявок, если создатель не является агентом. Если его != 1, OTRS выполняет поиск и сохраняет настоящее имя в var. После этого рендерится создатель dtl:block.

Вторая часть: Измените файл шаблона: Скопируйте исходный файл из ядра/вывод/HTML/стандарт/CustomerTicketZoom.dtl в: Custom/Kernel/OUTPUT/HTML/Standard/CustomerTicketZoom.dtl

и вставьте новый блок (около L#:190 - после блока владельца):

<!-- dtl:block:Creator -->
                    <li><span class="Key">$Text{"Creator"}:</span> $QData{"CreatorName"}</li>
<!-- dtl:block:Creator -->

После того, как вы применили свои изменения, создатель должен отображаться правильно.

person Hannes_hal    schedule 21.09.2014