How to get current TicketID in GenericAgent -> Job -> Excute Custom Module ?
My first module in OTRS :
Code: Select all
#!/usr/bin/perl -w
package Custom::SendmailChief;
use strict;
use warnings;
use Kernel::System::ObjectManager;
# email
local $Kernel::OM = Kernel::System::ObjectManager->new();
my $EmailObject = $Kernel::OM->Get('Kernel::System::Email');
# log
local $Kernel::OM = Kernel::System::ObjectManager->new(
'Kernel::System::Log' => {
LogPrefix => 'RunModule', # not required, but highly recommend
},
);
my $LogObject = $Kernel::OM->Get('Kernel::System::Log');
# config
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
# var
my $ticketnumber = $ARGV[0];
my $ticketid = $ARGV[1];
our $ObjectManagerDisabled = 1;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {%Param};
bless( $Self, $Type );
# debug level
$Self->{Debug} = $Param{Debug} || 0;
# get configured backend module
my $GenericModule = $Kernel::OM->Get('Kernel::Config')->Get('SendmailModule')
|| 'Kernel::System::Email::Sendmail';
# get backend object
$Self->{Backend} = $Kernel::OM->Get($GenericModule);
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
# check availability
my %Check = $EmailObject->Check();
if ( !$Check{Successful} ) {
$LogObject->Log(
Priority => 'error',
Message => $Check{Message},
);
return;
}.
else {
$LogObject->Log(
Priority => 'info',
Message => 'Check - ok',
);
};
# get Sender
my $Sender = $ConfigObject->Get(
'AdminEmail'
) || '';
# get ticket object
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
# check if new ticket
my $Tn = $TicketObject->GetTNByString( $Param{GetParam}->{Subject} );
if ( $Self->{TicketID} ) {
$LogObject->Log(
Priority => 'info',
Message => 'Found Object',
);
} else
{
$LogObject->Log(
Priority => 'info',
Message => 'NO Found Object',
);
};
# Send Mail
my $Sent = $EmailObject->Send(
From => $Sender,
To => 'chief@domain.com',
Subject => 'Subj!',
Charset => 'utf-8',
MimeType => 'text/plain', # "text/plain" or "text/html"
Body => 'TicketID= ' . $ticketid,
Loop => 1, # not required, removes smtp from........
);
if ($Sent) {
$LogObject->Log(
Priority => 'info',
Message => "Email sent!",
);
}
else {
$LogObject->Log(
Priority => 'error',
Message => "Email not sent!",
);
}
}
1;