[rt-users] scipts not working

Kenneth Crocker kfcrocker at lbl.gov
Thu Mar 24 12:58:31 EDT 2011


Christian,

First, I'd re-arrange your code and simplify it. Start by using RT's
standard condition "On Create". That other stuff is just redundant to what
you want to do and that clutters the logic flow.
Then, I'd make the logic in your Custom Prep Code area more linear, or "top
down". This type of code let's you test for all the conditions you "Don't"
want, 1 at a time, in order to get out. If all those conditions fail, you
can then do your thing. It also makes code easier to follow & debug:

Custom Action Prep Code:
# set regular values

my $ticket = $self->TicketObj;
my $trans = $self->TransactionObj;
my $AttachObj = $trans->Attachments->First;
my $content = $AttachObj->Content;
my $cf_obj = RT::CustomField->new($RT::SystemUser);
my $cf_name = "muethos-test:test";
my $cf_value;

# Get out of Content isn't "whatever"

return unless ($AttachObj->Content =~/RT-Set-Test\:/);
$RT::Logger->info("Passed first test");

# Get out of Content Type isn't "text", although I don't know why you need
this when the one above seems sufficient

return unless ($AttachObj->ContentType =~ /^text/);
$RT::Logger->info("Passed second test");

# Get out for another reason

return unless ($content =~ m/^\QRT-Set-Test:\E\s*(\S+)\s*$/m);
$RT::Logger->info("Passed third test");

# Build Content value

$content =~ s/^\QRT-Set-Test:\E\s*(\S+)\s*$//gm;

# Now put the new $content value into your CF

$cf_obj->LoadByName(Name=>$cf_name);
$RT::Logger->debug("Loaded\$cf_obj->Name = ". $cf_obj->Name() ."\n");
$ticket->AddCustomFieldValue(Field=>$cf_obj, Value=>$content,
RecordTransaction=>0);

return 1;

Custom Action Cleanup Code:

return 1;

I didn't check the regexp syntax, I just wanted to show you a way to write
the code so it flows top down without redundancy. It just makes it way
easier to debug cause you can put Logger comments in each step and follow
what is happening.

Hope this helps.

Kenn
LBNL


On Thu, Mar 24, 2011 at 6:54 AM, Christian Loos <cloos at netcologne.de> wrote:

> Try change the regexp from
> $content =~ m/^\QRT-Set-Test:\E\s*(\S+)\s*$/m
> to
> $content =~ /RT-Set-Test:\s*(.+)$/mg;
>
> -Chris
>
> Am 24.03.2011 11:17, schrieb Violetta J. Wawryk:
> > Hi List,
> >
> > RT: 3.6.7, debian5
> >
> > sorry, I don't know what I am doing wrong, it must be my lack of pearl
> > knowledge. I have the following scrip, with which I want to set a
> > customfield value via email contents:
> >
> > ***************************************************
> > Custom condition:
> >
> > my $AttachObj = $self->TransactionObj->Attachments->First;
> >
> > if (($self->TransactionObj->Type eq "Create") && ($AttachObj->Content =~
> > /RT-Set-Test\:/)) {
> >       return(1);
> > } else {
> >  return(undef);
> > }
> >
> > ***************************************************
> > Custom action prep code:
> >
> > $RT::Logger->info("Automagic Ticket change");
> > 1;
> >
> > my $AttachObj = $self->TransactionObj->Attachments->First;
> > # go out if content is not text!
> > unless( $AttachObj->ContentType =~ /^text/ ) {
> >
> >      return 1;
> > }
> >
> > my $content = $AttachObj->Content;
> > if( $content =~ m/^\QRT-Set-Test:\E\s*(\S+)\s*$/m ) {
> >
> >      $self->TicketObj->AddCustomFieldValue( Field => 'muethos-test:
> > test', Value => $1 );
> > }
> >
> > # strip special commands from email content
> > $content =~ s/^\QRT-Set-Test:\E\s*(\S+)\s*$//gm;
> >
> > # silently overwrite attachment content
> > $AttachObj->__Set( Field => 'Content', Value => $content );
> >
> > 1;
> > ***************************************************
> >
> > Custom action cleanup code:
> >
> > return( 1 );
> >
> > ***************************************************
> >
> >
> > My customfield is: "enter one value" (I also tried "enter multiple
> values)
> >
> > If I send an email with the following contents
> >
> >
> > RT-Set-Test: Test
> >
> >
> > it works perfectly fine, my customfield "muethos-test: test" contains
> Test.
> >
> > But I want more than just one word, I tried the following:
> >
> >
> > RT-Set-Test: Test 1
> > RT-Set-Test: 'Test 1'
> > RT-Set-Test: "Test 1"
> > RT-Set-Test:'Test 1'
> >
> > all of them do not work.
> >
> > Can anyone help me?
> >
> > Thanks a lot.
> > Violetta
> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20110324/1a3f8305/attachment.htm>


More information about the rt-users mailing list