1. Technical Field of the Invention
The present invention relates in general to a presence-based communication system, and in particular, to presence groups within presence systems.
2. Description of Related Art
The ability for users to monitor each other's presence is a feature offered in connection with many applications that support network telephony. For example, instant messaging (“IM”) applications have a buddy list or contact list feature, in which a user of the application can determine whether select users or objects are available for engaging in communication. The data retrieved and returned to the contact list, e.g., “John OFFLINE” or “Susan ONLINE”, is referred to as “presence information,” and is generally maintained by a presence server in the data network, which is often a dedicated server. Typically, the presence server supports network telephony protocols such as Session Initiation Protocol (SIP).
Users can register their communications devices with the presence server in order to have their presence maintained and to allow various programs on the network to facilitate network telephony services. For example, a first user wishing to detect the presence of a second user may do so by “subscribing” with the presence server, such as via a SIP SUBSCRIBE message. The presence server intermediates between the first user (also known as a “watcher” or “subscriber”) and the second user (also known as a “presentity”) to facilitate the communication of the presentity's presence information to the watcher.
There are many situations where it would be desirable for presentities to organize into groups that are proximately located within some distance criterion. For example, occupants of an automobile on a road or highway may want to communicate with occupants of other automobiles in the immediate area. Likewise, people at an event, gathering, show, religious service, movie, restaurant, dance club, class, amusement park, or on mass transit (e.g., bus, train, plane, etc.) may want to communicate with other people or with nearby services, with which they do not share prior acquaintance, but simply by virtue of their proximity.
However, building presence groups (buddy lists) is a time consuming and hence fairly static activity, similar to populating email address lists or phone directories. There is currently no mechanism for automatically generating presence groups based on proximity. In addition, buddies typically need to be individually authorized by the presentity, which presents a barrier to enabling dynamic updates to presence groups based on proximity. Therefore, there is a need for an enhancement to existing presence systems to integrate location based information in order to dynamically update presentity's presence groups based on proximity, while respecting privacy and security considerations.
Embodiments of the present invention provide a method for implementing location based presence groups within a presence system. The method includes receiving presence information for a plurality of presentities, in which the presence information includes contact information for and availability in one or more media types of the presentities and location information identifying a respective current geographical location of each of the presentities. The method further includes calculating respective distances between the presentities using the location information, forming a location based presence group for a watcher of the presentities, in which the location based presence group includes the presentities whose calculated distance from the watcher is less than a configurable proximity metric and providing the watcher with the presence information of the presentities within the location based presence group.
In one embodiment, the presentities that have subscribed to a location based presence service are identified and the location based presence group is formed from those presentities that subscribed to the location based presence service. In a further embodiment, at least one of the presentities is prompted to subscribe to the location based presence service based on the current geographical location of that presentity.
In another embodiment, the presence information of the presentities is filtered before providing the filtered presence information to the watcher. For example, in one embodiment, the presence information is filtered in accordance with preference information associated with the watcher, in which the preference information indicates a portion of the presence information associated with the presentities that the watcher would like to receive. In another embodiment, the presence information is filtered in accordance with preference information associated with at least one of the presentities, in which the preference information indicates a portion of the presence information associated with the presentity that the watcher can receive.
In still another embodiment, a partial location based presence group is provided to the watcher. The partial location based presence group represents changes to the location based presence group based on a previous location based presence group. For example, the changes can include added ones and removed ones of the presentities. In yet another embodiment, the configurable proximity metric is determined based on the current geographic location of the watcher or the preferences of the watcher.
Embodiments of the present invention further provide a presence server operable to maintain presence information for a plurality of presentities, in which the presence information includes contact information for and availability in one or more media types of the presentities and location information identifying a respective current geographical location of each of the presentities. A proximity presence group application operates to calculate respective distances between the presentities, using the location information, and form a location based presence group for a watcher of the presentities. The location based presence group includes the presentities whose calculated distance from the watcher is less than a configurable proximity metric. The presence server further operates to provide the presence information of the presentities within the location based presence group to the watcher.
A more complete understanding of the present invention may be obtained by reference to the following detailed description when taken in conjunction with the accompanying drawings wherein:
The Location System (LS) 200 operates to determine the location of each user (presentity) that has authorized their participation in the location based presence group service. More specifically, the LS 200 determines the geographical location (e.g., latitude and longitude) of a presentity, and communicates that location to the PPGA 110. For example, the LS 200 can transmit the location information to the PPGA 110 as part of the presentity's presence information. The LS 200 refers to any type of location system, including, but not limited to, a Global Positioning System (GPS) receiver coupled to or integrated with a user terminal or a network-based location system, such as a Time of Arrival, Angle of Arrival or other network-based positioning method.
The PPGA 110 computes the distance between each presentity pair, and for each presentity, compiles a list of other presentities that are within a configurable proximity metric for that presentity to form a location based presence group (LBPG) for that presentity. The proximity metric can be configured by the presentity or configured based on the current location of the presentity. For example, if the location of the presentity indicates that the presentity is within a sports arena, the proximity metric can be configured by the PPGA 110 to include the entire sports arena and parking lots around the sports arena.
Once the members of the LBPG for a particular presentity/watcher are identified, the PPGA 110 then communicates this LBPG to the Presence System 100, which in turn, provides the LBPG to the presentity/watcher. In addition, the Presence System 100 provides the presence information associated with each presentity within the LBPG to the presentity/watcher for use by the presentity/watcher in establishing communication with one or more of the presentities within the LBPG. For example, the presence information provided to the presentity/watcher can include the availability of each presentity within the LBPG in one or more media types (e.g., voice, text, e-mail, multi-media, etc.) and contact information for the presentities within the LBPG.
In one embodiment, the Presence System 100 receives the LBPG for each authorized presentity on a regular basis, and in case of changes to the LBPG, communicates either the entire LBPG or a partial version of the LBPG representing only updates (e.g., adds and deletes) to each presentity. The presentity can then subscribe to any new presentities in the LBPG, and un-subscribe from any presentities deleted from the LBPG. The PPGA 110 may be resident within a presence server or other network node within the presence system and may be implemented in hardware, software, firmware or any combination thereof. The PPGA 110 may further be centralized within a single node or distributed throughout a network.
In the example shown in
The second LBPG (LBPG#2) is associated with presentity P4 and includes presentities P4 and P5. Thus, the distance d4 between the location (x4, y4) of presentity P4 and the location (x5, y5) of presentity P5 is within the configurable proximity metric associated with P4. The distance between the location (x4, y4) of presentity P4 and the location of any of the other presentities P1-P3, P6 or P7 is outside of the proximity metric for P4, and therefore, only presentity P5 is included within LBPG#2 for P4. The third LBPG (LBPG#3) is associated with presentity P5 and includes presentities P4, P5 and P6. Thus, the respective distances d4 and d5 between presentity P5 and presentities P4 and P6 are within the configurable proximity metric associated with P5. As a result, presentity P5 has both presentity P4 and presentity P6 within his/her LBPG, while presentity P4 only has presentity P5 within his/her LBPG.
Likewise, the fourth LBPG (LBPG#4) is associated with presentity P6 and includes presentities P5, P6 and P7, while the fifth LBPG (LBPG#5) is associated with presentity P7 and includes only presentities P6 and P7. Thus, presentity P6 has both presentity P5 and presentity P7 within his/her LBPG, and presentity P7 has only presentity P6 within his/her LBPG. Therefore, presentity P7 will be able to communicate with presentity P6, but not with presentity P5, while presentity P6 will be able to communicate with both presentities P5 and P7.
As the location of each of the presentities changes, so does the LBPG for that presentity. For example, if presentity P4 were to move into the area of LBPG#1, such that presentity P4 is within the proximity metric for presentities P1, P2 and P3, presentity P4 would be added to LBPG#1 and removed from LBPG#3. Thus, LBPG#2 would change to include only presentities P1, P2 and P3. Dynamically updating the groups of people with which a presentity/watcher shares presence and a means to engage in communication using various media types (e.g., voice, text, e-mail, multimedia, etc.) increases the social interaction distance from the people within earshot to a wider radius that is still motivated by the relative proximity and by the potential to share communication around a common experience.
Referring now to
The presentity/watcher 102 provides presence information 122 indicating the presentity/watcher's presence state to the presence system 100 via the presence clients 106 associated with the presentity/watcher 102. Each presence client 106 represents an application that independently generates a component of the overall presence information for a presentity/watcher 102. For example, as shown in
Although not shown in
Therefore, in accordance with embodiments of the present invention, the presence client 106 associated with the presentity/watcher 102 is operable to both provide presence information 122 associated with the presentity/watcher 102 to the presence server 120 and to retrieve the presence information 122 of other presentities to whom the presentity/watcher 102 has subscribed. For example, the presence client 106 can receive the presence information of one or more presentities within a location based presence group (LBPG) 126 associated with the presentity/watcher 102. Upon receiving such presence information 122, the presence client is further able to display the presence information 122 to the presentity/watcher 102.
Typically, the presence client 106 generates and transmits a presence message 105 containing updated presence information 122 to the presence server 120 when a change in presence state of the presentity/watcher 102 occurs. Examples of changes in presence state include, but are not limited to, turning on and off the communications terminal 104, modifying the registration from the communications terminal, changing the instant messaging status on the communications terminal, operating the communications terminal (e.g., placing a phone call, receiving a phone call, generating an e-mail, etc.) and requesting or initiating a service (e.g., initiating Internet access, activating voice mail, etc.) from the communications terminal. As an example, when the presentity/watcher 102 initiates or answers a phone call on the communications terminal 104, the presence client 106 associated with the communications terminal 104 updates the presentity's presence state with the presence server 120 to “On the Phone.”
The presence server 120 aggregates the presence information from each of the sources (e.g., presence clients of the presentity/watcher and other presentities) and maintains the current complete presence information for the presentity/watcher 102 and other presentities. For example, the presence information 122 for a particular presentity can indicate the availability of that presentity, the current activity of that presentity, the local time where that presentity is located, the current status of the active communications devices and/or applications running on active communications devices and the current status of any services/applications associated with that presentity. In addition, in accordance with embodiments of the present invention, the presence information 122 for a particular presentity may also include the current location of the presentity 210. This location information 210 can be provided to the presence server 120 from a Location System 200 as part of the presence information for that presentity, as described above in connection with
Based on the current location of the presentity/watcher 102 and the current location of other presentities, the PPGA 110 within the presence server 120 computes the respective distances between the presentity/watcher 102 and the other presentities for whom the presence server 120 maintains presence information 122, and compiles a list of other presentities that are within a configurable proximity metric for the presentity/watcher 102 to form the location based presence group (LBPG) 126 for that presentity. The presence server 120 accesses the presence information 122 of the presentities within the LBPG 126 associated with the presentity/watcher 102 to create LBPG presence information 130 for the presentity/watcher 102. The presence server provides the LBPG presence information 130 to the presence client 106 associated with the presentity/watcher 102 to enable the presentity/watcher 102 to view the detailed presence state of each presentity within the LBPG. For example, the detailed presence state information can indicate whether the presentity is currently available to engage in a communications session in one or more media types (e.g., text, voice and/or multimedia) on one or more communications terminals.
As described above, the presence server 120 further stores preference information 124 for the presentities within the presence system 100. For example, the preference information 124 can include both presentity preference information (e.g., privacy filters) set by the presentity 102 for each watcher and watcher preference information (e.g., watcher filters) set by each watcher for presentities. As such, the preference information 124 operates to filter the presence information 122 of a particular presentity as provided to a particular watcher to accommodate privacy concerns, prioritization requirements, viewing requirements, administrator policies and security considerations. Using the example shown in
In order to provide presence services to the presentity/watcher 102 and other presentities, the presence system 100 uses a presence protocol, such as the Session Initiation Protocol (SIP), as described in J. Rosenberg, et al., “SIP: Session Initiation Protocol” RFC: 3261, June 2002 and in A. Roach, et al., “Session Initiation Protocol (SIP)—Specific Event Notification,” RFC: 3265, June 2002, each of which are hereby incorporated by reference. SIP is an application-layer control protocol used to create, modify and terminate communication (voice, text and/or multimedia) sessions. SIP can be used with other protocols, such as the Real-time Transport Protocol (RTP), the Real-Time Streaming Protocol (RTSP), the Session Description Protocol (SDP), the International Telecommunication Union—Telecommunications (“ITU-T”) H.263 standard (video CODEC), the G.711 and G.729 standards (audio CODECs), and other or additional standards or protocols. As will be appreciated, other or additional protocols and configurations may be used.
SIP networks are capable of routing requests from any user on the network to the server that maintains the registration state for a user. Thus, SIP networks enable the presentity/watcher 102 to transmit a SUBSCRIBE request for presence information relating to a particular presentity within the LBPG 126 to the presence server 120 that maintains the presence information for that presentity. In operation, the presence server 120 may be co-located with the SIP proxy/registrar for efficiency purposes. Additional details about presence and presence modeling are set forth in the Internet Engineering Task Force (IETF) Request for Comment (RFC) 2778 entitled “A model for Presence and Instant Messaging,” dated February 2002; RFC 2779 entitled “Instant Messaging/Presence Protocol Requirements,” dated February 2002; and Internet-Draft identified as <<draft-schulzrinne-simple-rpids-01.ps>> and entitled “RPIDS—Rich Presence Information Data Format for Presence Based on the Session Initiation Protocol (SIP),” dated Feb. 18, 2003, which are incorporated herein by reference.
A more detailed description of the operation of the PPGA 110 follows with reference to
The PPGA 110 extracts the location information 210a . . . 210N and a proximity metric from the presence information 122a . . . 122N of each of the presentities P1 . . . PN and uses the location information 210a . . . 210N and associated proximity metrics to generate each of the LBPG's 126a . . . 126N. In particular, the PPGA 110 calculates the distance between each of the presentities, and for each of the presentities, compares the proximity metric for that presentity to the distances from that presentity to the other presentities, to determine which presentities are within the proximity metric for that presentity. The PPGA 110 then includes those presentities that are within the proximity metric for a particular presentity within the LBPG for that presentity. The result is a plurality of LBPG's 126a . . . 126N, each associated with a particular presentity, and each including the identities of the other presentities that are within the proximity metric to that particular presentity.
For example, as shown in
In one embodiment, the user can initiate a communication session with one or more of the presentities in the LBPG by selecting them individually and establishing a communication session with them in their preferred media type. In another embodiment, the user can initiate a communication session with all of the presentities within the LBPG by selecting the LBPG as the contact with which to establish the communication session, and then the GUI 152 can prompt the user to select a particular media type to use for the communication session. In yet another embodiment, the user can invoke a particular action (e.g., send an instant message, call a contact, etc.) and then select one or more of the presentities individually within the LBPG and/or the LBPG as a whole to initiate the communication session.
As will be recognized by those skilled in the art, the innovative concepts described in the present application can be modified and varied over a wide range of applications. Accordingly, the scope of patents subject matter should not be limited to any of the specific exemplary teachings discussed, but is instead defined by the following claims.
This U.S. Nonprovisional application for patent claims the benefit of the filing date of U.S. Provisional Patent Application entitled, Location Based Presence Groups, Attorney Docket No. 800903, having Ser. No. 60/938,959, filed on May 18, 2007, which is incorporated herein by reference for all purposes.
| Number | Date | Country | |
|---|---|---|---|
| 60938959 | May 2007 | US |