STAM#50268 Koppeling met Topdesk (JSON connector)

svn path=/Website/branches/v2019.1/; revision=42648
This commit is contained in:
Erik Groener
2019-05-22 12:23:36 +00:00
parent 6e986fa041
commit aff734aa9c
2 changed files with 173 additions and 81 deletions

View File

@@ -67,7 +67,7 @@ ANONYMOUS_Allowed = 1;
break;
}
topdesk_url = topdesk_baseurl + topdesk_url;
__DoLog("URL to TOPdesk: " + topdesk_url);
__Log("URL to TOPdesk: " + topdesk_url);
var errmsg = "";
var status = -1;
var data = {};
@@ -211,7 +211,7 @@ ANONYMOUS_Allowed = 1;
}
// *************************************************************************
__DoLog("*> TOPdesk.api");
__Log("*> TOPdesk.api");
var obj_topdesk = {};
var facilitor = load_headerdata();
obj_topdesk = facilitor.topdesk;
@@ -234,7 +234,7 @@ ANONYMOUS_Allowed = 1;
for (var i = 0; i < lookup_list.lookup.length; i++)
{
var z_info = lookup_list.lookup[i];
__DoLog(z_info); // Wat zoek ik waar op en waar zet ik het resultaat weer neer.
__Log(z_info); // Wat zoek ik waar op en waar zet ik het resultaat weer neer.
obj_topdesk.lookup = lookup_list.lookup[i]; // Voeg de parameters voor lookup toe.
// doe een connectTopdesk met een aanvraag voor gegevens (lookup is altijd GET!)
var z_result = connectTopdesk("GET", z_info.actie, obj_topdesk);
@@ -254,11 +254,11 @@ ANONYMOUS_Allowed = 1;
}
}
__DoLog(obj_topdesk);
__Log(obj_topdesk);
var result = connectTopdesk(obj_topdesk.info.methode, obj_topdesk.info.actie, obj_topdesk);
update_opdracht(obj_topdesk.info.methode, obj_topdesk.info.actie, facilitor.melding, result);
log_result(result);
__DoLog("*< TOPdesk.api");
__Log("*< TOPdesk.api");
Response.Write(JSON.stringify(result));
//Response.End;

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-15"?>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
@@ -9,9 +9,13 @@
<xsl:copy-of select="facilitor/header"/>
</xsl:copy>
<melding>
<mld_melding_key><xsl:value-of select="facilitor/opdracht/melding/key"/></mld_melding_key>
<mld_melding_key>
<xsl:value-of select="facilitor/opdracht/melding/key"/>
</mld_melding_key>
<opdracht>
<mld_opdr_key><xsl:value-of select="facilitor/opdracht/key"/></mld_opdr_key>
<mld_opdr_key>
<xsl:value-of select="facilitor/opdracht/key"/>
</mld_opdr_key>
</opdracht>
</melding>
<topdesk>
@@ -20,12 +24,6 @@
<xsl:variable name="topdesk_key"></xsl:variable>
<xsl:variable name="topdesk_url"></xsl:variable>
<!-- de basisgegevens om een melding aan te kunnen maken in Topdesk: -->
<xsl:variable name="opdrachtomschrijving"></xsl:variable>
<xsl:variable name="soortmelding_id"></xsl:variable>
<xsl:variable name="categorie_id"></xsl:variable>
<xsl:variable name="subcategorie_id"></xsl:variable>
<!-- ******** -->
<xsl:variable name="v_methode">
<xsl:call-template name="get_methode">
@@ -38,36 +36,43 @@
</xsl:call-template>
</xsl:variable>
<info>
<api_user><xsl:value-of select="$topdesk_user"/></api_user>
<api_key><xsl:value-of select="$topdesk_key"/></api_key>
<base_url><xsl:value-of select="$topdesk_url"/></base_url>
<methode><xsl:value-of select="$v_methode"/></methode>
<actie><xsl:value-of select="$v_actie"/></actie>
<api_user>
<xsl:value-of select="$topdesk_user"/>
</api_user>
<api_key>
<xsl:value-of select="$topdesk_key"/>
</api_key>
<base_url>
<xsl:value-of select="$topdesk_url"/>
</base_url>
<methode>
<xsl:value-of select="$v_methode"/>
</methode>
<actie>
<xsl:value-of select="$v_actie"/>
</actie>
<xsl:choose>
<xsl:when test="$v_actie = 'incident'">
<xsl:call-template name="getInfoIncident"/>
</xsl:when>
<xsl:when test="$v_actie = 'change'">
<xsl:call-template name="getInfoChange"/>
</xsl:when>
</xsl:choose>
</info>
<data>
<xsl:variable name="prefix" select="facilitor/opdracht/melding/discipline/srtdiscipline/prefix"/>
<xsl:variable name="mldkey" select="facilitor/opdracht/melding/key"/>
<xsl:variable name="volgnr" select="facilitor/opdracht/bedrijfopdr_volgnr"/>
<briefDescription>
<xsl:value-of select="facilitor/opdracht/melding/stdmelding/omschrijving"/>
</briefDescription>
<request><xsl:value-of select="$opdrachtomschrijving"/></request>
<caller>
<dynamicName><xsl:value-of select="$topdesk_user"/></dynamicName>
</caller>
<externalNumber>
<xsl:value-of select="concat($prefix,$mldkey,'/',$volgnr)"/>
</externalNumber>
<callType>
<id><xsl:value-of select="$soortmelding_id"/></id>
</callType>
<category>
<id><xsl:value-of select="$categorie_id"/></id>
</category>
<subcategory>
<id><xsl:value-of select="$subcategorie_id"/></id>
</subcategory>
<xsl:choose>
<xsl:when test="$v_actie = 'incident'">
<xsl:call-template name="getDataIncident">
<xsl:with-param name="topdesk_user" select="$topdesk_user"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$v_actie = 'change'">
<xsl:call-template name="getDataChange">
<xsl:with-param name="topdesk_user" select="$topdesk_user"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</data>
</topdesk>
</facilitor>
@@ -76,7 +81,7 @@
<xsl:template name="get_methode">
<!-- Zoek de meest recente actie van de opdracht -->
<xsl:param name="p_opdracht"/>
<xsl:for-each select="facilitor/opdracht/tracking/track">
<xsl:for-each select="facilitor/opdracht/tracking/track[code != 'ORDMLE']">
<xsl:sort select="datum/timestamp" order="descending" data-type="number"/>
<xsl:if test="position() = 1">
<xsl:choose>
@@ -88,9 +93,96 @@
</xsl:template>
<xsl:template name="get_actie">
<!-- Welke API-opdracht moet worden uitgevoerd -->
<!-- Welke API-opdracht moet worden uitgevoerd: altijd in kleine letters -->
<xsl:param name="p_opdracht"/>
<xsl:text>incident</xsl:text>
<xsl:variable name="v_opdracht" select="facilitor/opdracht/opdrachttype/omschrijving"/>
<xsl:value-of select="translate($v_opdracht, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ<59><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޟ<EFBFBD><DE9F><EFBFBD>', 'abcdefghijklmnopqrstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>')" />
</xsl:template>
<xsl:template name="get_template_id">
<xsl:variable name="stdmelding_oms" select="facilitor/opdracht/melding/stdmelding/omschrijving"/>
<xsl:choose>
<xsl:when test="$stdmelding_oms = 'Non standard Change IT IM org'">XX NNNNN</xsl:when>
<!-- 85253d50-fc91-421a-ac23-b8791f220ce2 ???????? SMCSSR001 - CMDB aanpassing -->
<xsl:when test="$stdmelding_oms = 'Non standard Change IT IM'">CT 36327</xsl:when>
<!-- "id": "b3cbe6d7-648a-41bb-adbc-322612833e1c","number": "CT 36327", "briefDescription": "Test - CAT2 - Category 2 change" -->
</xsl:choose>
</xsl:template>
<!--
**** Incident Management data
-->
<xsl:template name="getInfoIncident">
<lookup_list>
</lookup_list>
</xsl:template>
<xsl:template name="getDataIncident">
<xsl:param name="topdesk_user"/>
<!-- de basisgegevens om een melding aan te kunnen maken in Topdesk: -->
<xsl:variable name="opdrachtomschrijving"></xsl:variable>
<xsl:variable name="soortmelding_id"></xsl:variable>
<xsl:variable name="categorie_id"></xsl:variable>
<xsl:variable name="subcategorie_id"></xsl:variable>
<xsl:variable name="prefix" select="facilitor/opdracht/melding/discipline/srtdiscipline/prefix"/>
<xsl:variable name="mldkey" select="facilitor/opdracht/melding/key"/>
<xsl:variable name="volgnr" select="facilitor/opdracht/bedrijfopdr_volgnr"/>
<briefDescription>
<xsl:value-of select="facilitor/opdracht/melding/onderwerp"/>
</briefDescription>
<request>
<xsl:value-of select="facilitor/opdracht/omschrijving"/>
</request>
<caller>
<dynamicName><xsl:value-of select="$topdesk_user"/></dynamicName>
</caller>
<externalNumber>
<xsl:value-of select="concat($prefix,$mldkey,'/',$volgnr)"/>
</externalNumber>
<callType>
<id>3b4e1c80-be3b-5b35-b6f2-5330a9acdb64</id>
</callType>
<category>
<id>4ae0eeee-88ce-4ae4-bd3e-e0cd8db4b3a8</id>
</category>
<subcategory>
<id>cda26297-78e2-4e58-a71e-9a519878900a</id>
</subcategory>
</xsl:template>
<!--
**** Change Management data, obv mailadres moet de aanvrager bepaald worden
-->
<xsl:template name="getInfoChange">
<lookup_list>
<lookup>
<actie>person</actie>
<qparams>
<xsl:value-of select="concat('?email=', facilitor/opdracht/melding/melder/email)"/>
</qparams>
<src>data[0].id</src>
<dest>data.requester.id</dest>
</lookup>
</lookup_list>
</xsl:template>
<xsl:template name="getDataChange">
<xsl:param name="topdesk_user"/>
<xsl:variable name="prefix" select="facilitor/opdracht/melding/discipline/srtdiscipline/prefix"/>
<xsl:variable name="mldkey" select="facilitor/opdracht/melding/key"/>
<xsl:variable name="volgnr" select="facilitor/opdracht/bedrijfopdr_volgnr"/>
<template><number><xsl:call-template name="get_template_id"/></number></template>
<briefDescription><xsl:value-of select="facilitor/opdracht/melding/stdmelding/omschrijving"/></briefDescription>
<request><xsl:value-of select="facilitor/opdracht/omschrijving"/></request>
<requester><id/></requester>
<externalNumber><xsl:value-of select="concat($prefix,$mldkey,'/',$volgnr)"/></externalNumber>
</xsl:template>
</xsl:stylesheet>