Dynamisches Feld wird von Webservice nicht ausgefüllt. Wieso?

Hilfe zu OTRS Problemen aller Art
Post Reply
danielwe
Znuny newbie
Posts: 12
Joined: 02 Apr 2024, 08:51
Znuny Version: 7.0
Real Name: Daniel

Dynamisches Feld wird von Webservice nicht ausgefüllt. Wieso?

Post by danielwe »

Hallo zusammen,

ich sitze gerade an einer Verbindung unseres Ticketsystems an Jira. Bisher funktioniert eigentlich alles. Der Invoker schickt eine Anfrage an unsere Jira-Instanz und erstellt dort dann eine entsprechende Aufgabe. Jira sendet dann seinerseits brav die ID der neuen Aufgabe zurück. Nun möchte ich natürlich die ID in einem Custom-Field innerhalb meines Tickets speichern, was eigentlich kein Thema sein sollte. Allerdings passiert einfach nix. Keine Fehlermeldung, aber auch kein Eintrag in der Ticket-History und kein Eintrag im entsprechenden Feld.

Hier mal meine Mapping-Konfiguration:

Ausgehend: (Hier funktioniert alles.)

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" version="1.0" extension-element-prefixes="date">
   <xsl:output method="xml" encoding="utf-8" indent="yes" />
   <xsl:template match="RootElement">
      <xsl:copy>
         <fields>
            <!-- Jira-Fields -->
            <project>
               <key>MYPROJECT</key>
            </project>
            <summary>
               <xsl:value-of select="//Ticket/Title" />
            </summary>
            <description>
               <xsl:value-of select="//Body" />
            </description>
            <issuetype>
               <name>Task</name>
            </issuetype>
         </fields>
         <xsl:apply-templates />
      </xsl:copy>
   </xsl:template>
   <!-- Remove Ticket, Article, Attachment and CustomerUser elements -->
   <xsl:template match="content|TicketNumber|TicketID|DynamicField|Ticket|Article|Attachment|CustomerUser" />
</xsl:stylesheet>

Eingehend:
Der Name des erstellten Feldes lautet wie unschwer zu erraten jiraIssueID. Es ist vom Typ Text (nicht Textfeld).

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" version="1.0" extension-element-prefixes="date">
   <xsl:output method="xml" encoding="utf-8" indent="yes" />
   <xsl:template match="RootElement">
      <xsl:copy>
         <Ticket>
            <DynamicField>
               <Name>jiraIssueID</Name>
               <Value>
                  <xsl:value-of select="id" />
               </Value>
            </DynamicField>
         </Ticket>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

Hier das, was der Debugger nach dem Mapping ausspuckt:

Code: Select all

$VAR1 = {
  'Ticket' => {
    'DynamicField' => {
      'Name' => 'jiraIssueID',
      'Value' => '96489'
    }
  }
};
Das sieht für mich alles soweit gut aus. Die Daten nach dem Mapping stimmen also wo genau habe ich meine Denkfehler? Wieso bleibt das Feld leer und wird nicht gefüllt? Wieso bekomme ich nicht wenigstens einen Fehler angezeigt?

Vielen Dank schon einmal für die Hilfe und viele Grüße
Daniel
root
Administrator
Posts: 3969
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Dynamisches Feld wird von Webservice nicht ausgefüllt. Wieso?

Post by root »

Hallo,

Erste Frage: sendet Jira die Antwort oder ist die jiraIssueID Teil des Response auf die Anfrage von Znuny?

Zweite Frage: das Zweite XSLT ist das Outbound mapping?

- Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

Use a test system - always.

Do you need professional services? Check out https://www.znuny.com/

Do you want to contribute or want to know where it goes ?
danielwe
Znuny newbie
Posts: 12
Joined: 02 Apr 2024, 08:51
Znuny Version: 7.0
Real Name: Daniel

Re: Dynamisches Feld wird von Webservice nicht ausgefüllt. Wieso?

Post by danielwe »

Hi,

zu den Fragen: Ja, Jira liefert die Werte als Antwort zurück. Das zweite ist das Inbound-Mapping.

Habe es allerdings schon mit Hilfe der Doku selbst lösen können. Anscheinend funktioniert das ganze mittlerweile komplett anders als in diversen Tutorials vermittelt. Man kann den Wert nicht einfach zuweisen sondern muss innerhalb des Inbound-Mappings die entsprechende Funktion OTRS_TicketDynamicFieldSet_Feldname aufrufen:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                xmlns:date="http://exslt.org/dates-and-times" 
                extension-element-prefixes="date">
	<xsl:output method="xml" encoding="utf-8" indent="yes"/>
	<xsl:template match="RootElement">
		<xsl:copy>
            
            <OTRS_TicketDynamicFieldSet_jiraIssueID>
               <xsl:value-of select="id" />
            </OTRS_TicketDynamicFieldSet_jiraIssueID>
		
		</xsl:copy>
	</xsl:template>
</xsl:stylesheet>
So wird dann ein Schuh draus.

Thema ist damit gelöst. Vielen Dank. :)
Post Reply