Hallo zusammen,
langer Rede kurzer Sinn, ich bin ziemlich neu in OTRS, habe damit aber einen Workflow zu realisieren. Benutzt wird Version 3.3.4 mit ITSM und der KIX4OTRS-Erweiterung.
Und zwar habe ich das Problem, dass ich Customer-Tickets direkt ihren Agenten zuweisen soll. Wenn jemand diese Frage beantworten kann, erübrigt sich nämlich schon das ganze Problem. Gibt es eine Möglichkeit, dass ein Customer direkt beim Erstellen den Besitzer eines Tickets auswählen kann? Wenn Agenten Tickets erstellen geht das ja, da gibt es ein Feld für den Besitzer, geht das auch bei Kunden?
Ich habe nun einen etwas anderen Ansatz gefahren. Und zwar habe ich im Customer-Interface ein DynamicField vom Typ Dropdown eingeblendet, welches ein Pflichtfeld ist. Beim Erstellen des Tickets schiebe ich es erstmal in eine "Dispatcher"-Queue, auf der ein GenericAgent agiert. Und zwar filtere ich über Jobs, in welcher Queue die Tickets liegen (eben hier im Dispatcher) und anhand der Auswahl des DynamicFields, denjenigen der das Ticket als nächstes besitzen soll und weise ihn als neuen Besitzer des Tickets zu. Zum Beispiel habe ich als Auswahl im Dropdown-Menü: "0837 - Bezeichung". Dadurch weiß ich, anhand einer internen Tabelle, wer das Ticket bekommen soll. Das funktioniert wunderbar.
Mein Problem ist folgendes:
Ich habe knapp 130 mögliche Besitzer! Wenn ich bei diesem Verfahren bleibe, müsste ich für jeden dieser 130 möglichen Besitzer einen eigenen Job erstellen, damit jeder die Tickets vom GenAgent aus der Queue für die Kunden zugewiesen bekommt, die extra für ihn gedacht sind. Weil ich kann pro Job ja nur einmal auswählen, wer das Ticket zugewiesen bekommen soll.
Deshalb meine Frage:
Gibt es eine Möglichkeit im GenAgent eine Art if-then-else Kaskade zu realisieren, dass ich z.B. alle Abfragen in einen einzigen Job packen könnte ala:
if (DynamicField_XYZ = 0294)
then Besitzer = AgentA
else if (DynamicField_XYZ = 0002)
then Besitzer = AgentB
usw... ihr wisst was ich meine. Ist das machbar? Oder müsste ich dazu in den Quellcode reinschreiben?
(Direkt vorweg, folgende Optionen gehen aufgrund äußerer Umstände NICHT:
- ein menschlicher Dispatcher, der die Zuweisung übernimmt
- Jeder Agent sucht sich seine Tickets aus der Queue selber raus)
Jeder Tipp ist gerne willkommen, vielen Dank.
[SOLVED](anders) If-Then-Else mit GenericAgent realisieren?
[SOLVED](anders) If-Then-Else mit GenericAgent realisieren?
Last edited by thr on 30 Apr 2014, 17:29, edited 1 time in total.
Version: OTRS version 3.3.4 mit ITSM und KIX4OTRS
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
-
- Znuny guru
- Posts: 5018
- Joined: 13 Mar 2011, 09:54
- Znuny Version: 6.0.x
- Real Name: Renée Bäcker
- Company: Perl-Services.de
- Contact:
Re: If-Then-Else mit GenericAgent realisieren?
Schreibe ein ein Perl-Modul, das Du in dem GenericAgent (GA) einbindest. In dem Perl-Modul bist Du ziemlich frei was Du machst. Dann kannst Du die Zuordnungen auch über die SysConfig pflegen... Nur mit den GAs über die Weboberfläche lässt sich das nicht machen...
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Re: If-Then-Else mit GenericAgent realisieren?
Hmm... ich hab es befürchtet. Schade, wäre auch zu einfach gewesen.
Nun gut. Die interne Datenstruktur kenne ich noch gar nicht, von daher wären ein paar kurze Infos nicht schlecht. Also ich schreibe mir quasi mein Modul mit Perl, reicht dann ein einfaches Perl-Script, meinetwegen autoAssign.pm. Oder muss ich ein ganzes Modul schreiben und als .opm da reinladen?
Falls nur das einfache Skript, wo kommt das dann hinterher rein? Kernel / System / GenericAgent /?? Muss dann noch an anderer Stelle etwas angefasst werden oder kann ich es dann einfach im GA über benutzerdefinierte Module aufrufen?
Nun gut. Die interne Datenstruktur kenne ich noch gar nicht, von daher wären ein paar kurze Infos nicht schlecht. Also ich schreibe mir quasi mein Modul mit Perl, reicht dann ein einfaches Perl-Script, meinetwegen autoAssign.pm. Oder muss ich ein ganzes Modul schreiben und als .opm da reinladen?
Falls nur das einfache Skript, wo kommt das dann hinterher rein? Kernel / System / GenericAgent /?? Muss dann noch an anderer Stelle etwas angefasst werden oder kann ich es dann einfach im GA über benutzerdefinierte Module aufrufen?
Version: OTRS version 3.3.4 mit ITSM und KIX4OTRS
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
Re: If-Then-Else mit GenericAgent realisieren?
Hey, so ich habe mich mal dran gesetzt und nach etwas Recherche zu Perl und vorhandenen Beispielen etwas zusammengeschrieben. Ist noch nicht fertig, aber ich bin auch Syntaxmäßig total unsicher, kann mir jemand helfen, ob die Zugriffe und alles so richtig sind?
(Testen kann ich es noch nicht, weil ich auf meinen Zugang zum System warte)
Das Modul soll im GenAgent eingebunden werden und das rausgefilterte Ticket in eine neue Queue verschieben (die ist fest) und einen neuen Besitzer setzen (abhängig vom Wert eines dynamischen Feldes). Ich wäre auch sehr dankbar für Vorschläge, vor allem Syntaxfehler betreffend. Ich bin wie erwähnt bisher nur mit minimalsten Erfahrungen in Perl ausgestattet:
(Testen kann ich es noch nicht, weil ich auf meinen Zugang zum System warte)
Das Modul soll im GenAgent eingebunden werden und das rausgefilterte Ticket in eine neue Queue verschieben (die ist fest) und einen neuen Besitzer setzen (abhängig vom Wert eines dynamischen Feldes). Ich wäre auch sehr dankbar für Vorschläge, vor allem Syntaxfehler betreffend. Ich bin wie erwähnt bisher nur mit minimalsten Erfahrungen in Perl ausgestattet:
Code: Select all
package Kernel::System::GenericAgent::DispatchCustomerTickets;
use strict;
use warnings;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# check needed objects
for (qw(DBObject ConfigObject MainObject EncodeObject TicketObject)) {
$Self->{$_} = $Param{$_} || die "Got no $_!";
}
#print "Self: $Self\n";
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
my %ticket;
my $dynField;
my $newOwner;
# get ticket data
%ticket = $Self->{TicketObject}->TicketGet(
%Param,
DynamicFields => 1,
);
# get dynamic field value
$dynField = %ticket->DynamicField_Bezeichnung;
# check the dynField value and assign the new owner depending on that value
if ($dynField eq '0001') {
$newOwner = 'kleinst';
} elsif ($dynField eq '0002') {
$newOwner = 'schneider';
} elsif ($dynField eq '0003') {
$newOwner = 'meloth';
}
# assign the ticket to the queue "Support"
$Self->{TicketObject}->TicketQueueSet(
TicketID => $Param{TicketID},
Queue => 'Support',
);
# assign the new ticket owner
$Self->{TicketObject}->TicketQueueSet(
TicketID => $Param{TicketID},
NewUser => $newOwner,
);
return 1;
}
1;
Version: OTRS version 3.3.4 mit ITSM und KIX4OTRS
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
Re: If-Then-Else mit GenericAgent realisieren?
Hi,thr wrote:Hallo zusammen,
langer Rede kurzer Sinn, ich bin ziemlich neu in OTRS, habe damit aber einen Workflow zu realisieren. Benutzt wird Version 3.3.4 mit ITSM und der KIX4OTRS-Erweiterung.
Und zwar habe ich das Problem, dass ich Customer-Tickets direkt ihren Agenten zuweisen soll. Wenn jemand diese Frage beantworten kann, erübrigt sich nämlich schon das ganze Problem. Gibt es eine Möglichkeit, dass ein Customer direkt beim Erstellen den Besitzer eines Tickets auswählen kann? Wenn Agenten Tickets erstellen geht das ja, da gibt es ein Feld für den Besitzer, geht das auch bei Kunden?
ich verstehe zwar nicht, wie ein Kunde wissen kann, welcher von 130 Bearbeitern sein Problem lösen kann, aber gut...
Ich würde an deiner Stelle deine so genannten Kunden, die offensichtlich Kollegen oder ähnliches sind, das AgentenInterface benutzen lassen.
Mit speziellen Rechten und ausschließlich create-Rechte auf deine Default-Queue. Jetzt könntest du ein Prozess-Ticket / ActivityDialog bauen, der deinem jetzigen Kundenfrontend (CustomerTicketMessage) ähnelt, dann hast du dein Owner beim Ticket-Erstellen. Wenn du es richtig schön machen willst, verknüpfst du den Prozess bzw. die erste Activity mit einer neuen Action in deinem Ticket-Menu. http://blog.otrs.org/2010/11/02/otrs-3- ... nt-page-1/ (geht auch mit ActivityDialogs)
Du solltest dir aber wirklich nochmal durch den Kopf gehen lassen, ob es nicht sinnvoller ist den Kunden eine Kategorie/Queue/Service auswählen zu lassen, anstatt seinen Berater.
Ich würde immer nur meinen "Lieblings-super-Berater" auswählen und der hat dann in Kürze 9999999 Tickets und Berater-X nur 3... u know?

cheers
swype
Helpdesk: Guten Tag, wie kann ich Ihnen helfen?
Kunde: Hallo... ich kann nicht drucken.
Helpdesk: Klicken Sie bitte mal auf Start und...
Kunde: Fangen Sie jetzt bitte nicht mit diesem ganzen technischen Scheiß an. Ich bin nicht Bill Gates!
Kunde: Hallo... ich kann nicht drucken.
Helpdesk: Klicken Sie bitte mal auf Start und...
Kunde: Fangen Sie jetzt bitte nicht mit diesem ganzen technischen Scheiß an. Ich bin nicht Bill Gates!
Re: If-Then-Else mit GenericAgent realisieren?
Hey, ja mittlerweile hab ich das Konzept noch etwas überdacht ^^
Hatte es auch in der englischen Area reingepostet und da auch schon einen ähnlichen Ansatz erklärt bekommen. Trotz allem, danke für die Antwort ^^
Hatte es auch in der englischen Area reingepostet und da auch schon einen ähnlichen Ansatz erklärt bekommen. Trotz allem, danke für die Antwort ^^
Version: OTRS version 3.3.4 mit ITSM und KIX4OTRS
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2
OS: Debian6 x64
Datenbank: MySQL
Webserver: Apache2