Hallo zusammen,
ich habe versucht in einem Workflow die Übergangsaktion TicketCreateArticle zu benutzen.
Hat soweit auch geklappt er erstellt eine Notiz mit der angegebenen Überschrift.
Jetzt würde ich aber gerne im Body der Nachricht Werte aus DynamischenFeldern einfügen ist das Möglich und wenn ja wie?
Die Tags aus den Antworten (<OTRS_xx_xx) funktionieren leider nicht.
TicketArticleCreate in ProzessManagment
-
- Znuny newbie
- Posts: 9
- Joined: 21 Dec 2013, 10:06
- Znuny Version: 3.3.10
- Real Name: Markus Sachs
- Company: all for IT Systemhaus GmbH
TicketArticleCreate in ProzessManagment
---------------------------------------------------------------------------------------------------
Gruß Markus
Gruß Markus
-
- Znuny guru
- Posts: 2210
- Joined: 13 Mar 2014, 09:16
- Znuny Version: 6.0.14
- Real Name: Rolf Straub
Re: TicketArticleCreate in ProzessManagment
Daran bin ich auch schon gescheitert :/
Das Problem ist wohl dass man nicht den "Inhalt" auslesen kann, evtl. klappts mit den Klammern:
<DynamicField_[FieldName]>
Das Problem ist wohl dass man nicht den "Inhalt" auslesen kann, evtl. klappts mit den Klammern:
<DynamicField_[FieldName]>
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
-
- Znuny newbie
- Posts: 24
- Joined: 18 Dec 2013, 16:57
- Znuny Version: *.*.*
- Company: Znuny GmbH
- Location: Berlin
- Contact:
Re: TicketArticleCreate in ProzessManagment
Hallo zusammen,
das beschriebene Verhalten gibt der OTRS Standard so leider nicht her. Es gibt mehrere Möglichkeiten:
1.) Ihr entwickelt eine saubere Lösung für den Standard und contributed ihn via Pull-Request in den Standard
2.) Ihr tragt es auf IdeaScale ein: https://otrsteam.ideascale.com/
3.) Ihr wendet euch an einen OTRS Dienstleister und lasst es euch entwickeln (und contributed es?!)
4.) Ihr kopiert meinen folgenden quick-hack, erstellt daraus eine neue Datei namens 'TicketArticleCreateReplaceOTRSTags.pm' im Verzeichnis 'Kernel/System/ProcessManagement/TransitionAction/' und verwendet in eurer Prozess-Config als Modul 'Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreateReplaceOTRSTags' anstelle von 'Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreate'.
DISCLAIMER:
Ich gebe keine Gewährleistung auf Funktionalität. Es sind keine Tests enthalten. Einsatz auf eigene Gefahr.
(lokal getestet in einer OTRS 3.3.3 Umgebung)
das beschriebene Verhalten gibt der OTRS Standard so leider nicht her. Es gibt mehrere Möglichkeiten:
1.) Ihr entwickelt eine saubere Lösung für den Standard und contributed ihn via Pull-Request in den Standard
2.) Ihr tragt es auf IdeaScale ein: https://otrsteam.ideascale.com/
3.) Ihr wendet euch an einen OTRS Dienstleister und lasst es euch entwickeln (und contributed es?!)
4.) Ihr kopiert meinen folgenden quick-hack, erstellt daraus eine neue Datei namens 'TicketArticleCreateReplaceOTRSTags.pm' im Verzeichnis 'Kernel/System/ProcessManagement/TransitionAction/' und verwendet in eurer Prozess-Config als Modul 'Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreateReplaceOTRSTags' anstelle von 'Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreate'.
Code: Select all
# --
# Kernel/System/ProcessManagement/TransitionAction/TicketArticleCreateReplaceOTRSTags.pm - A module to create an article and replace OTRS tags
# Copyright (C) 2001-2013 xxx, http://otrs.com/
# ThorstenEckel for OtterHub, http://forums.otterhub.org/viewtopic.php?f=35&t=24438
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreateReplaceOTRSTags;
use strict;
use warnings;
use Kernel::System::User;
use Kernel::System::CustomerUser;
use Kernel::System::Queue;
use Kernel::System::TemplateGenerator;
use Kernel::System::VariableCheck qw(:all);
use utf8;
=head1 NAME
Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreateReplaceOTRSTags - A module to create an article and replace OTRS tags
=head1 SYNOPSIS
All TicketArticleCreateReplaceOTRSTags functions.
=head1 PUBLIC INTERFACE
=over 4
=cut
=item new()
create an object
use Kernel::Config;
use Kernel::System::Encode;
use Kernel::System::Log;
use Kernel::System::Time;
use Kernel::System::Main;
use Kernel::System::DB;
use Kernel::System::Ticket;
use Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreateReplaceOTRSTags;
my $ConfigObject = Kernel::Config->new();
my $EncodeObject = Kernel::System::Encode->new(
ConfigObject => $ConfigObject,
);
my $LogObject = Kernel::System::Log->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
);
my $TimeObject = Kernel::System::Time->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
);
my $MainObject = Kernel::System::Main->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
LogObject => $LogObject,
);
my $DBObject = Kernel::System::DB->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
LogObject => $LogObject,
MainObject => $MainObject,
);
my $TicketObject = Kernel::System::Ticket->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
DBObject => $DBObject,
MainObject => $MainObject,
TimeObject => $TimeObject,
EncodeObject => $EncodeObject,
);
my $TicketArticleCreateReplaceOTRSTagsActionObject = Kernel::System::ProcessManagement::TransitionAction::TicketArticleCreateReplaceOTRSTags->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
EncodeObject => $EncodeObject,
DBObject => $DBObject,
MainObject => $MainObject,
TimeObject => $TimeObject,
TicketObject => $TicketObject,
);
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# get needed objects
for my $Needed (
qw(ConfigObject LogObject EncodeObject DBObject MainObject TimeObject TicketObject)
)
{
die "Got no $Needed!" if !$Param{$Needed};
$Self->{$Needed} = $Param{$Needed};
}
$Self->{UserObject} = Kernel::System::User->new( %{ $Self } );
$Self->{CustomerUserObject} = Kernel::System::CustomerUser->new( %{ $Self } );
$Self->{QueueObject} = Kernel::System::Queue->new( %{ $Self } );
$Self->{TemplateGeneratorObject} = Kernel::System::TemplateGenerator->new( %{ $Self } );
return $Self;
}
=item Run()
Run Data
my $TicketArticleCreateReplaceOTRSTagsResult = $TicketArticleCreateReplaceOTRSTagsActionObject->Run(
UserID => 123,
Ticket => \%Ticket, # required
ProcessEntityID => 'P123',
ActivityEntityID => 'A123',
TransitionEntityID => 'T123',
TransitionActionEntityID => 'TA123',
Config => {
# required:
ArticleType => 'note-internal', # note-external|phone|fax|sms|...
# excluding any email type
SenderType => 'agent', # agent|system|customer
ContentType => 'text/plain; charset=ISO-8859-15', # or optional Charset & MimeType
Subject => 'some short description', # required
Body => 'the message text', # required
HistoryType => 'OwnerUpdate', # EmailCustomer|Move|AddNote|PriorityUpdate|WebRequestCustomer|...
HistoryComment => 'Some free text!',
# optional:
From => 'Some Agent <email@example.com>', # not required but useful
To => 'Some Customer A <customer-a@example.com>', # not required but useful
Cc => 'Some Customer B <customer-b@example.com>', # not required but useful
ReplyTo => 'Some Customer B <customer-b@example.com>', # not required
MessageID => '<asdasdasd.123@example.com>', # not required but useful
InReplyTo => '<asdasdasd.12@example.com>', # not required but useful
References => '<asdasdasd.1@example.com> <asdasdasd.12@example.com>', # not required but useful
NoAgentNotify => 0, # if you don't want to send agent notifications
AutoResponseType => 'auto reply' # auto reject|auto follow up|auto reply/new ticket|auto remove
ForceNotificationToUserID => [ 1, 43, 56 ], # if you want to force somebody
ExcludeNotificationToUserID => [ 43,56 ], # if you want full exclude somebody from notfications,
# will also be removed in To: line of article,
# higher prio as ForceNotificationToUserID
ExcludeMuteNotificationToUserID => [ 43,56 ], # the same as ExcludeNotificationToUserID but only the
# sending gets muted, agent will still shown in To:
# line of article
UserID => 123, # optional, to override the UserID from the logged user
}
);
Ticket contains the result of TicketGet including DynamicFields
Config is the Config Hash stored in a Process::TransitionAction's Config key
Returns:
$TicketArticleCreateReplaceOTRSTagsResult = 1; # 0
);
=cut
sub Run {
my ( $Self, %Param ) = @_;
for my $Needed (
qw(UserID Ticket ProcessEntityID ActivityEntityID TransitionEntityID
TransitionActionEntityID Config
)
)
{
if ( !defined $Param{$Needed} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Need $Needed!",
);
return;
}
}
# define a common message to output in case of any error
my $CommonMessage = "Process: $Param{ProcessEntityID} Activity: $Param{ActivityEntityID}"
. " Transition: $Param{TransitionEntityID}"
. " TransitionAction: $Param{TransitionActionEntityID} - ";
# Check if we have Ticket to deal with
if ( !IsHashRefWithData( $Param{Ticket} ) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => $CommonMessage . "Ticket has no values!",
);
return;
}
# Check if we have a ConfigHash
if ( !IsHashRefWithData( $Param{Config} ) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => $CommonMessage . "Config has no values!",
);
return;
}
# override UserID if specified as a parameter in the TA config
if ( IsNumber( $Param{Config}->{UserID} ) ) {
$Param{UserID} = $Param{Config}->{UserID};
delete $Param{Config}->{UserID};
}
# Check ArticleType
if ( $Param{Config}->{ArticleType} =~ m{\A email }msxi ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => $CommonMessage
. "ArticleType $Param{Config}->{ArticleType} is not supported",
);
return;
}
# get user data
my %User = $Self->{UserObject}->GetUserData(
UserID => $Param{UserID},
Valid => 1,
);
# get user language
my $Language = $User{UserLanguage} || $Self->{ConfigObject}->Get('DefaultLanguage') || 'en';
# replace placeholders in Subject and Body
for my $Attribute (qw(Subject Body)) {
$Param{Config}->{ $Attribute } = $Self->{TemplateGeneratorObject}->_Replace(
RichText => 0,
Text => $Param{Config}->{ $Attribute },
TicketID => $Param{Ticket}->{TicketID},
UserID => $Param{UserID},
Language => $Language,
Data => {},
);
}
my $Success = $Self->{TicketObject}->ArticleCreate(
%{ $Param{Config} },
TicketID => $Param{Ticket}->{TicketID},
UserID => $Param{UserID},
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => $CommonMessage
. "Couldn't create article for Ticket: "
. $Param{Ticket}->{TicketID} . '!',
);
return;
}
return 1;
}
1;
=back
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L<http://otrs.org/>).
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (AGPL). If you
did not receive this file, see L<http://www.gnu.org/licenses/agpl.txt>.
=cut
Ich gebe keine Gewährleistung auf Funktionalität. Es sind keine Tests enthalten. Einsatz auf eigene Gefahr.
(lokal getestet in einer OTRS 3.3.3 Umgebung)
Znuny4OTRS Extensions auf Github: https://github.com/znuny/
Znuny4OTRS - intl. Enterprise Services: https://znuny.com
Znuny4OTRS - intl. Enterprise Services: https://znuny.com
Re: TicketArticleCreate in ProzessManagment
ich versuche mich gerade daran. welchen wert muss ich setzen wenn ich will das der inhalt meiner Dynamischen Felder als Artikel übertragen wird. Hätte auch kein Problem damit wenn die history für das dynamische Feld als Artikel drin stehen würde.
Mir ist aber nicht so ganz klar wie?
Mir ist aber nicht so ganz klar wie?
OTRS 6.0.30 /OS: Ubuntu/ Mysql