Added updated versions of scrips for DM RT process.

This commit is contained in:
Peter Edmond 2025-02-12 22:42:30 +00:00
parent 9522d0fb63
commit 2905301976
5 changed files with 333 additions and 0 deletions

74
Scrip25.txt Normal file
View File

@ -0,0 +1,74 @@
#Check and change queue as required
# On create
# User Defined
my $txn = $self->TransactionObj;
my $type = $txn->Type;
my $ticket = $self->TicketObj;
if ($ticket->Status() ne "New") {
return 0;
}
return 1;
# Custom action
return 1;
# Commit:
my $ticket = $self->TicketObj;
my $queue = $ticket->FirstCustomFieldValue('Hub Queue');
#if ($ticket->Status() ne "new") {
# return 1;
#}
#This potentially means that the email is spam if it's missing, so we could potentially move it somewhere else?
if ($ticket->FirstCustomFieldValue('Inquirer Email') eq '') {
return 0;
}
$ticket->Comment(Content => 'AUTO: Scrip #25New ticket. Current queue is: '.$ticket->QueueObj->Name.'. Required queue is: '.$queue);
#Now change Queue
#Get current queue?:
if (($queue eq $ticket->QueueObj->Name) || ($queue eq "")) {
$ticket->Comment(Content => 'AUTO: Scrip #25 Leaving in current queue');
my ($status, $msg) =$ticket->SetStatus('Inquirer Autoresponse Sent');
} else {
my ($status, $msg) = $ticket->SetQueue( $queue);
if ($status == 0) {
$ticket->Comment(Content => 'AUTO: Scrip #25 Error changing queue to: '.$queue.' - '.$msg);
} else {
$ticket->Comment(Content => 'AUTO: Scrip #25 Changing queue to: '.$queue);
my ($status, $msg) =$ticket->SetStatus('Inquirer Autoresponse Sent');
}
}
# Check and assign Queue Managers =======
my $groupname;
if (( $ticket->QueueObj->Name) eq "Contact Facilitator") {
$groupname="Inquiries - Contact Facilitator";
} elsif (( $ticket->QueueObj->Name) eq "Contact North America") {
$groupname="Inquiries - Hub North America";
} else {
$groupname="Inquiries - Test";
}
my $groupObj = RT::Group->new($RT::SystemUser);
$groupObj->LoadUserDefinedGroup($groupname);
return undef unless $groupObj;
my $role = RT::CustomRole->new( $self->CurrentUser );
$role->Load( "Queue Managers" );
my ($success, $msg) = $self->TicketObj->AddWatcher( Type => $role->GroupType, PrincipalId => $groupObj->Id );
return 1;

68
Scrip26.txt Normal file
View File

@ -0,0 +1,68 @@
#Enhanced send equirer email:
#Custom condition:
# This script first checks if the inquirer has already been messaged
# Then assembles email
# Sends email
# Sets flag that inquirer has already been messaged.
my $txn = $self->TransactionObj;
my $type = $txn->Type;
return 0 unless $self->TicketObj->FirstCustomFieldValue('Inquirer Auto-Response Sent') ne 'Yes';
return 0 unless $type eq "Status" || ( $type eq 'Set' && $txn->Field eq 'Status');
return 0 unless $self->TicketObj->Status eq "Inquirer Autoresponse Sent";
return 1;
# Custom Action Preparation Code:
require RT::Action::SendEmail;
use strict;
use vars qw/@ISA/;
@ISA = qw(RT::Action::SendEmail);
$self->SetRecipients();
$self->SUPER::Prepare();
$self->SUPER::Commit();
sub SetRecipients {
my $self = shift;
my $ticket = $self->TicketObj;
my ( @To, @PseudoTo, @Cc, @Bcc );
my $arg ='Owner,Requestor,AdminCc,Cc';
##Requestor
#push @To, $ticket->Requestors->MemberEmailAddresses;
push @To, $ticket->FirstCustomFieldValue('Inquirer Email');
my $creator = "Davis Admin";
@{ $self->{'To'} } = @To;
}
my $value_set = $self->TicketObj->AddCustomFieldValue(Field => 'Inquirer Auto-Response Sent', Value => 'Yes');
# $self->TicketObj->Comment(Content => 'AUTO Scrip #26 changing sent status:- '.$value_set);
unless ($value_set) {
$RT::Logger->error("Failed to set custom field value for 'Inquirer Auto-Response Sent'");
return 0;
}
$RT::Logger->error($self->TransactionObj->Type);
$RT::Logger->error($self->TransactionObj->NewValue);
1;
# Custom Commit Code:
# Now move ticket to next step as required.
my $ticket = $self->TicketObj;
$ticket->Comment(Content => 'AUTO Scrip #26 - sent email to inquirer');
my ($status, $msg) =$ticket->SetStatus('Redacted Facilitator Email Sent');
1;

72
Scrip27.txt Normal file
View File

@ -0,0 +1,72 @@
# Enhanced send facilitator initial email
# Custom conditions
# Custom Email
# Template - Send Facilitator Email
# Conditions:
# This script first checks for correct status
# Then assembles email
# Sends email
my $txn = $self->TransactionObj;
my $type = $txn->Type;
return 0 unless $type eq "Status" || ( $type eq 'Set' && $txn->Field eq 'Status');
return 0 unless $self->TicketObj->Status eq "Redacted Facilitator Email Sent";
return 1;
# Custom preparation:
require RT::Action::SendEmail;
use strict;
use vars qw/@ISA/;
@ISA = qw(RT::Action::SendEmail);
#STOP RACE CONDITION!
if ($self->TicketObj->Status() ne "Redacted Facilitator Email Sent") {
if ($self->TicketObj->Status() ne "Re-send Facilitator Email") {
return 0;
}
}
$self->SetRecipients();
$self->SUPER::Prepare();
$self->SUPER::Commit();
sub SetRecipients {
my $self = shift;
my $ticket = $self->TicketObj;
my ( @To, @PseudoTo, @Cc, @Bcc );
my $arg ='Owner,Requestor,AdminCc,Cc';
##Requestor
#push @To, $ticket->Requestors->MemberEmailAddresses;
push @To, $ticket->FirstCustomFieldValue('Facilitator Email');
my $creator = "Davis Admin";
@{ $self->{'To'} } = @To;
}
1;
# Custom Commit
#Move to Redacted Facilitator email sent.
my $ticket = $self->TicketObj;
my $facilitator = $ticket->FirstCustomFieldValue('Facilitator Email');
if ($ticket->FirstCustomFieldValue('Facilitator Email') eq '') {
return 0;
}
$ticket->Comment(Content => 'AUTO Scrip #27: Email sent. Facilitator is: '.$ticket->FirstCustomFieldValue('Facilitator Email'));
#$ticket->Comment(Content => 'AUTO Scrip #27: Redacted Facilitator Email Sent');
#my ($status, $msg) = $ticket->SetStatus('Redacted Facilitator Email Sent');
return 1;

69
Scrip28.txt Normal file
View File

@ -0,0 +1,69 @@
# Enhanced Send Facilitator Unredacted Email
#
#
# Template - Demo Send Facilitators Full Email
# Custom Conditions:
# This script first checks for correct status
# Then assembles email
# Sends email
my $txn = $self->TransactionObj;
my $type = $txn->Type;
return 0 unless $type eq "Status" || ( $type eq 'Set' && $txn->Field eq 'Status');
return 0 unless $self->TicketObj->Status eq "Facilitator Accepted";
return 1;
# Custom Preparation
require RT::Action::SendEmail;
use strict;
use vars qw/@ISA/;
@ISA = qw(RT::Action::SendEmail);
#STOP RACE CONDITION!
if ($self->TicketObj->Status() ne "Facilitator Accepted") {
return 0;
}
$self->SetRecipients();
$self->SUPER::Prepare();
$self->SUPER::Commit();
sub SetRecipients {
my $self = shift;
my $ticket = $self->TicketObj;
my ( @To, @PseudoTo, @Cc, @Bcc );
my $arg ='Owner,Requestor,AdminCc,Cc';
##Requestor
#push @To, $ticket->Requestors->MemberEmailAddresses;
push @To, $ticket->FirstCustomFieldValue('Facilitator Email');
my $creator = "Davis Admin";
@{ $self->{'To'} } = @To;
}
1;
# Custom commit
# Move to Full Facilitator Email Sent and detailed email sent.
my $ticket = $self->TicketObj;
my $facilitator = $ticket->FirstCustomFieldValue('Facilitator Email');
if ($ticket->FirstCustomFieldValue('Facilitator Email') eq '') {
return 0;
}
$ticket->Comment(Content => 'AUTO Scrip #28: Email with all details sent. Facilitator is: '.$ticket->FirstCustomFieldValue('Facilitator Email'));
$ticket->Comment(Content => 'AUTO Scrip #28: Changing status to "Full Facilitator Email Sent"');
my ($status, $msg) = $ticket->SetStatus('Full Facilitator Email Sent');
return 1;

50
Scrip29.txt Normal file
View File

@ -0,0 +1,50 @@
# On receiving email (On correspondence):
# - Set Action Needed custom flag
# Custom condition:
return 0 unless $self->TransactionObj->Type eq "Correspond";
return 0 unless $self->TicketObj->FirstCustomFieldValue('Action Needed') ne "Yes";
#$self->TicketObj->Comment(Content => 'AUTO Scrip #29 Setting Action Needed - Condition');
#return 0 unless $self->TicketObj->Transactions->Last eq 'Email';
#return 0 unless $self->TicketObj->Transactions->Last->CreatorObj->Privileged;
1;
# Custom action preparation code:
1;
# Custom action commit code:
#Set custom flag on receiving external email
my $transaction = $self->TransactionObj;
my $creator_id = $transaction->Creator;
# Get the Ticket object
my $ticket = $self->TicketObj;
# Retrieve the most recent transaction (action)
my $last_transaction = $ticket->Transactions->Last;
# Access the description of the last transaction
my $last_transaction_description = $last_transaction->Description;
if ($last_transaction_description eq 'Outgoing email recorded by RT_System') {
$self->TicketObj->Comment(Content => 'AUTO Scrip #29 Setting Action Needed - Commit
'.$last_transaction_description);
} else {
$self->TicketObj->AddCustomFieldValue(Field => 'Action Needed', Value => 'Yes');
}
return 1;