Webszolgáltatások¶
Egy új Webszolgáltatás típusú dinamikus mező létrehozásához az szükséges, hogy rendelkezzen egy már működő webszolgáltatással. Szükséges, hogy legyen legalább egy Generic::PassThrough
típusú meghívó is. Ez a meghívó lesz meghívva, hogy lekérje az adatokat a távoli kiszolgálóról. Az eredeti adatok, amelyek egy kérésben kerülnek elküldésre, hasonlóak a következő példához.
{
DynamicFieldID => 123,
DynamicFieldLabel => 'NameX',
DynamicFieldName => 'NameX',
DynamicFieldValue => 'Value',
Form => {
# Form fields
# ...
},
Ticket => {
# Ticket attributes
# ...
},
DynamicField => {
NameX => 'Value'
NameY => [ 'Value' ],
},
UserID => 123,
},
Form
- Ez a szakasz tartalmazza a mezőket a jelenlegi űrlapon a webböngészőben. Ezek az információk megváltoznak, amint a képernyőt kitöltik.
Ticket
Ez a szakasz (vagy más forrásobjektum, például
CustomerUser
) tartalmazza annak az objektumnak az attribútumait, amelyhez a dinamikus mező tartozik.Például az Új telefonos jegy képernyőn a szakasz üres, mivel a jegy még nem jött létre, de a jegy szabad mezők képernyőn az aktuális jegy információit tartalmazza.
DynamicField
- Ez a szakasz tartalmazza az összes beállított dinamikus mező összes nem üres értékét az aktuális objektumnál.
A legtöbb esetben a távoli kiszolgáló által igényelt adatok nagyon eltérőek lesznek a megadott adatoktól, ezért erősen ajánlott egy leképező modul használata a kimenő adatokhoz, hogy kifejezetten a távoli kiszolgáló hívásához formázza meg azokat.
A következő kimenő leképezési példa egy olyan XSLT leképezést mutat be, amely eldob minden adatot, és egy rögzített UserLogin
, Password
és TicketID
értéket állít be (ahogy egy TicketGet
műveletnél szükséges).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exsalt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmached tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<UserLogin>someuser</UserLogin>
<Password>somepassword</Password>
<TicketID>1</TicketID>
</RootElement>
</xsl:template>
</xsl:transform>
A kiszolgálótól érkező válasz is nagyon különböző lehet, ezért ebben az esetben is erősen ajánlott egy leképező modul használata a bejövő adatokhoz, hogy képes legyen feldolgozni az információkat. A válasznak kulcs és érték elemek listájának kell lennie.
A következő bejövő leképezési példa egy olyan XSLT leképezést mutat be, amely átalakítja a távoli kiszolgálótól származó TicketGet
művelet válaszból kapott eredményeket, kinyeri és megformázza az állapotot és a várólistát, amint azok válaszlehetőségként történő használata szükséges a dinamikus mezőnél.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exsalt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmached tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<xsl:apply-templates />
</RootElement>
</xsl:template>
<xsl:template match="/*/Ticket">
<PossibleValue>
<Key>State</Key>
<Value>
<xsl:value-of select="/*/Ticket/State" />
</Value>
</PossibleValue>
<PossibleValue>
<Key>Queue</Key>
<Value>
<xsl:value-of select="/*/Ticket/Queue" />
</Value>
</PossibleValue>
</xsl:template>
</xsl:transform>
A következő webszolgáltatás-meghatározás (importálható YAML-fájl) használható a mező teszteléséhez, de a végpontot át kell alakítani, hogy illeszkedjen a jelenlegi rendszerhez. Ez a webszolgáltatás kérelmezőként és szolgáltatóként is működik, és mindig az 1-es TicketID
állapotát és várólistáját adja vissza, mint a mező lehetséges értékeit.
Megjegyzés
Ezt a példát nem szabad együtt használni a fejlesztői webkiszolgálóval.
---
Debugger:
DebugThreshold: debug
TestMode: '0'
Description: Dynamic Field Web Service Test
FrameworkVersion: 7.0.x git
Provider:
ErrorHandling: {}
ErrorHandlingPriority: []
Operation:
TicketGet:
Description: ''
IncludeTicketData: ''
MappingInbound: {}
MappingOutbound: {}
Type: Ticket::TicketGet
Transport:
Config:
AdditionalHeaders: ~
MaxLength: '100000000'
NameSpace: https://www.otrs.org/TicketConnector/
RequestNameFreeText: ''
RequestNameScheme: Plain
ResponseNameFreeText: ''
ResponseNameScheme: Response
Type: HTTP::SOAP
RemoteSystem: ''
Requester:
ErrorHandling: {}
ErrorHandlingPriority: []
Invoker:
TicketGet:
Description: Get possible values from the other side.
Events: []
MappingInbound:
Config:
Template: |-
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2001-2023 OTRS AG, https://otrs.com/
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (GPL). If you
did not receive this file, see https://www.gnu.org/licenses/gpl.txt.
-->
<!-- DOCUMENTATION
* Example XML Input *
<RootElement>
...
</RootElement>
* Example XML Output *
<RootElement>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
...
</RootElement>
-->
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exslt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmatched tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<xsl:apply-templates />
</RootElement>
</xsl:template>
<xsl:template match="/*/Ticket">
<PossibleValue>
<Key>State</Key>
<Value><xsl:value-of select="/*/Ticket/State" /></Value>
</PossibleValue>
<PossibleValue>
<Key>Queue</Key>
<Value><xsl:value-of select="/*/Ticket/Queue" /></Value>
</PossibleValue>
</xsl:template>
</xsl:transform>
Type: XSLT
MappingOutbound:
Config:
Template: |-
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2001-2023 OTRS AG, https://otrs.com/
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (GPL). If you
did not receive this file, see https://www.gnu.org/licenses/gpl.txt.
-->
<!-- DOCUMENTATION
* Example XML Input *
<RootElement>
...
</RootElement>
* Example XML Output *
<RootElement>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
...
</RootElement>
-->
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exslt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmatched tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<UserLogin>someuser</UserLogin>
<Password>somepassword</Password>
<TicketID>1</TicketID>
</RootElement>
</xsl:template>
</xsl:transform>
Type: XSLT
Type: Generic::PassThrough
Transport:
Config:
Encoding: ''
Endpoint: https://localhost/otrs/nph-genericinterface.pl/Webservice/GenericConfigItemConnectorSOAP
NameSpace: https://www.otrs.org/TicketConnector/
RequestNameFreeText: ''
RequestNameScheme: Plain
ResponseNameFreeText: ''
ResponseNameScheme: Response
SOAPAction: Yes
SOAPActionSeparator: '#'
SSL:
SSLProxy: ''
SSLProxyPassword: ''
SSLProxyUser: ''
Type: HTTP::SOAP
UseMappedData: '1'