Modifizieren von Prozesstickets via Mail

Allgemein Fragen, deutsche News, Ankündigungen & Events zum OTRS
Post Reply
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo zusammen,

ich möchte gerne vorhandene Prozesstickets im System anhand von eingehenden Mails modifizieren. Ich habe jedoch nicht die Ticketnummer, sondern nur ein eindeutig differenzierbares Dynamisches Feld. Kann ich das mit dem Postmasterfilter und oder GenericAgent realisieren?
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

*push*
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Modifizieren von Prozesstickets via Mail

Post by RStraub »

Postmasterfilter und GenericAgent können - soweit ich weiß - nur feste Werte setzen.

Wenn du basierend auf einem dynamischen Text etwas tun möchtest, wird das ggf. das Modul SystemMonitoring können, oder du schreibst dir ein eigenes.
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
reneeb
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: Modifizieren von Prozesstickets via Mail

Post by reneeb »

Was möchtest Du denn modifizieren? Gib am besten mal ein Beispiel...
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
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo reneeb,

ich habe folgendes Szenario:
Es werden Daten an einem bestimmten Ort abgelegt, welches ein Tool registiert und daraufhin eine Mail an das OTRS-System schickt. Ich kann dabei verschiedene Parameter im Betreff oder dem Mailtext übergeben. Diese Parameter entsprechen einem dynamischen Feld im System, welches schon befüllt ist. Anhand dem übergebenen Parameter soll das Maching zru Ticktnummer gemacht werden, damit ich im folgdenden ein dynamisches Feld des Tickets (Kontrollkästchen) auf checkt setzen kann.

Hier ein Beispiel:
Im Ticketsystem existiert Ticket mit dem dynamischen Feld "Teilenummer" mit dem Wert "ACB123456".
Das Ticketsystem bekommt über die Postmastermail eine Mail mit dem Betreff "ABC123456" und dem Mailtext "Messung X". Das Feld "Messung X" ist als dynamisches Feld vorhanden (Kontrollkästchen). Jetzt soll das Kontrollkästchen (Feld "Messung X") des betreffenden Tickets auf checked gesetzt werden.

Ich hoffe, dass die Erläuterung hilft... Ich dachte, dass der Postmaster ja in der Lage ist mit der Ticketnummer zu arbeiten. Warum dann nicht mit dynamischen Feldern. Falls das nicht ginge, brauche ich einen Zugriff auf die Datenbank, um die Ticketnummer zu entschlüsseln und in den Betreff zu hängen.

Danke für die Anwort!
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

Das wäre mit einer Webservice-Schnittstelle besser zu lösen...
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

ich habe leider noch keinerlei Erfahrung mit der Webservice-Schnittstelle... Die Dokumentation hat mir bis jetzt leider nichts gebracht.
Wäre es möglich ein einfaches Beispiel zu posten? Vielen Dank!
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

Uff. Ein einfaches Beispiel habe ich direkt nicht. Ich nutze die Schnittstelle mit Hilfe eines Kommunikationsservers, das macht da das Leben rel. einfach. Aber Hexenwerk ist das ganze nicht.

Beispiel:
http://blog.otrs.org/2012/10/03/easy-ti ... interface/
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

ich habe mittlerweile ein bisschen rumprobiert und folgendes *.yml erstellt:

Code: Select all

---
Debugger:
  DebugThreshold: debug
  TestMode: '0'
Description: Ticketnummer rausfinden
FrameworkVersion: 4.0.8
Provider:
  Operation:
    Ticketholen:
      Description: ''
      MappingInbound:
        Type: Simple
      MappingOutbound:
        Type: Simple
      Type: Ticket::TicketSearch
  Transport:
    Config:
      KeepAlive: ''
      MaxLength: '100000'
      RouteOperationMapping:
        Ticketholen:
          RequestMethod:
          - GET
          Route: /Ticketholen/:TicketID
    Type: HTTP::REST
RemoteSystem: ''
Requester:
  Transport:
    Type: ''
Ich gebe in den Browser dann den folgenden Link ein:
http://.../otrs/nph-genericinterface.pl/Webservice/Ticketnummer/Ticketholen/50

Leider bekomme ich immer die folgende Fehlermeldung:
{"Error":{"ErrorCode":"TicketSearch.AuthFail","ErrorMessage":"TicketSearch: Authorization failing!"}}

Ich müsste wohl noch eine Autentifizierung mitschicken. Ich weiß aber nicht wie das geht... Einfach noch die relevanten Parameter mitschicken?
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

Schau mal da:
https://github.com/OTRS/otrs/tree/maste ... ebservices

da gibt es eine yml und die dazu passende wdsl.

Das habe ich hergenommen.

Du kannst mit SessionCreate eine SessionID ziehen und damit dann die anderen Aktionen (TicketCreate,TicketSearch,TicketGet,TicketUpdate) ausführen, indem Du im AuthTeil die SessionID verfütterst. Alternativ kannst Du mit jeder Nachricht das Auth direct durchführen, erzeugst damit aber einen Haufen Sessions.
Ich habe mir dazu im OTRS einen "TechnicalUser" als Agent (CustomerUser reicht nicht!) eingerichtet, den ich dann für das Auth hernehme. Der muss natürlich auch die entsprechenden Rechte auf die Queues haben.
Parallel dazu dann das Debug im GenericInterface hochgedreht, dann kommt man rel. schnell drauf, was geht und was nicht, sowie was wichtig ist.

Ach ja: Ich habe das mit SOAP gemacht, nicht mit der REST-Schnittstelle, da kann ich Dir auch nicht wirklich weiterhelfen. SOAP hat aber einwandfrei funktioniert.
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

ich kann das natürlich auch per SOAP machen. Das ist mir prinzipiell egal. Es sollte nur funtionieren... und das tut es bis jetzt leider nicht :(.
Ich habe die GenericTicketConnectorSOAP.yml via "Webservice importieren" ins System importiert.
Dann habe ich aber noch die zwei Dateien "otrs.SOAPRequest.pl" und "GenericTicketConnectorSOAP.wsdl". Die "otrs.SOAPRequest.pl" schätze ich kommt in ../var/otrs/bin/, aber was mache ich mit der "GenericTicketConnectorSOAP.wsdl"?
Wie kann ich dann die Abfrage machen?

Kannst Du mir bitte nochmal weiterhelfen? Bin einfach zu blöd, oder habe die richtige Doku nicht gefunden... Danke!
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

GenericTicketConnectorSOAP.wsdl:
Ist die Beschreibung der Nachrichten der Schnittstelle. Viele Tools können anhand der Beschreibung das korrekte Nachrichtenformat generieren und die zurückgelieferte Antwort auswerten. D.h. Du kannst das für Dein Programm benutzen, wenn es damit umgehen kann.
otrs.SOAPRequest.pl:
Ein Beispiel, wie mittels des Connectors ein Ticket generiert wird. -> Das muss nirgends hinkopiert werden. Ist halt ein (lesenswertes) Beispiel.
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

glücklicherweise habe ich es nun geschafft, über SOAP mit dem OTRS zu kommunizieren. Allerdings stoße ich gerade auf ein Problem...
Ich suche nach einem Wert in einem Dynamischen Feld mit der Funktion "Like", wie sie auch in der TicketSearch.pm angegeben ist.
Es wird aber nichts ausgegeben. Wenn ich die Funktion "Equals" benutze und alles genau angebe funktioniert es, genauso wenn ich bei "Like" ohne Wildcard arbeite.

Bsp.: (funktioniert nicht)

Code: Select all

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><TicketSearch xmlns="http://www.otrs.org/TicketConnector/">
<UserLogin>MeinLogin</UserLogin>
<Password>MeinPasswort</Password>
<DynamicField_NamedesdynamischenFelds>
<Like>1AB11*</Like>
</DynamicField_NamedesdynamischenFelds>
</TicketSearch></soap:Body></soap:Envelope>
Bsp.: (funktioniert)

Code: Select all

[code]<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><TicketSearch xmlns="http://www.otrs.org/TicketConnector/">
<UserLogin>MeinLogin</UserLogin>
<Password>MeinPasswort</Password>
<DynamicField_NamedesdynamischenFelds>
<Equals>1AB11 CE</Equals>
</DynamicField_NamedesdynamischenFelds>
</TicketSearch></soap:Body></soap:Envelope>
Ist dies einfach nur ein Bug, dass die Wildcardfunktion nicht geht oder habe ich etwas übersehen?
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

Sorry, da muss ich passen. Im Bugtracker finde ich dazu nichts. Ich weiss auch nicht ob "like" an der stelle unterstützt wird.
Was sagt denn das Debug.log des Webservices?
Probier aber mal:
<Like>1AB11.*</Like>
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

Ach ja: Hilfreich dabei ist ein Tool Namens "SOAP UI"
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

in der "TicketSearch.pm" unter "../var/otrs/Kernel/GenericInterface/Operation/Ticket/" steht unter Zeile 137 ff. folgendes drin:

Code: Select all

# DynamicFields
        #   At least one operator must be specified. Operators will be connected with AND,
        #       values in an operator with OR.
        #   You can also pass more than one argument to an operator: ['value1', 'value2']
        DynamicField_FieldNameX => {
            Equals            => 123,
            Like              => 'value*',                # "equals" operator with wildcard support
            GreaterThan       => '2001-01-01 01:01:01',
            GreaterThanEquals => '2001-01-01 01:01:01',
            SmallerThan       => '2002-02-02 02:02:02',
            SmallerThanEquals => '2002-02-02 02:02:02',
        }
Daher bin ich davon ausgegangen, dass das geht. Ich werde aber mal noch das von Dir genannte Tool ausprobieren.
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Liebe Community,

ich habe leider nach wie vor das Problem, dass die SOAP-Funktion "TicketSearch" nicht mit dem "Like"-Befehl funktioniert. Ich habe mir nochmals die "GenericTicketConnectorSOAP.wsdl" angeschaut und da wird die Funktion "Like" auch unter "OTRS_TicketSearch_DynamicField" (siehe Zeile 2115 ff) folgendermaßen aufgeführt:

Code: Select all

    <xsd:complexType name="OTRS_TicketSearch_DynamicField">
        <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Equals, Like, GreaterThan, GreaterThanEquals, SmallerThan or SmallerThanEquals is mandatory</xsd:documentation>
                </xsd:annotation>
                <xsd:element
                    name="Equals"
                    type="xsd:string"
                    minOccurs="0" maxOccurs="1">
                </xsd:element>
                <xsd:element
                    name="Like"
                    type="xsd:string"
                    minOccurs="0" maxOccurs="1">
                </xsd:element>
                <xsd:element
                    name="GreaterThan"
                    type="xsd:string"
                    minOccurs="0" maxOccurs="1">
                </xsd:element>
                <xsd:element
                    name="GreaterThanEquals"
                    type="xsd:string"
                    minOccurs="0" maxOccurs="1">
                </xsd:element>
                <xsd:element
                    name="SmallerThan"
                    type="xsd:string"
                    minOccurs="0" maxOccurs="1">
                </xsd:element>
                <xsd:element
                    name="SmallerThanEquals"
                    type="xsd:string"
                    minOccurs="0" maxOccurs="1">
                </xsd:element>
            </xsd:choice>
        </xsd:sequence>
    </xsd:complexType>
Ich weiß nicht was ich da falsch mache (Syntax, Zeichen, etc). Kann mir bitte jemand weiterhelfen?
Kann man auch reguläre Ausdrücke mit "Equals" vielleicht benutzen, um einen möglichen Bug zu umgehen?
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

Welche Version setzt Du ein?
Ich habe das ganze mal bei mir nachgestellt und sowohl equal als auch like funktionieren tadellos und wie erwartet. Version 4.0.8.
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

ich habe die gleiche Version ( 4.0.8 ) wie Du und bei mir will es einfach nicht funktionieren... Ich erkläre es nochmals ausführlich:
Ich suche nach einer Ventilnummer. Diese ist als dynamisches Feld angelegt:

Name: VentilnummerTicket
Feldtyp: Text
RegEx: ^[0-9][A-Z]{2}[0-9]{2}\s[0-9]{4,5}\.[0-9]{2}[A-Z]$

Dann habe ich in der Datenbank ein Ticket mit dem dynamischen Feld und Feldwert "1KX00 0036.00D"

Wenn ich nun mit meinem VBA-Tool die SOAP-Anfrage mache, kann ich im Debugger folgendes nachvollziehen (für "1KX00 0036.00D"):

Received data by Provider from remote system

Code: Select all

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><TicketSearch xmlns="http://www.otrs.org/TicketConnector/"><UserLogin>MeinLogin</UserLogin><Password>MeinPasswort</Password><DynamicField_VentilnummerTicket><Like>1KX00 0036.00D</Like></DynamicField_VentilnummerTicket></TicketSearch></soap:Body></soap:Envelope>
Detected operation 'TicketSearch'

Code: Select all

No data provided
Incoming data before mapping

Code: Select all

$VAR1 = {
  'DynamicField_VentilnummerTicket' => {
    'Like' => '1KX00 0036.00D'
  },
  'Password' => 'MeinLogin',
  'UserLogin' => 'MeinPasswort'
};
Outgoing data before mapping

Code: Select all

$VAR1 = {
  'TicketID' => [
    '67'
  ]
};
Das funktioniert soweit. Wenn ich nun die "Like"-Funktion mit Wildcard benutze funktioniert es nicht mehr (mit z.B.: "1KX00 0036*"):

Received data by Provider from remote system

Code: Select all

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><TicketSearch xmlns="http://www.otrs.org/TicketConnector/"><UserLogin>MeinLogin</UserLogin><Password>MeinPasswort</Password><DynamicField_VentilnummerTicket><Like>1KX00 0036*</Like></DynamicField_VentilnummerTicket></TicketSearch></soap:Body></soap:Envelope>
Detected operation 'TicketSearch'

Code: Select all

No data provided
Incoming data before mapping

Code: Select all

$VAR1 = {
  'DynamicField_VentilnummerTicket' => {
    'Like' => '1KX00 0036*'
  },
  'Password' => 'MeinPasswort',
  'UserLogin' => 'MeinLogin'
};
Outgoing data before mapping

Code: Select all

No data provided
Ich weiß nicht was ich da falsch gemacht haben soll =/. Danke für Deine Hilfe!
Hazet
Znuny wizard
Posts: 383
Joined: 19 Feb 2009, 12:05
Znuny Version: 5.0.9
Real Name: Harald Zahn
Company: Klinikum Augsburg
Location: Augsburg

Re: Modifizieren von Prozesstickets via Mail

Post by Hazet »

EDIT:
Unsinn geschrieben, daher gelöscht.

Sorry, dann habe ich keine Idee mehr.
Produktiv: OTRS 5.0.9 , (ITSM 5.0.10) unter Ubuntu 14.04, mysql 5.5
Test: OTRS 5.0.8 , (ITSM 5.0.8), KIX unter Ubuntu 14.04, mysql 5.5
newkommer
Znuny newbie
Posts: 77
Joined: 09 Mar 2015, 14:56
Znuny Version: 5.0.10

Re: Modifizieren von Prozesstickets via Mail

Post by newkommer »

Hallo Hazet,

ich habe es jetzt bei mir noch mit anderen Feldern probiert. Textfelder ohne RegEx funktionieren ohne Probleme, aber sobald eine Regel durch RegEx vorgegeben ist kommt kein richtiges Ergebnis mehr.

Außerdem habe ich bei dem besagten Feld einmal die RegEx herausgelöscht. Dann gibt die Funktion "Like" wunderbar... Fügt man den RegEx ein gibt es erneut keine Ausgabe. Ich glaube damit einen Bug gefunden zu haben.

Kann das jemand bestätigen?
Post Reply