[rt-users] Form input interface

Gene LeDuc gleduc at mail.sdsu.edu
Tue Apr 17 15:02:25 EDT 2007

Here's the OnCreate scrip I use to create a DNS ticket from e-mail that is 
sent by a web form after a user fills it out.  The e-mail consists of 2 
lines.  The first is the string that I chose to use to separate the fields 
and the second line contains all the data separated by the string on the 
first line.  I did it this way so that I don't have to hard-code the 
separator into the scrip, it's provided by the e-mail.  I only log the last 
of the CF transactions because it's used to trigger another scrip.


### Extract fields from e-mail
my $MyName = "Scrip DNS:35:Commit (New Ticket)";
my $Transaction = $self->TransactionObj;
my $CurrentUser = $Transaction->CurrentUser;
my $Ticket = $self->TicketObj;
my $Content = $Transaction->Content;
my ($sep) = $Content =~ /(^.*$)/m;
chomp $sep;
$Content =~ s/\A$sep\n//s;
chomp $Content;
### At this point, =$sep contains my separator string and $Content contains 
the rest of the e-mail
#$RT::Logger->debug("$MyName: \$sep: '$sep'");
#$RT::Logger->debug("$MyName: \$Content: '$Content'");
my ($mName, $mIp, $mLoc, $mOs, $uName, $uPhone, $uEmail, $uDept, $uIp, 
$uAgent, $uComments) = split($sep, $Content);
set_custom('IP', $mIp);
set_custom('Location', $mLoc);
set_custom('OS', $mOs);
set_custom('User Name', $uName);
set_custom('Phone', $uPhone);
set_custom('E-Mail', $uEmail);
set_custom('Dept', $uDept);
set_custom('Comments', $uComments);
set_custom('User IP', $uIp);
set_custom('User Agent', $uAgent);
set_custom('Machine Name', $mName, 1);

### Sets custom field value
### set_custom($field_name, $field_value)
sub set_custom {
   my ($CFName, $CFValue, $record) = @_;
#$RT::Logger->debug("$MyName: set_custom($CFName, '$CFValue')");
   my $cf = RT::CustomField->new($CurrentUser);
   my ($id,$msg) = $cf->LoadByName(Name=>$CFName,);
   if (!$id) {
     $RT::Logger->debug("$MyName: Couldn't load CF ($CFName)");
     return undef;
   } else {
#    $RT::Logger->debug("$MyName: CF($CFName) loaded, id: " . $cf->id());
   ($id, $msg) = $Ticket->AddCustomFieldValue
            (Field=>$cf, Value=>$CFValue, RecordTransaction=>$record ? 
$record : 0);
#  $RT::Logger->info("$MyName: CustomFieldValue ($CFName,$CFValue) added: 
$id $msg");

At 11:38 AM 4/17/2007, Kenneth Crocker wrote:
>         We don't want the user/requestor to use the web interface at all 
> for creating the ticket. Thanks.

More information about the rt-users mailing list