Presence information is used in communications applications to convey an availability status of a particular user for communicating with other users. For example, presence information is used with instant messaging (IM) applications to indicate whether the user is online and running an active IM connection. Availability status can be indicated by an icon that appears to a watching user. For example, the icon can display a green “jellybean” to indicate availability, and can present a pink “jellybean” to indicate offline status.
With social media, the user may convey an activity status, for example, to indicate the activity in which the user is currently engaged. One online social application includes an update status field that enables the user to enter a response to a question, “What are you doing right now?” A status response entered by the user is viewable by all the members of the user's social network, who can optionally comment on the user's status. Another online social application enables the user to enter status messages that are viewed by the user's followers, and enables the user to follow other users to view their status messages.
Presence information can be employed as a channel to which a subscriber (a “watcher”) can subscribe to obtain availability and context information for a particular “publisher”. In a network-based application, presence information is obtained by subscribers over the network via endpoints operating under compatible protocols. However, there can be difficulties for communications among users operating under incompatible protocols.
Off-site collaborators using incompatible communications software cannot obtain presence information for each other. For example, such difficulties can arise between sales personnel and customers operating different communications applications. In these situations and others, an inability to exchange presence information can create delays and miscommunications, which can result in inefficiency, wasted time and effort, and reduced productivity.
The following presents a simplified summary in order to provide a basic understanding of some novel embodiments described herein. This summary is not an extensive overview, and it is not intended to identify key/critical elements or to delineate the scope thereof. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
To that end, architecture is disclosed for enabling a publisher to provide extended presence information to watchers and federating the extended presence information to watchers at standardized, interoperable endpoints. The extended presence information can include availability information and activity information, such as information provided from social media and other applications (e.g., enterprise).
The availability information can include a user time availability data and a user location availability data, for example, a particular time and place upon which a user can be contacted. The availability information can also include user contact information, such as an updated cell phone number or a phone number of an organization where the user can be reached, for example.
The activity information can include a status update similar to information posted through various social media and enterprise applications that pertains to a user activity. The activity information can include a current user project upon which the user is working, and related project information, such as a project summary, deadlines, project manager, and team collaborators, for example.
The availability information and activity information for the user is incorporated as presence information into a presence document. Any other user information can additionally be incorporated as presence information into the presence document. This presence information is published by mapping the presence document into a standardized, interoperable syndicated schema, such as syndicated formats of an extended RSS (really simple syndication), RSS 2.0, Atom (an XML language employed in web feeds), and HTTP or any other suitable format or protocol.
The standardized schema is federated to a standardized endpoint, for example, an RSS/Atom aggregator. However, it is to be appreciated that the publication protocol and presence document can also be presented in any suitable format, and can include multiple protocols and document formats. In this way, the presence information is consumed into applications beyond the network endpoints, such as in a web browser or in another suitable application. Thus, providing additional protocols and presence document formats increases the number of applications able to read and interpret the presence information.
The presence document can be accessed by a watcher on the same network, running the same communications application. The watcher can either access the original presence document, or can view the extended, standardized presence document, which is compatible with the same network communications application. In another aspect, a standardized endpoint can use the standardized protocol (e.g., RSS) to publish user information back into the presence document, to become aggregated and distributed to the watchers.
The presence document contents (e.g., the availability information and the activity information) can be selectively controlled based on a relationship between the publisher and the watcher. Categories can be specified for the presence document contents, and access to various presence information items can be controlled according to the categories. For example, category instances can be specified corresponding to user authentication levels. In this way, security can be established to enable watchers to access particular information according to predefined relationships, for example, an internal hierarchy within an organization. The categories can include multiple RSS channels that correspond to respective multiple subscriber access levels. Access to a particular RSS channel is determined based on the user/subscriber relationship.
To the accomplishment of the foregoing and related ends, certain illustrative aspects are described herein in connection with the following description and the annexed drawings. These aspects are indicative of the various ways in which the principles disclosed herein can be practiced and all aspects and equivalents thereof are intended to be within the scope of the claimed subject matter. Other advantages and novel features will become apparent from the following detailed description when considered in conjunction with the drawings.
The disclosed communications architecture extends presence information in a presence documents into additional formats and protocols. An aggregator federates the presence document into a standardized schema that can be consumed at a standardized endpoint. The standardized schema can be a web feed that is interoperably consumed by a web feed consumer. The standardized schema can be an RSS/Atom schema, for example. The presence document can be federated to both standardized endpoints and endpoints operating with a default internal schema. Moreover, access to the presence document content is controlled based on a relationship between the user and a subscriber.
Reference is now made to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. It may be evident, however, that the novel embodiments can be practiced without these specific details. In other instances, well known structures and devices are shown in block diagram form in order to facilitate a description thereof The intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter.
As further illustrated in
Generally, the standardized schema 112 illustrated in
Extending the presence document 108 to support a standardized format such as RSS/Atom increases the outreach and accessibility of presence information to subscriber clients that simply support RSS reading and use a type of identity for authentication. By this extension of presence information and interoperability with formats such as RSS, presence status becomes accessible to subscribers on different networks and/or running different communications applications, such as third party applications or enterprise applications.
Publishers can use standardized schema as a social channel for publishing presence information with access control based to an associated social network. The presence information can be federated as a news feed and enabled to be published publicly on social media services. A standardized RSS format can enable presence information to be incorporated into a presence status webpage. Depending on the nature of the presence information, an internal organizational website can include webpages showing the current status of each member of the organization, for example. In the event that status has not been updated for a period of time, the website can prompt the member users for an update by sending an email or a pop-up alert. Construction of such webpages is possible because a common interface can be used for consuming RSS feeds. Thus, presence information is made available in a way that is more extensible for subscribers.
In another aspect, the RSS schema component 200 can use the RSS protocol 202 to publish user information back into the presence document 108 to be aggregated and distributed to other watchers. The information can then be extended back from RSS into a default internal schema (e.g., SIP Rich Presence), to assure interoperability. In another aspect, a user operating remotely from an RSS consumer 204 can access the presence document 108 and publish user information directly into the default internal system.
Subscriber access level feeds can provide greater or lesser levels of status information depending on whether the subscriber is a personal friend or family member of the publisher, or in a professional setting, whether the subscriber is a supervisor or subordinate of the user, for example. Access through RSS can be provided on a server that so feeds can be different for different users. In this way, security levels can be established for user presence in accordance with the user/subscriber relationship 302. When presence information is requested, a standard output is provided and all authentication can be performed on the server. Upon receiving a watcher request of an RSS feed, the watcher's credentials can be passed in SOAP (simple object access protocol) request/HTTP header to a presence server, which provides the appropriate RSS feed for that access level. By employing authentication through RSS channels, specific permissioning is not required because websites are already protected by administrators. In a corporate website, the creation of RSS channels enables publication of presence information for each member's company level.
As further illustrated in
As illustrated in
As illustrated in
The publish time information 412 and source information 414 for each item pertains to availability, or as a summary for all availability information 104. The publish time information 416 and source information 418 for each item pertains to activity, or as a summary for all activity information 106. The presence document 108 can alternatively include a summary of publishing time and source information for all information items included therein.
Other information 420 can also be provided in the presence document 108. The other information 420 can include user environment, phone numbers or other contact information, calendar information, and capabilities information of the user. The other information 420 can also include a user's professional title, job description, any relevant geospatial information, and any relevant personal or other information type. The other information 420 can additionally include any other information that can be deemed relevant to the user's status. In other words, the presence document includes many different kinds of information about user state and status and, availability information 104 and activity information 106 are just two kinds of the presence document information.
As further illustrated in
The presence document 108 can be obtained by a subscriber who can access the presence document 108 (via federation or other authentication). The presence document 108 includes contents readable by one or more supported protocols so that the subscriber's device can interpret the contents in one or more of the formats represented in the presence document 108. The subscriber user can either access the original presence document 108, or can view the extended, interoperable presence document, which can be compatible with the same network communications application.
The categories 602 can include category instances corresponding to user authentication levels. In this way, security can be established to enable subscribers to access particular information according to the predefined relationships, such as an internal hierarchy within an organization. For example, a manager can have an authentication level for viewing the entire presence document content 504 for subordinates within an organization, but the subordinates are not allowed to view the entire presence document content 504. The categories 602 can include multiple syndicated channels corresponding to multiple subscriber access levels, where access to a particular channel is determined based on the user/subscriber relationship 302. The categories 602 can also be provided through filtering of a single channel.
As further illustrated in
In an exemplary operation of the herein disclosed embodiments, a presence document can include multiple “containers” for each of the categories of information that are used to control access. Subscriber clients that do not provide authentication can be presented with a default container and access to categories published in that container. For example, a user of an enterprise application can publish activity information to a presence document, and can include changes in an authenticated data profile and document changes on an enterprise application site. The aggregator 704 can aggregate this information with other realtime information changes such as location, a personal note, out-of-the-office message, and phone numbers, for example. The presence document is extended to a syndicated language protocol (e.g., RSS, Atom, etc.) to enable interoperability. A subscriber can subscribe to this presence document via an RSS feed and view the feed through a web browser.
As disclosed herein, presence is handled as a service allowing enterprise applications and social media to publish user activity information in the presence document. Presence as a service is authenticated based on a common identification for a subscriber user that can be based on network services authentication for enterprise users or other authentication clients for consumer or non-network services users. An authenticated application can implement a presence service to publish information into a presence document. The presence document allows any publisher to specify categories of information and a container for access control that can be provided for a particular category of data.
As disclosed herein, applications associated with a publishing user can also publish information about source, publish data time and other information as defined by the schema of presence document. Information published by the applications and different endpoints can be sent to a communications server. Extension to presence and RSS or other syndicated protocol allows interoperability.
The following table depicts an exemplary mapping of presence document elements to corresponding RSS schema elements. It is to be appreciated that the following is simply an illustration and does not define a protocol documentation or the final schema.
Each category instance published as an RSS channel can include a publish time and source information. Further, each item published within a category instance can include its own publish time to control the granularity of information provided to a subscriber upon a change in the data. Each category instance in the presence document can be associated with a container that defines a membership status of each subscriber having access to that particular category of data. Rich access control can be further provided through an extension of the RSS protocol or other syndication protocols. In an alternative aspect, a subscriber can present identification directly to the system and request RSS data with only the category instances to which access has been granted. The system can in turn return the data in RSS format to the client requesting the data.
As disclosed herein, the embodiments enable federating of presence information to compliant, internal network endpoints and non-compliant but interoperable endpoints using a standardized format such as an RSS or Atom format, for example, or other syndicated web feed formats. By making presence information available in RSS or Atom format, any subscriber client with an authenticated identity can subscribe to the presence document. These clients can be compliant, internal network clients or non-compliant but interoperable clients operating with standardized formats, such as web browsers. The embodiments provide a federation mechanism for securely publishing presence information to trusted organizations. This will enable users in the trusted organizations to view the RSS feed of other users across the organization.
Included herein is a set of flow charts representative of exemplary methodologies for performing novel aspects of the disclosed architecture. While, for purposes of simplicity of explanation, the one or more methodologies shown herein, for example, in the form of a flow chart or flow diagram, are shown and described as a series of acts, it is to be understood and appreciated that the methodologies are not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation.
As used in this application, the terms “component” and “system” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers. The word “exemplary” may be used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Referring now to
The computing system 1100 for implementing various aspects includes the computer 1102 having processing unit(s) 1104, a system memory 1106, and a system bus 1108. The processing unit(s) 1104 can be any of various commercially available processors such as single-processor, multi-processor, single-core units and multi-core units. Moreover, those skilled in the art will appreciate that the novel methods can be practiced with other computer system configurations, including minicomputers, mainframe computers, as well as personal computers (e.g., desktop, laptop, etc.), hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like, each of which can be operatively coupled to one or more associated devices.
The system memory 1106 can include volatile (VOL) memory 1110 (e.g., random access memory (RAM)) and non-volatile memory (NON-VOL) 1112 (e.g., ROM, EPROM, EEPROM, etc.). A basic input/output system (BIOS) can be stored in the non-volatile memory 1112, and includes the basic routines that facilitate the communication of data and signals between components within the computer 1102, such as during startup. The volatile memory 1110 can also include a high-speed RAM such as static RAM for caching data.
The system bus 1108 provides an interface for system components including, but not limited to, the memory subsystem 1106 to the processing unit(s) 1104. The system bus 1108 can be any of several types of bus structure that can further interconnect to a memory bus (with or without a memory controller), and a peripheral bus (e.g., PCI, PCIe, AGP, LPC, etc.), using any of a variety of commercially available bus architectures.
The computer 1102 further includes storage subsystem(s) 1114 and storage interface(s) 1116 for interfacing the storage subsystem(s) 1114 to the system bus 1108 and other desired computer components. The storage subsystem(s) 1114 can include one or more of a hard disk drive (HDD), a magnetic floppy disk drive (FDD), and/or optical disk storage drive (e.g., a CD-ROM drive DVD drive), for example. The storage interface(s) 1116 can include interface technologies such as EIDE, ATA, SATA, and IEEE 1394, for example.
One or more programs and data can be stored in the memory subsystem 1106, a removable memory subsystem 1118 (e.g., flash drive form factor technology), and/or the storage subsystem(s) 1114, including an operating system 1120, one or more application programs 1122, other program modules 1124, and program data 1126. Generally, programs include routines, methods, data structures, other software components, etc., that perform particular tasks or implement particular abstract data types. All or portions of the operating system 1120, applications 1122, modules 1124, and/or data 1126 can also be cached in memory such as the volatile memory 1110, for example. It is to be appreciated that the disclosed architecture can be implemented with various commercially available operating systems or combinations of operating systems (e.g., as virtual machines).
The aforementioned application programs 1122, program modules 1124, and program data 1126 can include the computer-implemented system 100, the presence component 102, the availability information 104, the activity information 106, the presence document 108, the schema component 110, the standardized schema 112, and the standardized endpoint 114 of
The aforementioned application programs 1312, program modules 1314, and program data 1316 can also include the computer-implemented system 500, the presence component 102, the availability information 104, the activity information 106, the presence document 108, the control component 502, the presence document content 504, the user/subscriber relationship 302, the aggregator component 506, the web feed 508, and the web feed consumer 510 of
The storage subsystem(s) 1114 and memory subsystems (1106 and 1118) serve as computer readable media for volatile and non-volatile storage of data, data structures, computer-executable instructions, and so forth. Computer readable media can be any available media that can be accessed by the computer 1102 and includes volatile and non-volatile media, removable and non-removable media. For the computer 1102, the media accommodate the storage of data in any suitable digital format. It should be appreciated by those skilled in the art that other types of computer readable media can be employed such as zip drives, magnetic tape, flash memory cards, cartridges, and the like, for storing computer executable instructions for performing the novel methods of the disclosed architecture.
A user can interact with the computer 1102, programs, and data using external user input devices 1128 such as a keyboard and a mouse. Other external user input devices 1128 can include a microphone, an IR (infrared) remote control, a joystick, a game pad, camera recognition systems, a stylus pen, touch screen, gesture systems (e.g., eye movement, head movement, etc.), and/or the like. The user can interact with the computer 1102, programs, and data using onboard user input devices 1130 such a touchpad, microphone, keyboard, etc., where the computer 1102 is a portable computer, for example. These and other input devices are connected to the processing unit(s) 1104 through input/output (I/O) device interface(s) 1132 via the system bus 1108, but can be connected by other interfaces such as a parallel port, IEEE 1394 serial port, a game port, a USB port, an IR interface, etc. The I/O device interface(s) 1132 also facilitate the use of output peripherals 1134 such as printers, audio devices, camera devices, and so on, such as a sound card and/or onboard audio processing capability.
One or more graphics interface(s) 1136 (also commonly referred to as a graphics processing unit (GPU)) provide graphics and video signals between the computer 1102 and external display(s) 1138 (e.g., LCD, plasma) and/or onboard displays 1140 (e.g., for portable computer). The graphics interface(s) 1136 can also be manufactured as part of the computer system board.
The computer 1102 can operate in a networked environment (e.g., IP) using logical connections via a wire/wireless communications subsystem 1142 to one or more networks and/or other computers. The other computers can include workstations, servers, routers, personal computers, microprocessor-based entertainment appliance, a peer device or other common network node, and typically include many or all of the elements described relative to the computer 1102. The logical connections can include wire/wireless connectivity to a local area network (LAN), a wide area network (WAN), hotspot, and so on. LAN and WAN networking environments are commonplace in offices and companies and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network such as the Internet.
When used in a networking environment the computer 1102 connects to the network via a wire/wireless communication subsystem 1142 (e.g., a network interface adapter, onboard transceiver subsystem, etc.) to communicate with wire/wireless networks, wire/wireless printers, wire/wireless input devices 1144, and so on. The computer 1102 can include a modem or has other means for establishing communications over the network. In a networked environment, programs and data relative to the computer 1102 can be stored in the remote memory/storage device, as is associated with a distributed system. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.
The computer 1102 is operable to communicate with wire/wireless devices or entities using the radio technologies such as the IEEE 802.xx family of standards, such as wireless devices operatively disposed in wireless communication (e.g., IEEE 802.11 over-the-air modulation techniques) with, for example, a printer, scanner, desktop and/or portable computer, personal digital assistant (PDA), communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, news stand, restroom), and telephone. This includes at least Wi-Fi (or Wireless Fidelity) for hotspots, WiMax, and Bluetooth™ wireless technologies. Thus, the communications can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wire networks (which use IEEE 802.3-related media and functions).
The illustrated aspects can also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in local and/or remote storage and/or memory system.
Referring now to
The environment 1200 also includes one or more server(s) 1204. The server(s) 1204 can also be hardware and/or software (e.g., threads, processes, computing devices). The servers 1204 can house threads to perform transformations by employing the architecture, for example. One possible communication between a client 1202 and a server 1204 can be in the form of a data packet adapted to be transmitted between two or more computer processes. The data packet may include a cookie and/or associated contextual information, for example. The environment 1200 includes a communication framework 1206 (e.g., a global communication network such as the Internet) that can be employed to facilitate communications between the client(s) 1202 and the server(s) 1204.
Communications can be facilitated via a wire (including optical fiber) and/or wireless technology. The client(s) 1202 are operatively connected to one or hmore client data store(s) 1208 that can be employed to store information local to the client(s) 1202 (e.g., cookie(s) and/or associated contextual information). Similarly, the server(s) 1204 are operatively connected to one or more server data store(s) 1210 that can be employed to store information local to the servers 1204.
What has been described above includes examples of the disclosed architecture. It is, of course, not possible to describe every conceivable combination of components and/or methodologies, but one of ordinary skill in the art may recognize that many further combinations and permutations are possible. Accordingly, the novel architecture is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.