But i am getting this error: Got no UserObject! at /opt/otrs/Kernel/System/ITSMChange.pm line 108.
Code: Select all
# --
# Kernel/System/PostMaster/Filter/Test.pm - sub part of PostMaster.pm
# --
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::PostMaster::Filter::Test
use strict;
use warnings;
use Kernel::System::ITSMChange;
use Kernel::System::Email;
use Kernel::System::Ticket;
use Kernel::System::LinkObject;
use vars qw($VERSION);
$VERSION = qw($Revision: 1.20 $) [1];
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
$Self->{Debug} = $Param{Debug} || 0;
# get needed objects
for (qw
(DBObject ConfigObject LogObject MainObject)
) {
$Self->{$_} = $Param{$_} || die "Got no $_!";
}
$Self->{ChangeObject} = Kernel::System::ITSMChange->new(%Param);
$Self->{EmailObject} = Kernel::System::Email->new(%Param);
$Self->{TicketObject} = Kernel::System::Ticket->new(%Param);
$Self->{LinkObject} = Kernel::System::LinkObject->new(%Param);
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
my $CrNumber;
# check needed stuff
for (qw(JobConfig GetParam)) {
if ( !$Param{$_} ) {
$Self->{LogObject}->Log( Priority => 'error', Message => "Need $_!" );
return;
}
}
# Search for Changes with the Change Number
my %MailParams = %{ $Param{GetParam} || {} };
#Check for desired email address
if ( $Param{GetParam}->{From} =~m/otrstest/i ) {
$Self->{LogObject}->Log( Priority => 'debug', Message => "Change Request Mail: match sender $Param{GetParam}->{From}" );
} else {
$Self->{LogObject}->Log( Priority => 'debug', Message => "Change Request Mail: no match (Sender $Param{GetParam}->{From})" );
return 1;
}
#Extract the change Number from Mail Subject
my @SubjectLines = split /\n/, $Param{GetParam}->{Subject};
for my $Line (@SubjectLines) {
# Get the first number in subject (e.g. Change Request#: 123456 - Something), It will store only 123456
( $CrNumber = $Line =~ /([0-9]+) .*/ );
}
#Search for change with CrNumber as input
my $ChangeID = $Self->{ChangeObject}->ChangeSearch(
UserID => 1,
ChangeNumber => $CrNumber,
);
# Create a new ticket and link ticket with existing change if change number found in mail subject
if ( $ChangeID ) {
my $TicketID = $Self->{TicketObject}->TicketCreate(
Title => 'Some Ticket Title',
Queue => 'otrs',
Priority => '3 normal',
State => 'new',
Type => 'RfC',
UserID => 1,
OwnerID => 1,
);
my $Link = $Self->{LinkObject}->LinkAdd(
SourceObject => 'ITSMChange',
SourceKey => $ChangeID,
TargetObject => 'Ticket',
TargetKey => $TicketID,
Type => 'Normal',
State => 'Valid',
UserID => 1,
);
}
# logging
$Self->{LogObject}->Log(
Priority => 'notice',
Message => "Change Request Mail: $Param{GetParam}->{Subject}",
);
return 1;
}
1;