[rt-users] Proxy "requestors" and elegance
jul
jul-rt at julbox.net
Thu Apr 30 13:36:01 EDT 2009
Hello,
I have a scrip working well, but I am fairly unsatisfied with it ; I dont
find it elegant. So if you have any opinions regarding improvement of my
solution, please share. ;)
Problem:
A customer want to open ticket and a subsitute to handle Questions and
Answers. Still the customer want to receive acknowledement at the end, and
have the possibility to track its mail.
My Solution
Having a CF with initial requestor filled on owner Change
Having a onResolve custom scrips substituting back
My problem : to ensure the custom OnResolve he is called before OnResolve
final template is sent.
Other problems :
Do I stock substitution in a Queue customField (how do I access it ?) Do I
stock susbtitution per queue in a custom hash that would associate a
queue name to a substitution in RTSite_Config?
Rights tips so that this custom field cannot be changed or seen.
What are your opinions?
_OnOwnerChange
### File ou l'on fait la manip
my @queues = (5,6,7,8,9,10,11,12,13,14, 15);
my $queue_id = $self->TicketObj->Queue;
my $in_queue= grep { /^${queue_id}$/ } @queues;
if ( ! $in_queue ) {
# si file pas intéressante on arrete
return 1;
}
my $ProxyEmail=q{substitue at mydomain.com};
my @adresses=$self->TicketObj->Requestors->MemberEmailAddresses;
my $substitution="";
foreach my $mail (@adresses) {
# matching customers emails (per domain)
if ($mail=~ /mycustomer(.*)fr$/) {
$self->TicketObj->AddWatcher(Type => "Requestor", Email => $ProxyEmail);
$substitution.=qq{$mail from customer changed to $ProxyEmail \n};
my $CFObj = RT::CustomField->new( $RT::SystemUser );
$CFObj->LoadByNameAndQueue( Name => "initialrequestor", Queue => $queue_id );
my( $st, $msg ) = $self->TicketObj->AddCustomFieldValue(
Field => $CFObj->id,
Value => $mail,
RecordTransaction => 1
);
unless ( $st ) {
$RT::Logger->error( "SCRIP: substitution : Set fields :: $mail not
substitued :". $msg );
return 1;
}
$self->TicketObj->DeleteWatcher(Type => "Requestor", Email => $mail);
}
}
if ("$substitution) {
$self->TicketObj->Comment(Content => <<END);
$substitution
END
}
return 1;
SCRIP2
_OnResolve
my $CF = RT::CustomField->new( $RT::SystemUser );
my
$initial_mail=$self->TicketObj->FirstCustomFieldValue('initialrequestor');
if (!$initial_mail) {
# pas de bras pas de chocolat
return 1 ;
}
$self->TicketObj->AddWatcher(Type => "Requestor", Email => $initial_mail);
### on enlève le proxy
my $ProxyEmail = q{substitue at mydomain.com};
my @adresses=$self->TicketObj->Requestors->MemberEmailAddresses;
my $substitution="";
foreach my $mail (@adresses) {
if ($mail== $ProxyEmail) {
$self->TicketObj->DeleteWatcher(Type => "Requestor", Email => $ProxyEmail);
$substitution="$ProxyEmail subsituted by $initial_mail";
}
}
$self->TicketObj->Comment(Content => <<END);
$substitution
END
return 1;
--
Julien Tayon // digital craftsman // making things simpler (when possible)
A lot of people I know believe in positive thinking, and so do I. I
believe everything positively stinks.
-- Lew Col
More information about the rt-users
mailing list