Anpassen der XSLT-Definitionsdatei in Lync Server 2013
Thema Letzte Änderung: 11.09.2014
Der Compliancedienst zeichnet Daten im Zusammenhang mit jeder Lync Server 2013-Unterhaltung des Servers für beständigen Chat auf und archiviert sie, einschließlich, wenn ein Teilnehmer:
Beitritt zu einem Chatroom für beständigen Chat
Einen Chatroom verlässt
Eine Nachricht veröffentlicht
Den Chatverlauf anzeigt
Eine Datei hochlädt
Eine Datei herunterlädt
Die Daten werden als XML bereitgestellt, das Sie mithilfe einer XSLT-Definitionsdatei in das Für Ihre Organisation am besten geeignete Format umwandeln können. In diesem Thema wird die vom Konformitätsdienst erstellte XML-Datei beschrieben. Zudem werden Beispiele für XSLT-Definitions- und Ausgabedateien bereitgestellt.
Ausgabeformat
Die Ausgabe des Compliancediensts wird nach Unterhaltung (dem Conversation-Element) und dann nach Nachricht (dem Nachrichtenelement) kategorisiert, wie im folgenden Codebeispiel gezeigt.
<?xml version="1.0" encoding="utf-8" ?>
<Conversations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Conversation>
<Channel uri="ma-chan://litwareinc.com/300" name="ma-chan://litwareinc.com/300" islogged="" />
<!--FirstMessage goes here --!>
<Messages>
<!—Messages go here--!>
</Messages>
<StartTimeUTC since1970="1212610540953" string="2008-06-04T20:15:40.9535482Z" long="633482073409535482" />
<EndTimeUTC since1970="1212610602532" string="2008-06-04T20:16:42.5324614Z" long="633482074025324614" />
</Conversation>
</Conversations>
Ein Unterhaltungselement enthält vier Elemente („Channel“, „FirstMessage“, „StartTimeUTC“ und „EndTimeUTC“). Das Element „Channel“ enthält den Uniform Resource Identifier (URI) des Chatrooms und das Element „FirstMessage“ beschreibt das erste Element im Nachrichtenelement. Die Elemente "StartTimeUTC" und "EndTimeUTC" stellen die Start- und Endzeiten für die Unterhaltung bereit, wie im folgenden Codebeispiel gezeigt.
<<FirstMessage type="JOIN" content="" id="0">
<Sender UserName="TestUser kazuto" id="10" email="kazuto@litwareinc.com" internal="true" uri="kazuto@litwareinc.com" />
<DateTimeUTC since1970="1212610540953" string="2008-06-04T20:15:40.9535482Z" long="633482073409535482" />
</FirstMessage>
Ein Nachrichtenelement enthält zwei Elemente („Sender“ und „DateTimeUTC“) und drei Attribute („Type“, „Content“ und „ID“). Das Sender-Element stellt den Benutzer dar, der die Nachricht sendet, und das DateTimeUTC-Element stellt dar, wann ein Ereignis auftritt, wie im folgenden Codebeispiel gezeigt.
<Message type="JOIN" content="" id="0">
<Sender UserName="TestUser kazuto" id="10" email="kazuto@litwareinc.com" internal="true" uri="kazuto@litwareinc.com" />
<DateTimeUTC since1970="1206211842612" string="2008-03-22T18:50:42.6127374Z" long="633418086426127374" />
</Message>
In der folgenden Tabelle werden die Nachrichtenattribute „Type“, „Content“ und „ID“ beschrieben.
Nachrichtenelementattribute
Attribut | Beschreibung | Optional/erforderlich |
---|---|---|
Typ |
Gibt den Nachrichtentyp an. Die Nachrichtentypen werden in der Tabelle „Nachrichtenelemente – Nachrichtentypen“ beschrieben. |
Erforderlich |
Content |
Enthält den Inhalt der Nachricht. Nachrichten vom Typ „Join“ oder „Part“ verwenden dieses Attribut nicht. |
Optional |
ID |
Gibt die eindeutige ID des Inhalts an. Dieses Attribut wird nur mit Nachrichten vom Typ „Chat“ verwendet. |
Optional |
Jedes „Sender“-Element enthält fünf Attribute: „user name“, „ID“, „email“, „internal“ und „URI“. Diese Attribute sind in der folgenden Tabelle beschrieben.
„Sender“-Elementattribute
Attribut | Beschreibung | Optional/erforderlich |
---|---|---|
Username |
Der Name des Absenders. |
Optional |
ID |
Die eindeutige ID des Absenders. |
Erforderlich |
Die E-Mail-Adresse des Absenders |
Optional |
|
Intern |
Gibt an, ob es sich um einen internen Benutzer oder einen Verbundbenutzer handelt. Bei Festlegung des Werts auf „true“ (wahr) ist der Benutzer intern. |
Optional |
Uri |
Die SIP-URI des Benutzers. |
Erforderlich |
In der folgenden Tabelle werden die Nachrichtentypen beschrieben, die das Nachrichtenelement enthalten kann. Sie enthält auch Beispiele für die Verwendung der einzelnen Elemente.
Nachrichtenelemente – Nachrichtentypen
Nachrichtentyp | Beschreibung | Codebeispiel |
---|---|---|
Join |
Ein Benutzer betritt einen Chatroom. |
|
Part |
Ein Benutzer verlässt einen Chatroom. |
|
Chat |
Die E-Mail-Adresse des Absenders |
|
Backchat |
Ein Benutzer fordert Inhalte des Chatverlaufs an. |
|
File upload |
Ein Benutzer lädt eine Datei hoch. |
|
File download |
Ein Benutzer lädt eine Datei herunter. |
|
Standardausgabe-XSD für beständigen Chat und XSL-Beispieltransformation
Das folgende Codebeispiel enthält die Standardausgabe des Complianceservers.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Conversations" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:simpleType name="ComplianceMessageType">
<xs:restriction base="xs:string">
<xs:enumeration value="JOIN"/>
<xs:enumeration value="PART"/>
<xs:enumeration value="CHAT"/>
<xs:enumeration value="BACKCHAT"/>
<xs:enumeration value="FILEUPLOAD"/>
<xs:enumeration value="FILEDOWNLOAD"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Sender">
<xs:complexType>
<xs:attribute name="UserName" type="xs:string" />
<xs:attribute name="id" type="xs:int" />
<xs:attribute name="email" type="xs:string" use="optional" />
<xs:attribute name="internal" type="xs:boolean" use="optional" >
<xs:annotation><xs:documentation>If the user is internal or federated</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="uri" type="xs:anyURI" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="DateTimeUTC">
<xs:complexType>
<xs:attribute name="since1970" type="xs:long" />
<xs:attribute name="string" type="xs:string" />
<xs:attribute name="long" type="xs:long" />
</xs:complexType>
</xs:element>
<xs:element name="Conversations" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Sender" />
<xs:element ref="DateTimeUTC" />
<xs:element name="Conversation">
<xs:complexType>
<xs:sequence>
<xs:element name="Channel" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="uri" type="xs:anyURI" />
<xs:attribute name="name" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="FirstMessage" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="Sender" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="DateTimeUTC" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="type" type="ComplianceMessageType" />
<xs:attribute name="content" type="xs:string" />
<xs:attribute name="id" type="xs:int" />
</xs:complexType>
</xs:element>
<xs:element name="Messages" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Message" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="Sender" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="DateTimeUTC" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="type" type="ComplianceMessageType" />
<xs:attribute name="content" type="xs:string" />
<xs:attribute name="id" type="xs:int" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StartTimeUTC" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="since1970" type="xs:long" />
<xs:attribute name="string" type="xs:string" />
<xs:attribute name="long" type="xs:long" />
</xs:complexType>
</xs:element>
<xs:element name="EndTimeUTC" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="since1970" type="xs:long" />
<xs:attribute name="string" type="xs:string" />
<xs:attribute name="long" type="xs:long" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Das folgende Codebeispiel enthält eine XSL-Beispieltransformation.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<FileDump>
<xsl:apply-templates />
</FileDump>
</xsl:template>
<xsl:template match="Conversation">
<xsl:variable name="chanName" select="Channel/@name" />
<Conversation Perspective="{$chanName}_group_channel">
<RoomID><xsl:value-of select="Channel/@name" /></RoomID>
<StartTimeUTC><xsl:value-of select="StartTimeUTC/@since1970" /></StartTimeUTC>
<xsl:apply-templates />
<EndTimeUTC><xsl:value-of select="EndTimeUTC/@since1970" /></EndTimeUTC>
</Conversation>
</xsl:template>
<xsl:template match="Message">
<xsl:choose>
<xsl:when test="@type='JOIN'">
<ParticipantEntered>
<xsl:call-template name="DateTimeAndLogin" />
<InternalFlag><xsl:value-of select="Sender/@internal" /></InternalFlag>
<ConversationID><xsl:value-of select="../../Channel/@name" /></ConversationID>
<CorporateEmailID><xsl:value-of select="Sender/@email" /></CorporateEmailID>
</ParticipantEntered>
</xsl:when>
<xsl:when test="@type='PART'">
<ParticipantLeft>
<xsl:call-template name="DateTimeAndLogin" />
<InternalFlag><xsl:value-of select="Sender/@internal" /></InternalFlag>
<ConversationID><xsl:value-of select="../../Channel/@name" /></ConversationID>
<CorporateEmailID><xsl:value-of select="Sender/@email" /></CorporateEmailID>
</ParticipantLeft>
</xsl:when>
<xsl:when test="@type='FILEUPLOAD' or @type='FILEDOWNLOAD'">
<FileTransferStarted>
<xsl:call-template name="DateTimeAndLogin" />
<FileName><xsl:value-of select="@content" /></FileName>
</FileTransferStarted>
<FileTransferEnded>
<xsl:call-template name="DateTimeAndLogin" />
<FileName><xsl:value-of select="@content" /></FileName>
<Status>Completed</Status>
</FileTransferEnded>
</xsl:when>
<xsl:when test="@type='CHAT' or @type='BACKCHAT'">
<Message>
<xsl:call-template name="DateTimeAndLogin" />
<Content><xsl:value-of select="@content" /></Content>
</Message>
</xsl:when>
<xsl:otherwise />
</xsl:choose>
</xsl:template>
<xsl:template name="DateTimeAndLogin">
<LoginName><xsl:value-of select="Sender/@userName" /></LoginName>
<DateTimeUTC><xsl:value-of select="DateTimeUTC/@since1970" /></DateTimeUTC>
</xsl:template>
</xsl:stylesheet>