In computer and telecommunications networks, presence information is a status indicator that conveys ability and willingness of a potential communication partner—for example a user—to communicate. A user's client provides presence information (presence state) via a network connection to a presence service, which is stored in what constitutes his personal availability record (called a presentity) and can be made available for distribution to other users (called watchers) to convey their availability for communication. Presence information has wide application in many communication services and is one of the innovations driving the popularity of instant messaging or recent implementations of voice over IP clients.
Presence state
A user client may publish a presence state to indicate its current communication status. This published state informs others that wish to contact the user of his availability and willingness to communicate. The most common use of presence today is to display an indicator icon on instant messaging clients, typically from a choice of graphic symbols with easy-to-convey meanings, and a list of corresponding text descriptions of each of the states. Even when technically not the same, the "on-hook" or "off-hook" state of called telephone is an analogy, as long as the caller receives a distinctive tone indicating unavailability or availability.
Common states on the user's availability are "free for chat", "busy", "away", "do not disturb", "out to lunch". Such states exist in many variations across different modern instant messaging clients. Current standards support a rich choice of additional presence attributes that can be used for presence information, such as user mood, location, or free text status.
The analogy with free/busy tone on PSTN is inexact, as the "on-hook" telephone status reflects the ability of the network to reach the recipient after the requester has initiated the conversation. The requester must commit to the connection method before discovering the recipient's availability state. Conversely, Presence shows the availability state before a conversation is initiated. A similar comparison might be the requester needing to know if the recipient is at work. The most straightforward way of checking if the recipient is available is to walk to the desk, which requires the commitment of the walk regardless of the outcome and usually requires some interaction if the recipient is at the desk. The requester can call first to save the walk, but now must commit to an interaction via phone. Presence gives the state of the recipient to the requester and the requester has the choice to interact with the recipient or use that information for non-interactive purposes (such as taking roll).
MPOP and presence by observation
Presence becomes interesting for communication systems when it spans a number of different communication channels. The idea that multiple communication devices can combine state, to provide an aggregated view of a user's presence has been termed Multiple Points of Presence (MPOP). MPOP becomes even more powerful when it is automatically inferred from passive observation of a user's actions. This idea is already familiar to instant messaging users who have their status set to "Away" (or equivalent) if their computer keyboard is inactive for some time. Extension to other devices could include whether the user's cell phone is on, whether they are logged into their computer, or perhaps checking their electronic calendar to see if they are in a meeting or on vacation. For example, if a user's calendar was marked as out of office and their cell phone was on, they might be considered in a "Roaming" state.
MPOP status can then be used to automatically direct incoming messages across all contributing devices. For example, "Out of office" might translate to a system directing all messages and calls to the user's cell phone. The status "Do not disturb" might automatically save all messages for later and send all phone calls to voicemail.
XMPP, discussed below, allows for MPOP by assigning each client a "resource" (a specific identifier) and a priority number for each resource. A message directed to the user's ID would go to the resource with highest priority, although messaging a specific resource is possible by using the form user@domain/resource.