在OTRS (版本3.1、3.2或3.3)中,是否可以在客户概述(CustomerTicketOverview.dtl)或详细信息(CustomerTicketZoom.dtl)页面中显示工单的初始创建者?例如,如果我作为代理创建了一个票证,我希望显示代理的名称,否则,如果是客户创建了该票证,我将显示客户的名称。
我试过这个:
$Text{"$QData{"FromRealname","60"}"}它似乎总是打印上次回复票据的用户的名称。如果工单是新的,则它包含客户的名称(如果是客户创建的)或如果它是电话工单,否则,如果它是电子邮件工单,它似乎包含与队列一起分配的电子邮件地址的名称。
$Text{"$Data{"CreatedBy"}"}它似乎包含创建票证的人的id。有什么办法可以做到我想要的吗?
发布于 2014-09-22 00:31:51
是的,这是可能的。但是您必须进行查找以将UserID转换为一个“可读”的名称。
首先,将Kernel/Modules/CustomerTicketZoom. so复制到Custom/Kernel/Modules/CustomerTicketZoom.so,然后像这样(围绕L#:1000)修改_mask方法:
# 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,因此您的行号可能会有所不同。ne插入的数据块将检查创建者是否为!= UserID 1,如果创建者不是代理,则这是OTRS用于创建票证的本地管理员帐户。如果它的!= 1 OTRS执行查找并将真实姓名保存在var中。在此之后,将呈现创建者dtl:块。
第二部分:修改模板文件:将原始文件从Kernel/Output/HTML/Standard/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 -->应用更改后,应该正确显示创建者。
https://stackoverflow.com/questions/25853592
复制相似问题