X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fetc%2Finitialdata;h=0860d54f6b7894610ea0c4eb6cde355fc3869080;hb=refs%2Fheads%2FFREESIDE_2_3_BRANCH;hp=edf93fe438c23b4ac8ae6918004ac6f68888c7b1;hpb=c3da5cf1caa244937d280e0f406927103beef148;p=freeside.git diff --git a/rt/etc/initialdata b/rt/etc/initialdata index edf93fe43..0860d54f6 100644 --- a/rt/etc/initialdata +++ b/rt/etc/initialdata @@ -675,3 +675,93 @@ Hour: { $SubscriptionObj->SubValue('Hour') } } ); +# -*- perl -*- + +push @ScripActions, ( + + { Name => 'Extract Custom Field Values', # loc + Description => 'extract cf-values out of a message', # loc + ExecModule => 'ExtractCustomFieldValues' }, + + { Name => 'Extract Custom Field Values With Code in Template', # loc + Description => 'extract cf-values out of a message with a Text::Template template', # loc + ExecModule => 'ExtractCustomFieldValuesWithCodeInTemplate' } + +); + +push @Templates, ( + { Queue => '0', + Name => 'CustomFieldScannerExample', # loc + Description => 'Example Template for ExtractCustomFieldValues', # loc + Content => <<'EOTEXT' +#### Syntax: +# CF Name | Header name or "Body" | MatchString(re) | Postcmd | Options + +#### Allowed Options: + +# q - (quiet) Don't record a transaction for adding the custom field +# value +# * - (wildcard) The MatchString regex should contain _two_ +# capturing groups, the first of which is the CF name, +# the second of which is the value. If this option is +# given, the field is ignored. + +#### Examples: + +# 1. Put the content of the "X-MI-Test" header into the "testcf" +# custom field: +# testcf|X-MI-Test|.* + +# 2. Scan the body for Host:name and put name into the "bodycf" custom +# field: +# bodycf|Body|Host:\s*(\w+) + +# 3. Scan the "X-MI-IP" header for an IP-Adresse and get the hostname +# by reverse-resolving it: +# Hostname|X-MI-IP|\d+\.\d+\.\d+\.\d+|use Socket; ($value) = gethostbyaddr(inet_aton($value),AF_INET); + +# 4. scan the "CC" header for an many email addresses, and add them to +# a custom field named "parsedCCs". If "parsedCCs" is a multivalue +# CF, then this should yield separate values for all email adress +# found. +# parsedCCs|CC|.*|$value =~ s/^\s+//; $value =~ s/\s+$//; + +# 5. Looks for an "Email:" field in the body of the email, then loads +# up that user and makes them privileged The blank first field +# means the automatic CustomField setting is not invoked. +# |Body|Email:\s*(.+)$|my $u = RT::User->new($RT::SystemUser); $u->LoadByEmail($value); $u->SetPrivileged(1)| + +# 6. Looks for any text of the form "Set CF Name: Value" in the body, +# and sets the CF named "CF Name" to the given value, which may be +# multi-line. The '*' option controls the wildcard nature of this +# example. +# Separator=! +# !Body!^Set ([^\n:]*?):\s*((?s).*?)(?:\Z|\n\Z|\n\n)!!* + +# 7. Looks for the regex anywhere in the headers and stores the match +# in the AllHeaderSearch CF +# AllHeaderSearch|Headers|Site:\s*(\w+) + +# 8. If you need to dynamically build your matching, and want to trigger on headers and body +# and invode some arbitrary code like example 5 +# Separator=~~ +# { +# my $action = 'use My::Site; My::Site::SetSiteID( Ticket => $self->TicketObj, Site => $_ );'; +# +# for my $regex (My::Site::ValidRegexps) { +# for my $from ('headers', 'body') { +# $OUT .= join '~~', +# '', # CF name +# $from, +# $regex, +# $action; +# $OUT .= "\n"; +# } +# } +# } + +EOTEXT + } +); + +1;