3.7 Contact Management Extensions Details

Session Initiation Protocol Extensions supports contact management. A client can store on the server a list of contacts with which the client frequently communicates, and can retrieve and subsequently manage this list. The client can also organize the contacts into self-defined groups, storing the list of groups and their membership on the server, and can retrieve and manage the list. This section defines the Session Initiation Protocol Extensions for adding, deleting, or modifying a contact or a group.

The server can return two types of contact and group lists (see the following). These lists are returned by the server in NOTIFY and BENOTIFY requests, which are generated by the server, or are returned in the body of a 200 OK response (also called a piggyback NOTIFY).

  1. Full List

    A complete list of all contacts and their associated groups. This list is returned from the server in a SIP response to a SUBSCRIBE for the event vnd-microsoft-roaming-contact.

    The Full List is a list of groups that is followed by a list of contacts. Groups are uniquely numbered. The particular numbering sequence is not persisted and can vary from one transmission to the next. Contacts are cross-referenced against groups by using group ID numbers. Contacts must be in at least one group.

  2. Delta List

    A list that contains a subset of contacts and associated groups that were either added, modified, or deleted from the Full List. This list is returned from the server in response to any of the following: SetContact, DeleteContact, DeleteGroup, or ModifyGroup SERVICE operations.

    A Delta List is a list of groups that were added or modified, followed by a list of contacts that were added or modified, followed by a list of groups that were deleted, and finally, followed by a list of contacts that were deleted.

The server maintains a single nonnegative integer version number for the contact/group list of every user. Any time the user performs an operation that modifies the user contact/group list, the version number is incremented.

The version number is returned to the client in the contact list, allowing the client to determine whether it has the most up-to-date information, and to refresh the contact/group list if its state (as seen by the server) needs synchronization. If the client delta number requires synchronization with the server, it can obtain the current value by subscribing to the vnd-microsoft-roaming-contact event and by looking at the deltaNum attribute of the contactList element in the body of the notification data. The notification data is received in the 200 OK SIP response; or in a separate NOTIFY or BENOTIFY request from the server.

The client can update the contact/group list by sending setContact, deleteContact, modifyGroup, and deleteGroup SOAP requests that are carried in the body of SIP SERVICE requests to the server. The server indicates completion of these requests by sending a SIP response to the SERVICE request.

The contact management extensions are optional. An implementation may support them.