Pull to refresh

Comments 6

OTRS по наступлению события отправляет только id тикета. Заявлено, что можно передавать и другие параметры. Однако это так и не удалось.

Если посмотрите на функцию PrepareRequest в Test.pm, то можете увидеть какие именно параметры для запроса подготавливаются (по-умолчанию TicketNumberID, Action и SystemTime). Их можно использовать для запроса или дописать данную функцию для передачи нужным вам параметров.
Ребята с форума пробовали
$ReturnData{Owner} = $Param{Data}=>{Owner};
Я пробовал
$ReturnData{CustomerID} = $Param{Data}=>{CustomerID};

Увы не помогло ни мне, ни им.
OTRS начал понимать, что CustomerID это переменная, но во внешнюю систему приходит пустое значение.
Да. Судя по отладчику, invoker'у в принципе поступает только:
$VAR1 = {
  'TicketID' => '14014'
};
В общем список полей для определённого события захардкожен. Например для событий по тикетам в Kernel/System/Ticket.pm. Вот например кусок для события TicketCreate:
    # trigger event
    $Self->EventHandler(
        Event => 'TicketCreate',
        Data  => {
            TicketID => $TicketID,
        },
        UserID => $Param{UserID},
    );

И здесь действительно только TicketID. А вот например для события TicketStateUpdate:
    # trigger event, OldTicketData is needed for escalation events
    $Self->EventHandler(
        Event => 'TicketStateUpdate',
        Data  => {
            TicketID      => $Param{TicketID},
            OldTicketData => \%Ticket,
        },
        UserID => $Param{UserID},
    );

И здесь действительно уже кроме TicketID передаётся ещё и объект OldTicketData:
$VAR1 = {

  'OldTicketData' => {
    'Age' => 21850,
    'ArchiveFlag' => 'n',
    'ChangeBy' => '20',
    'Changed' => '2017-09-04 17:44:18',
    'CreateBy' => '1',
    'CreateTimeUnix' => '1504514408',
    'Created' => '2017-09-04 11:40:08',
    'CustomerID' => '1024',
    'CustomerUserID' => 'tester',
    'EscalationDestinationDate' => '2017-09-04 15:40:08',
    'EscalationDestinationIn' => '2h 4m',
    'EscalationDestinationTime' => '1504528808',
    'EscalationResponseTime' => '0',
    'EscalationSolutionTime' => '1504528808',
    'EscalationTime' => -7450,
    'EscalationTimeWorkingTime' => '-7450',
    'EscalationUpdateTime' => '1504608258',
    'GroupID' => '2',
    'Lock' => 'lock',
    'LockID' => '2',
    'Owner' => 'isa',
    'OwnerID' => '20',
    'Priority' => '3 Обычный',
    'PriorityID' => '3',
    'Queue' => 'Корзина',
    'QueueID' => '10',
    'RealTillTimeNotUsed' => '0',
    'Responsible' => 'root@localhost',
    'ResponsibleID' => '1',
    'SLAID' => '',
    'ServiceID' => '',
    'SolutionTime' => -7450,
    'SolutionTimeDestinationDate' => '2017-09-04 15:40:08',
    'SolutionTimeDestinationTime' => '1504528808',
    'SolutionTimeEscalation' => 1,
    'SolutionTimeWorkingTime' => '-7450',
    'State' => 'open',
    'StateID' => '4',
    'StateType' => 'open',
    'TicketID' => '14014',
    'TicketNumber' => '20170904109849',
    'Title' => 'web service test',
    'Type' => 'default',
    'TypeID' => '1',
    'UnlockTimeout' => '1504536258',
    'UntilTime' => 0,
    'UpdateTime' => 72000,
    'UpdateTimeDestinationDate' => '2017-09-05 13:44:18',
    'UpdateTimeDestinationTime' => '1504608258',
    'UpdateTimeWorkingTime' => 14400
  },
  'TicketID' => '14014'
};
в PrepareRequest можно обращаться к любым объектам OTRS, например для получения всего объекта тикета:
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
my %Ticket = $TicketObject->TicketGet(
        TicketID => $Param{Data}->{TicketID},
        DynamicFields => 1,
);

после чего выдать нужные поля в Data…

Еще замечу, что не надо хранить свои правки в otrs/Kernel/* — для этого есть каталог otrs/Custom (то есть свой Invoker надо положить в otrs/Custom/Kernel/GenericInterface/Invoker).
В этом случае при обновлении самого OTRS ваши правки не будут потеряны
Эх, жалко я таки не перл программист, так и не удалось по вашей схеме задействовать.
Там еще xml конфиг пришлось править, чтобы в веб интерфейсе появилась возможность Invoker включить.
Sign up to leave a comment.

Articles