Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
-
<?xml version="1.0" ?> <xs:schema id="presence" version="2.0" targetNamespace="http://schemas.microsoft.com/09/2002/sip/presence" elementFormDefault="qualified" xmlns:tns="http://schemas.microsoft.com/09/2002/sip/presence" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ct="http://schemas.microsoft.com/sip/types"> <xs:annotation> <xs:documentation> Live Communications Server 2005 provides Instant Messaging and presence capabilities amongst users in an enterprise. A user can login using multiple devices. Each device presents its presence information to the server. The XML instance containing presence submitted to the server is called the Presence Document. When retrieving presence information for a user, the server not only returns the presence document from every device, but it also determines the overall presence of the user. This XML instance returned by the server is called the Aggregated Presence Document. This schema describes the structure of both the Presence Document consumed by the server as well as the Aggregated Presence Document generated by the server. </xs:documentation> </xs:annotation> <xs:import namespace="http://schemas.microsoft.com/sip/types" schemaLocation="common.xsd" /> <!-- Common Types --> <xs:simpleType name="aggregate"> <xs:restriction base="xs:nonNegativeInteger"> <xs:minInclusive value="0" /> <xs:maxInclusive value="999" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="epid"> <xs:annotation> <xs:documentation> Each device of a user is uniquely identified by its epid. This value cannot exceed 16 bytes. </xs:documentation> </xs:annotation> <xs:restriction base="xs:token" /> </xs:simpleType> <xs:simpleType name="ageOfPresence"> <xs:annotation> <xs:documentation> This is the number of seconds since the device last updated its presence information </xs:documentation> </xs:annotation> <xs:restriction base="xs:nonNegativeInteger" /> </xs:simpleType> <xs:complexType name="availability"> <xs:annotation> <xs:documentation> The purpose of availability is to indicate whether the user can receive a call. </xs:documentation> </xs:annotation> <xs:attribute name="aggregate" type="tns:aggregate" use="required" > <xs:annotation> <xs:documentation> The value of the aggregate attribute defines the availability of a user on a device. The aggregate values are processed by the server as being within a range that has a span of 100 (class code). The server interprets the values as falling within the following classes (with their corresponding interpretations): 000-099 The user cannot receive calls. 100-199 The user may be online but availability is unknown until a call is attempted. A cell phone gateway would typically use this setting. 200-299 The user has a device that is currently connected and can receive calls. 300-399 The user is in the proximity of a device that can receive calls. Rather than using a hard-coded enumeration a numeric value is value. This makes it easy to compare the availability sent by two different PUAs. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="description" type="xs:string" > <xs:annotation> <xs:documentation> The server always returns an empty string in the aggregated presence document. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="epid" type="tns:epid" /> </xs:complexType> <xs:complexType name="activity"> <xs:annotation> <xs:documentation> The purpose of activity is to indicate not whether a user can receive a call, but rather, to indicate to watchers how likely the user is to want to be disturbed. </xs:documentation> </xs:annotation> <xs:attribute name="aggregate" type="tns:aggregate" use="required" > <xs:annotation> <xs:documentation> 000 - 099 There is no information about the activity of the user 100 - 149 The user is away 150 - 199 The user is out to lunch 200 - 299 The user is idle 300 - 399 The user will be right back 400 - 499 The user is active 500 - 599 The user is already participating in a communications session 600 - 699 The user is busy 700 - 799 The user is away 800 - 999 The user is active Rather than using a hard-coded enumeration a numeric value is value. This makes it easy to compare the activity sent by two different PUAs. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="description" type="xs:string" > <xs:annotation> <xs:documentation> The server always returns an empty string in the aggregated presence document. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="epid" type="tns:epid" /> <xs:attribute name="note" type="xs:string" > <xs:annotation> <xs:documentation> This attribute can be used by the client to store a string indicating the user's status on the device. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> <xs:complexType name="userInfo"> <xs:annotation> <xs:documentation> This element is used for storing persisted presence information for a user. This information is stored by the server and is available regardless of the device a user is logged in and / or whether the user is logged in or not. Any valid XML can be stored by the client. The server enforces a limit of 1024 characters on the size of the element body, where the entire element body is treated as a single string. </xs:documentation> </xs:annotation> <xs:sequence> <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:group name="presenceDocInfo"> <xs:sequence> <xs:element name="availability" type="tns:availability" /> <xs:element name="activity" type="tns:activity" /> <xs:element name="userInfo" type="tns:userInfo" /> <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:group> <!-- Presence document consumed by the server --> <xs:complexType name="presenceDoc"> <xs:annotation> <xs:documentation> The containing element and its contents are collectively called the presence document. The document describes a user's availability on a particular device. This is the document sent from a Presence User Agent that intends to publish its presence. </xs:documentation> </xs:annotation> <xs:sequence> <xs:group ref="tns:presenceDocInfo" /> </xs:sequence> <xs:attribute name="uri" type="ct:sipURI" use="required" /> </xs:complexType> <!-- Aggregated Presence document generated by the server --> <xs:complexType name="aggregatedPresenceDoc"> <xs:annotation> <xs:documentation> The containing element and its contents are collectively called the aggregated presence document. The document describes a user's availability on all its devices as well as an overall aggregated presence. This is the document published by the server to anyone obtaining the presence of a particular user. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="availability" type="tns:availability" > <xs:annotation> <xs:documentation> This is the availability information from the most available device. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="activity" type="tns:activity" > <xs:annotation> <xs:documentation> This is the activity information from the most available device. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="displayName" > <xs:complexType> <xs:attribute name="displayName" type="ct:displayName" /> </xs:complexType> </xs:element> <xs:element name="email"> <xs:complexType> <xs:attribute name="email" type="ct:email" /> </xs:complexType> </xs:element> <xs:element name="phoneNumber"> <xs:complexType> <xs:attribute name="label" type="xs:string" use="required"> <xs:annotation> <xs:documentation> This string is always empty. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="number" type="ct:phone" use="required" /> </xs:complexType> </xs:element> <xs:element name="userInfo" type="tns:userInfo" /> <xs:element name="devices"> <xs:complexType> <xs:sequence> <xs:element name="devicePresence" maxOccurs="unbounded" > <xs:complexType> <xs:sequence> <xs:group ref="tns:presenceDocInfo" /> </xs:sequence> <xs:attribute name="epid" type="tns:epid" /> <xs:attribute name="ageOfPresence" type="tns:ageOfPresence" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="uri" type="ct:sipURI" use="required"/> </xs:complexType> <xs:element name="presentity" type="tns:aggregatedPresenceDoc"/> </xs:schema>