3.8.5.4 Creation of dndState category
This section describes behaviors supported in versions described by endnote <47>.
An enhanced presence server creates a dndState category instance based on a user state, xsi:type equals "userState", instance of the state category, or a presenting state, xsi:type equals "presentingState", instance of the state category, as shown in the following figure.
Figure 12: Creating a dndState category instance
SIP protocol client: The SIP protocol client MUST publish state category instances into container 2 and 3. Although the server does not prevent it, the SIP protocol client MUST NOT add any members to container 2 and 3.
Computing function: The computing function in the server MUST be triggered if there are any publications to the state category in containers 2 and 3. The computing function MUST look at the user state (xsi:type equals "userState") and presenting state (xsi:type equals "presentingState") instances of the state category in container 2 to create and publish instance zero of the dndState category in containers 2, 0, 100, 200 and 400. Similarly, the computing function MUST look at the user state (xsi:type equals "userState") and presenting state (xsi:type equals "presentingState") instances of the state category in container 3 to create and publish instance zero of the dndState category in containers 3 and 300. The computing function MUST compare existing data with the new data to avoid publication if there are no changes. The computing function MUST treat the state instance as user state if the xsi:type attribute value of the state element in the state category instance matches userState. The computing function MUST treat the state instance as presenting state if the xsi:type attribute value of the state element in the state category instance matches presentingState. For more details on the format of the state category, see section 2.2.2.7.1. The computing function MUST create a dndState category instance with availability "9500" if the availability of the userState or presentingState instance of the state category falls in the "Do Not Disturb" range (9000 to 11999). Similarly, the computing function MUST create a dndState category instance without the availability element if the availability of a userState and presentingState instance of the state category falls outside of the Do Not Disturb range (9000 to 11999) or userState and presentingState instance of state category are not present. For examples of the dndState category instance generation, see section 4.3.4.