Methods and apparatus for aggregating and distributing presence information

A user has a plurality of user identities, e.g., a Google ID, an IMS ID, a PBX phone number, a Lync ID, etc., corresponding to different domains and/or different autonomous systems. A presence aggregation interworking function (PAIF) device aggregates presence state information corresponding to the same user and different non-Lync IDs, formats the aggregated information into a Lync compatible format, and communicates the aggregated formatted presence state information to a Lync Presence server. The Lync Presence server may, and sometimes does, further aggregates the aggregated presence state information received from the PAIF, corresponding to the user, with presence state information from a device using a Lync ID, corresponding to the same user. The Lync presence server distributes the aggregated presence state information to other devices, which have expressed an interest in receiving presence state information corresponding to the user.

FIELD

The present application relates to methods and apparatus for aggregating and distributing user presence information across multiple autonomous systems and/or domains.

BACKGROUND

Session Initiation Protocol (SIP) is an application level protocol defined by Internet Engineering Task Force (IETF) for creating, modifying and terminating multimedia sessions. SIP is widely used for establishing and terminating voice, video, and messaging sessions over IP (Internet Protocol) and to exchange presence information.

Presence information is a status indicator that conveys ability and willingness of a potential communication partner (on the other end). A user's client provides presence information (presence state) to a presence service. The presence service stores the user's presence information in what constitutes the user's personal availability record sometimes referred to as a presentity. Under certain conditions the user's presentity is made available for distribution to other users, who are sometimes referred to as watchers, to convey the user's availability for communication. In this way the presence information is the service enabler for instance messaging (IM), voice or video sessions. The growth in popularity of instant messaging and voice over IP from consumers is largely attributed to the availability of the presence information of other users such as in a buddy list.

There are currently multiple services offering presence, IM, and/or voice/video communications services. For example, the IP (Internet Protocol) Multimedia Subsystem (IMS) is an architectural framework for delivering Internet Protocol (IP) multimedia services. IMS was originally designed by the wireless standards body 3rd Generation Partnership Project (3GPP) and later on maintained and updated by 3GPP, 3GPP2 and TISPAN (Telecommunications and Internet converged Services and Protocols for Advanced Networking) as a collaborative effort. IMS defines an architecture and procedures for implementing the voice, video, IM and presence services based on Session Initiation Protocol. IMS is considered one of the next generation architectures for providing services over IP among the Telcom industry. There are also numerous web based services such as, for example, Google Talk (gtalk), skype, and yahoo instant messaging offering presence enabled instant messaging, voice and/or video services. Moreover, there are product offerings such as, for example, Microsoft Lync and Cisco Jabber, which are popular in the Enterprise market. Microsoft (MS) Lync offers integrated instant messaging, voice, video services from a system hosted in the Enterprise as well as Lync online which is a cloud based communication service. In such systems in order to get a communication service a user needs an Identity which is recognized in the service domain. For example, a skype ID is needed for using skype service, an IMS Public user Identity is needed for using IMS service, and an Microsoft Lync ID is needed for using Lync service.

These communication services are managed as Autonomous systems which recognize the user by the Identity assigned to the user by the system. However, each system does not know the Identities of the same user in other Autonomous systems. As a result, presence aggregation logic does not take the activity on other user identities of the same user into consideration. This leads to inaccurate representation of the presence state of the user. For example, Microsoft Lync aggregates the presence of the user based on the activity of the user on all the devices, the user logged in with a Microsoft Lync ID. But, Microsoft Lync presence does not take into account the user activity in other domains or autonomous systems such as gtalk or IMS phone.

It should be appreciated that there is a need for methods and apparatus that can aggregate and distribute a user's presence information across multiple autonomous federated and non-federated systems and/or domains.

SUMMARY

Various embodiments, in accordance with the present invention, are directed to methods and apparatus for combining presence state information for a user, who has different identities corresponding to different domains and/or autonomous systems, and/or for redistributing combined presence state information across multiple autonomous federated and non-federated systems and/or domains.

For example, MS Lync presence state corresponding to a user is updated based on the user's activity on the IMS identity, e.g., phone number, of the user.

A user has a plurality of user identities, e.g., a Google ID, an IMS ID, a PBX phone number, a Lync ID, etc., corresponding to different domains and/or different autonomous systems. A PAIF (Presence Aggregation Information Interworking Function) device aggregates presence state information corresponding to the same user and different non-Lync IDs, formats the aggregated information into a Lync compatible format, and communicates the aggregated formatted presence state information to a Lync Presence server. The Lync Presence server may, and sometimes does, further aggregation of the aggregated presence state information received from the PAIF, corresponding to the user, with presence state information from one or more devices using a Lync ID, corresponding to the same user. The Lync presence server distributes the aggregated presence state information to other devices, which have expressed an interest in receiving presence state information corresponding to the user.

An exemplary method of providing presence information in a communications environment including multiple autonomous systems, in accordance with some embodiments includes: receiving, at a first aggregation element, first presence information corresponding to a first user identifier of a first user indicating a presence state of said first user in a first domain of a first autonomous system; receiving, at the first aggregation element, second presence information corresponding to a second user identifier of the first user indicating a presence state of said first user in a second domain of a second autonomous system; generating, at the first aggregation element, from said first and second presence information a first set of aggregated presence information; and communicating from the first aggregation element said first set of aggregated presence information, in a first format, to a first presence server, as presence information corresponding to a third user identifier.

While various exemplary embodiments and features have been described, numerous additional features and embodiments are described in the detailed description which follows.

DETAILED DESCRIPTION

FIG. 1illustrates an exemplary communications environment100including, among other things, a presence server102and a presence aggregation information interworking function device (PAIF device)108for processing data, in accordance with one embodiment of the present invention. The data being processed may be, and in various embodiments is, user presence information from a variety of different systems. In some embodiments of the present invention, the exemplary communications environment100is implemented to aggregate user presence information for one or more user's from a plurality of autonomous communications systems and then distribute the aggregated presence information to one or more devices.

The exemplary communications environment100includes a presence server102which is shown in the exemplary embodiment as a MS Lync Presence server, an Extensible Messaging and Presence Protocol (XMPP) gateway104, a Google presence server106, a Cisco presence server116, a presence aggregation information interworking function device (PAIF device)108, a web server109including a Google applications module110, an IP Multimedia Subsystem (IMS) network112, and a call server114, e.g., an Enterprise PBX system.

IMS network112includes a call server control entity, e.g., S-CSCF (Serving-Call Session Control Function)113. In the exemplary embodiment, device2120is a mobile device having an IMS ID corresponding to user A. In some embodiments, second presence information, corresponding to device2120and user A, which is communicated to PAIF device108, includes SIP session information from S-CSCF113. In some embodiments, IMS network112includes a home subscriber server (HSS)115including memory117for storing one or more sets of aggregate presence information corresponding to IMS IDs, e.g., for storing a first set of aggregate presence information corresponding to the IMS ID being used by device2120. Thus, in some embodiments, aggregate presence information generated by PAIF device108is stored in the IMS network112in memory117of HSS115.

Call server114includes a CTI interface119and a generation module121. The CTI interface119is configured to monitor for call activity corresponding to a fourth user identifier corresponding to user A, e.g., activity corresponding to user identifier used with desk phone device4122. Generation module121is configured to generate fourth presence information based on the monitoring of the CTI interface119. Fourth presence information is an input to PAIF device108.

The exemplary communications environment100further includes a plurality of user devices (device1118, device2120, device3124, device4122, device5126, . . . , device N128, and device C130). Device1118is a PC/smartphone, which corresponds to user A and which includes Google login capability. Device2120is a mobile, e.g. a cell phone with an IMS ID, which corresponds to user A. Device3124is a PC/smartphone, which corresponds to user A and which includes Lync login capability. Device4122is a desk phone, which corresponds to user A and which interfaces to Enterprise PBX114. Device5126is a PC/smartphone, which corresponds to user B and which includes Lync login capability and a MS Lync ID different from user A and user N. Device N128is a PC/smartphone, which corresponds to user N and which includes Lync login capability and a MS Lync ID different from user A and B. Device C130is a PC/smartphone, which corresponds to user C and which includes Cisco login capability.

The exemplary communications environment100further includes communications links (119,121,144,123,146,148,152) between user devices (user device1118, user device2120, user device4122, user device3124, user device B126, user device N128, user device C130) and (Google applications module110, IMS network112, Enterprise PBX system114, MS Lync Presence server102, MS Lync Presence server102, MS Lync Presence server102, Cisco Presence server116), respectively. The exemplary communications environment100further includes a link132between web server109including Google Applications module110and PAIF device108, a link134between IMS network112and PAIF device108, a link136between Enterprise PBX system114and PAIF device108, a link138between PAIF device108and MS Lync presence server102. Exemplary system100further includes a communications link140between MS Lync Presence server102and XMPP gateway104, a communications link142, e.g., a Federation interface, between XMPP gateway104and Google presence server106, a communications link150, e.g., a Federation interface, between XMPP gateway104and Cisco Presence server116, and a communications link145between Google Presence server106and user device1106. The communications links of the communications environment100may be, and in some embodiments are, bi-directional communications links.

Google Apps110and user device1118are part of a first autonomous network156. IMS network112and user device2120are part of a second autonomous network158. Call server114, e.g., an Enterprise PBX system, and user device4122are part of a fourth autonomous system160. User device3124, user device5126, and user device N128, and MS Lync presence server102are part of a third autonomous network161.

PAIF device108receives and aggregates presence information corresponding to different user identifiers for the same user, e.g., user A, corresponding to different domains in different autonomous systems. The PAIF device108receives presence information to be aggregated via different interfaces, e.g., a XMPP interface via link132, a SIP IMS interface via link134, and a SIP/CTI interface via link136. The PAIF device108generates a set of aggregated presence information from the received presence information and puts it in a first format, e.g., a format compatible to the MS Lync presence server102. The MS Lync presence server102receives presence information from devices with a MS Lync interface, e.g., PAIF device138, device3124, device126, and device N128. The MS Lync presence server102aggregates presence information received from PAIF device108and device3124, which correspond to the same user, e.g., user A. The MS Lync presence server performs format conversion of aggregated presence information. The MS Lync Presence server102communicates aggregated presence information to other devices in the communications environment100, e.g., which have registered to receive updated presence information or have requested presence information, e.g., corresponding to a particular user identifier.

User A, user B, and user N use the MS Lync presence server102for presence and address book services, while user C uses the Cisco Jabber including the Cisco presence server116for presence and address book services. User A uses device1118with gtalk communications, device2120with mobile cellular network communications, device3124with MS Lync communications, and device4122, e.g., a desk phone with Internet packet based phone communications, for communications. The PAIF device108updates the presence state based on activity on user A's various identities, e.g., corresponding to devices118,120,122. The MS Lync server102aggregates status information corresponding to device3124with the status information communicated from PAIF device108. The MS Lync Presence server102sends updated presence states to all the watchers, e.g., devices which have previously registered to receive status updates corresponding to user A. For example, consider that user B and user C are watching user A, then Lync presence server102will send the updated presence state pertaining to user A, to user B, e.g., device126and to user C, e.g., device130. In this example, user C is in a different domain, and federation interface150is used to send the updated status.

In the exemplary communications environment100, there are two levels of aggregation for presence information corresponding to user A, e.g., a first level performed by PAIF device108and a second level performed by MS Lync presence server102. In some embodiments, the MS Lync presence server102in unaware that the presence information being communicated from PAIF device108to the MS Lync presence server is aggregated presence information corresponding to different user devices in different domains of different autonomous networks.

FIG. 2, comprising the combination ofFIG. 2AandFIG. 2B, is a flowchart200of an exemplary method of providing presence information in a communications environment including multiple autonomous systems, e.g., communications environment100ofFIG. 1, in accordance with an exemplary embodiment. Operation starts in step202and proceeds to step204, in which the system is initialized. During the initialization step, the user identities corresponding to each user are stored in memory, e.g., the user identifiers corresponding to the first user are associated in memory accessible to the PAIF device, e.g., PAIF memory322, as corresponding to the first user. The stored user identities are then available for later use in the process for example during the aggregation of presence information for a user based on the user ids associated with the user.FIG. 10provides an exemplary table1000generated during initiation corresponding to the users shown inFIG. 1which may be, and in some embodiments is stored in PAIF memory322. Each of the entries in rows1012,1014,1016and1018contains information associating the user identified in the entries of column1002with its known user IDs or aliases wherein the user's user ID1is contained in the entries in column1004, the user's user ID2is contained in the entries of1004, the user's user ID3is contained in the entries of column1008and the user's user ID4is contained in the entries s of column1010. For example, the first user, e.g., user A (entry column1002, row1012) is associated with user ID1which is Google ID1(entry column1004, row1012), user ID2which is IMS ID1(entry column1006, row1012), user ID3which is MS Lync ID1(entry column1008, row1012), and user ID4Enterprise PBX ID1(entry column1010, row1012). The user IDs, e.g., MS Lync ID.1, MS Lync ID.2, Google ID1, IMS ID1, Enterprise PBX ID1, and Cisco ID1are merely exemplary are merely used for illustrative purposes. Row1014of table1000associates the second user, e.g., user B (entry column1002, row1014) with user ID1which is MS Lync ID2(entry column1004, row1014). Row1016of table1000associates the third user, e.g., user N (entry column1002, row1016) with user ID1which is MS Lync ID3(entry column1004, row1016). Row1018of table1000associates the fourth user, e.g., user C (entry column1002, row1018) with user ID1which is Cisco ID1(entry column1004, row1018).

Operation proceeds from step204to step206, step208, and step232, via connecting node A209.

In step206, monitoring is performed at a first aggregations element, e.g., PAIF device108, for presence information. Operation proceeds from step206to step210and212. In step210first presence information211, corresponding to a first user identifier of a first user, e.g., user A, indicating a presence state of said first user in a first domain of a first autonomous system, e.g., system156, is received at the first aggregation element. Returning to step212, in step212second presence information213, corresponding to a second user identifier of the first user device indicating a presence of state of said first user in a second domain of a second autonomous system, e.g., system158, is received at the first aggregation element. Operation proceeds from step210and step212to step214.

In step214a first set of aggregated presence information is generated at the first aggregation element from the first and second presence information. In some embodiments the first set of aggregated presence information is generated by performing an ORing operation on the first presence information received corresponding to the first user identifier and the second presence information corresponding to a second user identifier of the first user. Table1100ofFIG. 11shows an exemplary logic table that illustrates the PAIF aggregated state for a first user based on the first presence information corresponding to a first user identifier of the first user indicating a presence state of said first user in a first domain of a first autonomous system and the second presence information corresponding to the second user identifier of the first user indicating a presence state of said first user in a second domain of a second autonomous system. The presence states used in this example are available, busy and offline. The entries of column1102provide the first presence information corresponding to the first user in the first domain of the first autonomous system. The entries of column1104provide the second presence information corresponding to the first user in the second domain of the second autonomous system. The entries of column1106provide the PAIF aggregated presence information that may be, and in some embodiments is, generated based on the first and second presence information contained in entries in the corresponding row of the table. Rows1108,1110,1112,1114,1116,1118,1120,1122, and1124associate a first presence information corresponding to a first user, a second presence information corresponding to a first user with the PAIF aggregated presence information generated from the corresponding first and second presence information. For example, if the first presence information received corresponding to the first user is a state of available (entry column1102, row1110) and the second presence information received corresponding to the first user is a state of busy (entry column1104, row1110) then the PAIF aggregated presence information corresponding to the first user that is generated is a state of busy (entry column1106, row1110).

Operation proceeds from step214to step218, and in some embodiments, operation proceeds from step214to optional step216. In step216, the first set of aggregate presence information is stored in a memory, e.g., memory117ofFIG. 1or memory314ofFIG. 3. In step218, the first set of aggregated information is processed at the first aggregation element to put the first set of aggregated information in a first format. In some embodiments, the first set of aggregated information in the first format includes an aggregation indicator indicating that the information being communicated is aggregated information. In various embodiments, the first set of aggregated information in the first format is stored in a memory, e.g., memory117ofFIG. 1or memory314ofFIG. 3. Operation proceeds from step218to step220.

In step220, the first set of aggregated presence information, in the first format, is communicated from the first aggregation element to a first presence server, e.g., MS Lync presence server102, as presence information corresponding to a third user identifier. Operation proceeds from step220to step222. In step222, the first set of aggregated presence information, in said first format, as presence information corresponding to the third user identifier, is communicated from the first presence server to a device, e.g., device3124, in a third domain of a third autonomous system. In one exemplary embodiment the third device is an MS LYNC device.

In some embodiments, the first set of aggregated presence information is generated by a presence aggregation internetworking function module included in said first aggregation element. In some such embodiments, the first aggregation element is configured to interface between an IMS network and a MS Lync server. In some such embodiments, the first aggregation element is located in a device, e.g., PAIF device108, positioned between the IMS network, e.g., IMS network112, and the MS Lync server, e.g., MS Lync server102. In some such embodiments, the MS Lync server is the first presence server.

In some embodiments, the first aggregation element is located in a device located in the IMS network. In some embodiments, the first aggregation element is located is located in a session border controller which is an edge device positioned at the edge of an IMS network.

Operation proceeds from step222to step226.

Returning to step208, in step208monitoring is performed at the first presence server for presence information. Operation proceeds from step208to step224. In step224, third presence information215corresponding to the third user identifier of the first user indicating a presence state of said first user on a third device, e.g., device3124, in a third domain of a third autonomous system is received at the first presence server. Operation proceeds from step224to step226.

In step226an updated first set of aggregated presence information in the first format is generated from the first set of aggregated presence information and the third presence information from said third device. In some embodiments the updated first set of aggregated presence information is generated by performing an ORing operation on the first set of aggregated presence information received corresponding to the third user identifier and the third presence information received from said third device. Table1200ofFIG. 12shows an exemplary logic table that illustrates the logic used to generate the updated first set of presence information corresponding to the first user from a first set of PAIF aggregated presence information corresponding to the first user and third presence information corresponding to the first user. The presence states used in this example are available, busy and offline. The entries of column1202provide the PAIF aggregated presence information corresponding to the first user. The entries of column1204provide the third presence information corresponding to the first user. The entries of column1206provide the updated first set of presence corresponding to the first user. The updated first set of presence information corresponding to the first user may be, and in some embodiments is, generated based on the first set of PAIF aggregated presence information and the third presence information corresponding to the first user contained in entries in the corresponding row of the table. Rows1208,1210,1212,1214,1216,1218,1220,1222, and1224associate PAIF aggregated presence information corresponding to a first user, third presence information corresponding to a first user with the updated first set of aggregated presence information generated from the corresponding PAIF aggregated and third presence information. For example, if the PAIF aggregated presence information received corresponding to the first user is a state of available (entry column1202, row1210) and the third presence information received corresponding to the first user is a state of busy (entry column1204, row1210) then the updated first set of aggregated presence information corresponding to the first user that is generated is a state of busy (entry column1206, row1210).

Operation proceeds from step226to step228. In step228said updated first set of aggregated presence information in the first format is communicated to a device in the third domain, e.g., the third device, e.g., device3124, or another device in the third domain, e.g., device5126or device N126. In some embodiments, the first presence server is an MS Lync server, and the third identifier is an MS Lync ID. In some such embodiments, the first set of aggregated presence information is not indicated to be aggregated information. In some such embodiments, the first and second user identifiers are not MS Lync identifiers. Operation proceeds from step228via connecting node B230to the input of steps206,208and232.

Returning to step232, in step232a computer telephony interface (CTI) of a call server, e.g., CTI119of call server114, is operated to monitor call activity corresponding to a fourth user identifier. Operation proceeds from step232to step234. In step234the computer telephony interface of the call server is operated to generate a fourth presence information based on said monitoring. Operation proceeds from step234to step236. In step236fourth presence information217corresponding to a fourth user identifier of a first user indicating a presence state of said first user in a fourth domain of a fourth autonomous system, e.g., system160, is received at the first aggregation element. Operation proceeds from step236to step238. In step238an updated first set of aggregated presence information is generated at the first aggregation element from said first, second, and fourth presence information (211,213,215,217).

In some embodiments the updated first set of aggregated presence information is generated in step238by performing an ORing operation on the first, second and third presence information received corresponding to the first user. For example, the exemplary logic illustrated inFIG. 11may be extended to include the fourth presence information as will be understood by one of skill in the art. For example, if the first presence information is busy and the second presence information is available and the third presence information is offline the first set of updated aggregated presence information would be busy.

Operation proceeds from step238to step240. In some embodiments, operation proceeds from step238to optional step239.

In step239the updated first set of aggregated presence information is stored in a memory, e.g., memory117ofFIG. 1or memory314ofFIG. 3. In step240the updated first set of aggregated presence information is processed at the first aggregation element to put the updated first set of aggregated presence information in a first format. In various embodiments, the updated first set of aggregated information in the first format is stored in a memory, e.g., memory117ofFIG. 1or memory314ofFIG. 3. Operation proceeds from step240to step242.

In step242the updated first set of aggregated presence information, in the first format, is communicated from the first aggregation element to the first presence server, as presence information corresponding to the third user identifier. Operation proceeds from step242to step244. In step244the updated first set of aggregated presence information, in said first format, as presence information corresponding to the third user identifier is communicated from the first presence server to at least one device which supports the first format and which has expressed an interest in presence information corresponding to the third user identifier, e.g., device5126. In some embodiments, the first presence information211corresponds to a first device, e.g., device1118; the second presence information213corresponds to a second device, e.g., device2120; the fourth presence information217corresponds to a fourth device, e.g., device4122; and the first, second and fourth devices correspond to the first user, e.g., user A. In some embodiments, the device which supports said first format and has expressed an interest in presence information corresponding to the third user identifier is a device which registered for presence updates corresponding to the first MS Lync ID or requested presence information for the first MS Lync ID which corresponds to the third user identifier.

In some embodiments, operation proceeds from step242to optional step246. In step246the updated first set of aggregated presence information is converted from a first format to a different format used by a device which does not support said first format but which has expressed an interest in presence information corresponding to the third user identifier. In various embodiments, step242is performed by the first presence server. In some embodiments, the third presence information215includes user state information in an MS Lync format, and said first, second, and fourth domains are domains in which MS Lync is not used to communicate presence information. Operation proceeds from step246to step248. In step248the updated first set of aggregated presence information is communicated to at least one device which does not support the first format but supports the converted different format. In various embodiments, step248is performed by the first presence server which sends the updated first set of aggregated presence information in the converted format to a device which does not support the first format, e.g., to device C130. In one example, the communications path from the MS Lync presence server to device C130traverses XMPP gateway104and Cisco Presence server116.

Operation proceeds from step244and/or step248, via connecting node B230to the inputs of step206,208and232.

In some embodiments, the first presence information is presence information generated by a Web server, e.g., Web server109, and the first presence information corresponds to a smart phone, e.g., device1118which is a smart phone.

In some embodiments, the first presence information includes user state information in an XML (eXtensible Markup Language) format, and said first domain is a domain in which XML is used to communicate presence information. In some such embodiments, the XML format is XMPP (eXtensible Messaging and Presence Protocol) format.

In various embodiments, the second user identifier is an IMS ID and the second presence information213is information obtained from SIP signaling corresponding to devices using said IMS ID or location signaling corresponding to devices using said IMS ID, e.g. device2120. In some such embodiments, in step215the first set of aggregated presence information is stored in a home subscriber server memory, e.g., memory117, corresponding to said IMS ID. In some other embodiments, the first set of aggregated presence information is stored in memory within the first aggregation element, e.g., memory314in device300, which may be PAIF device108.

In some embodiments, the second presence information213includes SIP session information from a call server control entity, e.g., a S-CSCF, e.g., S-CSCF113.

In various embodiments, the first and second presence information (211,213) each include one or more of the following: user registration status; user in call status or IDLE status; user location; access network capability information; and user device capability information, e.g., device audio and/or device video capability information.

In one exemplary embodiment, the communications environment is communications environment100ofFIG. 1; the first aggregation element is PAIF device108; the first presence server is MS Lync presence server102; the first device is user A's PC/smart phone118including Google login; the second device is user A's mobile120having an IMS ID; the third device is user A's PC/smartphone124including Lync login; and the third device is user A's desk phone122; the first autonomous system is system156; the second autonomous system is system158; the fourth autonomous system is system160; the third autonomous system is a system including device3124, device5126, device N128, and MS Lync presence server102.

FIG. 3is a drawing of an exemplary PAIF device300in accordance with an exemplary embodiment. Exemplary PAIF device300is, e.g., PAIF device108ofFIG. 1. Exemplary PAIF device300includes I/O interfaces302, a processor310an assembly of modules312, and memory314, coupled together via a bus316over which the various elements may interchange data and information. I/O interfaces302includes a plurality of interfaces including a first interface308, e.g., a XMPP interface, a second interface306, e.g., a SIP IMS interface306, a third interface307, e.g., a MS Lync interface, and a fourth interface308, e.g., a SIP/CTI interface. Memory314includes an assembly of software modules320and data/information322. In some embodiments, the first interface308includes a receiver358and a transmitter360. In some embodiments, the second interface306includes a receiver354and a transmitter356. In some embodiments, the third interface307includes a receiver362and a transmitter364. In some embodiments, the fourth interface304includes a receiver350and a transmitter352.

First interface308, e.g., a XMPP interface, is configured to receive first presence information corresponding to a first user identifier of a first user indicating a presence state of said first user in a first domain of a first autonomous system. Second interface306, e.g., a SIP IMS interface, is configured to receive second presence information corresponding to a second user identifier of the first user indicating a presence state of said first user in a second domain of a second autonomous system. In various embodiments, the first and second user identifiers are not MS Lync identifiers. Fourth interface308, e.g., a SIP/CTI interface, is configured to receive fourth presence information corresponding to a fourth user identifier of the first user indicating a presence state of said first user in a fourth domain of a fourth autonomous system. In various embodiments, the fourth user identifier is not an MS Lync identifier.

Third interface307, e.g., a MS Lync interface, is configured to communicate, e.g., transmit, a set of aggregated presence information, in a first format, to a presence server. For example, third interface307is configured to communicate a first set of aggregated presence information, in a first format to a first presence server, as presence information corresponding to a third user identifier. In some embodiments, the first presence server is an MS Lync server, e.g., MS Lync Presence server102, and the third identifier is an MS Lync ID.

Third interface307, e.g., a MS Lync interface, is further configured to communicate an updated first set of aggregated presence information, in the first format, to the first presence server, as presence information corresponding to the third user identifier.

In some embodiments, PAIF device300is configured to interface between an IMS network, and a MS Lync server. In some such embodiments, the PAIF device300is positioned between the IMS network and the MS Lync server. For example PAIF device108, which may be PAIF device300, is located between IMS network158and MS Lync Presence server102. In some embodiments the PAIF device is located in the IMS network. In some embodiments, the PAIF device is located in a border session controller which is an edge device positioned at the edge of the IMS network.

FIG. 4is a drawing of assembly of modules400which may be, and in some embodiments is, included in exemplary PAIF device300illustrated inFIG. 3. The modules in the assembly of modules400may, and in some embodiments are, implemented fully in hardware within the processor310, e.g., as individual circuits. The modules in the assembly of modules400may, and in some embodiments are, implemented fully in hardware within the assembly of modules312, e.g., as individual circuits corresponding to the different modules. In other embodiments some of the modules are implemented, e.g., as circuits, within the processor310with other modules being implemented, e.g., as circuits within assembly of modules312and/or within I/O interfaces202, external to and coupled to the processor310. As should be appreciated the level of integration of modules on the processor and/or with some modules being external to the processor may be one of design choice.

Alternatively, rather than being implemented as circuits, all or some of the modules included in assembly of modules400may be implemented in software and stored in the memory314of the PAIF device300, with the modules controlling operation of PAIF device300to implement the functions corresponding to the modules when the modules are executed by a processor, e.g., processor310. In some such embodiments, the assembly of modules400is included in the memory314as assembly of modules320. In still other embodiments, various modules in assembly of modules400are implemented as a combination of hardware and software, e.g., with another circuit external to the processor providing input to the processor310which then under software control operates to perform a portion of a module's function. While shown in theFIG. 3embodiment as a single processor, e.g., computer, it should be appreciated that the processor310may be implemented as one or more processors, e.g., computers.

When implemented in software the modules include code, which when executed by the processor310, configure the processor310to implement the function corresponding to the module. In embodiments where the assembly of modules400is stored in the memory314, the memory314is a computer program product comprising a computer readable medium comprising code, e.g., individual code for each module, for causing at least one computer, e.g., processor310, to implement the functions to which the modules correspond.

Completely hardware based or completely software based modules may be used. However, it should be appreciated that any combination of software and hardware, e.g., circuit implemented modules may be used to implement the functions. As should be appreciated, the modules illustrated inFIG. 4control and/or configure the PAIF device300or elements therein such as the processor310, to perform functions of corresponding steps illustrated in the method flowchart200ofFIG. 2. Thus the assembly of modules400includes various modules that perform functions of corresponding steps of the method shown inFIG. 2.

Assembly of modules400includes a monitoring module401, a first interface receiver module402, a second interface receiver module404, a fourth interface receiver module406, an aggregated presence information generation module408, an information processing module410, a storage module412, and a third interface communications module414. Monitoring module401is configured to monitor for presence information, e.g., presence information being received via first interface308, second interface306, and fourth interface304.

First interface receiver module402, e.g., a receiver module configured to receive signals via first interface308, e.g., a XMPP interface, is configured to receive first presence information corresponding to a first user identifier of a first user indicating a presence state of said first user in a first domain of a first autonomous system. Second interface receiver module404, e.g., a receiver module configured to receive signals via a second interface306, e.g., a SIP IMS interface, is configured to receive second presence information corresponding to a second user identifier of the first user indicating a presence state of said first user in a second domain of a second autonomous system. Fourth interface receiver module406, e.g., a receiver module configured to receive signals via a fourth interface304, e.g., a SIP/CTI interface, is configured to receive fourth presence information corresponding to a fourth user identifier of the first user indicating a presence of state of said first user in a fourth domain of a fourth autonomous system.

Aggregated presence information generation module408is configured to generate from received presence information, a set of aggregated presence information. For example, aggregated presence information generation module408is configured to generate from first and second presence information a first set of aggregated presence information. In some such embodiments, the first set of aggregated presence information is not indicated to be aggregated information. In some such embodiments, the first and second user identifiers are not MS Lync identifiers. As another example, aggregated presence information generation module408is further configured to generate from first, second and fourth presence information an updated first set of aggregated presence information. In some such embodiments, the updated first set of aggregated presence information is not indicated to be aggregated information. In some such embodiments, the first, second, and fourth user identifiers are not MS Lync identifiers.

Information processing module410is configured to process a set of aggregated information to put it in a first format. For example, information processing module410is configured to process a first set of aggregated information to put it in a first format. In some embodiments, the first format is a format used in MS Lync communications. In some embodiments, the first set of aggregated information in the first format includes an aggregation indicator indicating that the information being communicated is aggregated information. As another example, the information processing module410is configured to process an updated first set of aggregated information to put in a first format.

Storage module412is configured to store a generated set of aggregated information and a processed set of generated aggregated information, e.g., within data/information322of memory314of PAIF device300.

Third interface communications module414, e.g., a MS Lync communication module, is configured to communicate, e.g., transmit, via third interface307, e.g., a MS Lync interface, a set of aggregated presence information in a first format to a presence server. For example, third interface communications module414is configured to communicate a first set of aggregated presence information in a first format to a first presence server, as presence information corresponding to third user identifier.

FIG. 5is a drawing of an exemplary first presence server500, e.g., a MS Lync presence server, in accordance with an exemplary embodiment. Exemplary first presence server500is, e.g., MS Lync presence server102ofFIG. 1. Exemplary first presence server500includes I/O interfaces502, a processor508, an assembly of modules510, e.g., an assembly of circuits, and memory512, coupled together via a bus511over which the various elements may interchange data and information. I/O interfaces502includes a plurality of interfaces including a first communications interface504, e.g., a MS Lync interface, and a second communications interface506, e.g., an XMPP interface506. In some embodiments, the first communications interface504includes a receiver550and a transmitter552. In some embodiments, the second communications interface506includes a receiver554and a transmitter556. Memory512includes an assembly of software modules514and data/information516.

Exemplary first communications interface504, e.g., a MS Lync interface, couples the first presence server500to a plurality of devices which support communications using a first format. For example, first communications interface504in MS Lync presence server102coupled the MS Lync presence server to PAIF device108via link138, to device3124via link144, to device5126via link146, and to device N128via link148.

First communications interface504is configured to communicate, e.g., transmit, from the first presence server500a set of aggregated presence information in a first format. For example, first communications interface504is configured to communicate, e.g., transmit, from said first presence server500a first set of aggregated presence information in a first format, as presence information corresponding to a third user identifier to a device in a third domain of a third autonomous system. The device in a third domain of a third autonomous system is, e.g., a MS Lnyc device. In one example, the device in a third domain of a third autonomous system is device3124ofFIG. 1. For example, MS Lync presence server102transmits a set of aggregated presence information corresponding to user A via first communications interface504over link144to device3124.

First communications interface504is further configured to receive third presence information corresponding to a third user identifier of a first user device indicating presence state of said first user on a third device in said third domain of a third autonomous system. For example, MS Lync presence server102receives, via first communications interface504, third presence information sent from device3124over link144. In some embodiments, the first presence server500is an MS Lync server, and the third user identifier is an MS Lync ID.

First communications interface504is further configured to receive a first set of aggregated presence information, e.g., from a PAIF device. In some embodiments, the first set of aggregated presence information is generated by a presence aggregation interworking function module included in an aggregation element, e.g., a PAIF device. First communications interface504is further configured to receive an updated first set of aggregated presence information, e.g., from the PAIF device.

First communications interface504is further configured to communicate, e.g., transmit, an updated first set of aggregated presence information in a first format to a device in the third domain. For example, an updated set of aggregated information is communicated, e.g., transmitted, via the first communications interface504of MS Lync presence server102to device3124, device5126, and/or device N126.

Second communications interface506, e.g., an XMPP interface, couples the first presence server500to a device communicating using a different format than the first format. For example, MS Lync presence server102, which may be the first presence server500, is coupled via second communications interface506, e.g., an XMPP interface, to XMPP gateway104.

FIG. 6is a drawing of assembly of modules600, which can be, and in some embodiments is, included in the exemplary first presence server500, e.g., a MS Lync presence server, illustrated inFIG. 5. The modules in the assembly of modules600can, and in some embodiments are, implemented fully in hardware within the processor508, e.g., as individual circuits. The modules in the assembly of modules600can, and in some embodiments are, implemented fully in hardware within the assembly of modules510, e.g., as individual circuits corresponding to the different modules. In other embodiments some of the modules are implemented, e.g., as circuits, within the processor508with other modules being implemented, e.g., as circuits within assembly of modules510and/or within I/O interfaces502, external to and coupled to the processor. As should be appreciated the level of integration of modules on the processor and/or with some modules being external to the processor may be one of design choice.

Alternatively, rather than being implemented as circuits, all or some of the modules including in assembly of modules600may be implemented in software and stored in the memory512of the first presence server500, with the modules controlling operation of first presence server500to implement the functions corresponding to the modules when the modules are executed by a processor, e.g., processor508. In some such embodiments, the assembly of modules600is included in the memory512as assembly of modules514. In still other embodiments, various modules in assembly of modules600are implemented as a combination of hardware and software, e.g., with another circuit external to the processor providing input to the processor508which then under software control operates to perform a portion of a module's function. While shown in theFIG. 5embodiment as a single processor, e.g., computer, it should be appreciated that the processor508may be implemented as one or more processors, e.g., computers.

When implemented in software the modules include code, which when executed by the processor508, configure the processor508to implement the function corresponding to the module. In embodiments where the assembly of modules600is stored in the memory512, the memory512is a computer program product comprising a computer readable medium comprising code, e.g., individual code for each module, for causing at least one computer, e.g., processor508, to implement the functions to which the modules correspond.

Completely hardware based or completely software based modules may be used. However, it should be appreciated that any combination of software and hardware, e.g., circuit implemented modules may be used to implement the functions. As should be appreciated, the modules illustrated inFIG. 6control and/or configure the first presence server500or elements therein such as the processor508, to perform functions of corresponding steps illustrated in the method flowchart200ofFIG. 2. Thus the assembly of modules600includes various modules that perform functions of corresponding steps of the method shown inFIG. 2.

Assembly of modules600includes a monitoring module601, a first communications interface, e.g., MS Lync interface, receiver module602, a first communications interface, e.g., MS Lync interface, transmitter module604, a second interface, e.g., a XMPP interface, receiver module606, a second interface, e.g., a XMPP interface, transmitter module608, an update information generation module610, a first updating module612, a format conversion module614, a second updating module616, a presence update registration module618, and a presence information request module620. Monitoring module601is configured to monitor for presence information, e.g., presence information being received via first communications interface504.

First communications interface receiver module602is configured to receive, via first communication interface504, a set of aggregated presence information corresponding to a first user from a PAIF device, and presence information corresponding to the first user from one or more additional user devices. For example, the first communications interface receiver is configured to receive third presence information corresponding to the third user identifier of the first user indicating a presence state of the first user on a third device in said third domain of said third autonomous system.

First communications interface transmitter module604is configured to transmit, via the first communications interface504, a first set of aggregated presence information in said first format, as presence information corresponding to the third user identifier to a device in a third domain of a third autonomous system. In one example, in which the first presence server500is MS Lync server102, the device in the third domain of a third autonomous system is, e.g., device3124, which is an MS LYNC device. First communications interface transmitter module604is further configured to transmit, via the first communications interface504, an updated first set of aggregated presence information in said first format, as presence information corresponding to the third user identifier to a device in a third domain of a third autonomous system. In one example, in which the first presence server500is MS Lync server102, the device in the third domain of a third autonomous system is, e.g., device3124or another device in the third domain, e.g., device5126, which is an MS LYNC device.

Second communications interface receiver module606is configured to receive, via second communication interface506signals including, e.g. presence information, a request to register to receive presence updates, a request for presence information, etc.

First communications interface transmitter module608is configured to transmit, via the second communications interface506, aggregated presence information corresponding to user, e.g., an updated first set of presence information to a device which does not support the first format.

Updated information generation module610is configured to generate from a first set of aggregated presence information and third presence information from a third device an updated first set of aggregated presence information in the first format.

First updating module612is configured to control the first presence server to communicate, via said first communications interface, said updated first set of aggregated presence information, in said first format as presence information corresponding to the third user identifier, to at least one device which supports said first format and has expressed an interest in presence information corresponding to the third user identifier. A device may have expressed an interest by registering for presence updates corresponding to the first MS Lync ID or requested information for the first MS Lync ID which corresponds to the third user identifier.

Format conversion module614is configured to convert an updated first set of aggregated presence information from the first format to a different format used by a device which does not support the first format but has expressed an interest in presence information corresponding to the third user identifier.

Second updating module616is configured to control the first presence server to communicate, via a second communications interface, said updated first set of aggregated presence information to a device which does not support the first format.

Presence update registration module618is configured to receive and process requests from devices expressing an interest in presence information corresponding to a user ID, e.g., the third user identifier corresponding to the first user. A part of processing a request, a requesting device may be, and sometimes is, registered to receive updated presence information, e.g., on an ongoing basis as updates become available. As part of the registration, information is stored in a registration record as to the format in which the presence information is to be communicated, e.g., a first format, or a different format.

Presence information request module620is configured to receive and process requests from devices expressing an interest in presence information corresponding to a user ID, e.g., the third user identifier corresponding to the first user. In response to a request, a requesting device may be, and sometimes is, sent updated presence information.

In some embodiments, said first presence information corresponds to a first device, said second presence information corresponds to a second device and said fourth presence information corresponds to a fourth device, said first, second and fourth devices corresponding to the first user. In some embodiments, said third presence information includes user state information in an MS Lync format, said first, second and fourth domains being domains in which MS Lync is not used to communicate presence information.

In some embodiments, said first presence information is presence information generated by a Web server and wherein said first presence information corresponds to a smart phone. In some embodiments, said first presence information includes user state information in a XML (eXtensible Markup Language) format, said first domain being a domain in which XML is used to communicate presence information. In some embodiments, the XML format is XMPP (Extensible Messaging and Presence Protocol) format. In some embodiments, said second user identifier is an IMS ID; and the second presence information is information obtained from SIP signaling corresponding to devices using said IMS ID or location signaling corresponding to devices using said IMS ID. In some embodiments, the second presence information includes SIP session information from a call server control entity (e.g., S-CSCF).

In various embodiments, the first and second presence information each include one or more of the following: user registration status; user in call status or IDLE status; user location; access network capability information; and user device capability information, e.g., device audio and/or video capability information.

Various aspects and/or features or some embodiments, are further described below.

FIG. 7illustrates an exemplary communications environment700including a fixed core network706, a 2G/3G radio network708, a 2G/3G core network704, a 3G/4G packet access network710, an IMS network702corresponding to Telecom service provider A, a Lync online cloud712, a first Enterprise PBX using Lync online, Enterprise A766, a second Enterprise PBX using Lync online, Enterprise B768, and a third Enterprise PBX using on premises Lync, Enterprise C770.

A plain old telephone service (POTS) device756is connected to the fixed core network706. The 2G/3G radio network708includes a plurality of base stations including exemplary base station1(BS1) and base station2(BS2). User device1748and user device2750are coupled to BS1722via wireless links. User device3752and user device4754are coupled to BS2724via wireless links. The 2G/3G core network704is coupled to the 2G/3G radio network708. The 2G/3G core network includes a home location register (HLR)714, a short message service center (SMSC)716, circuit switched equipment (CSE)718and a service control point (SCP)720. The SCP720interfaces the fixed core network706to the 2G/3G core network704.

The 3G/4G packet access network710includes a plurality of eNode B devices (eNB1744, . . . , eNB K746). User device5758and user device6760are coupled to eNB1744. User device7762and user device J764are coupled to eNB K746. The eNodeB devices (eNB1744, . . . , eNB K746) are coupled to a serving gateway (SGW)742.

IMS network702includes a plurality of IMS Application servers (IMS APP1728, . . . , IMS APP n730), a media gateway control function and media gateway (MGCF and MGW) device726, a serving call session control function (S-CSCF) device732, a home subscriber server (HSS)731, a proxy call session control function (P-CSCF) device734, an IMS service control gateway (ISC GW)735, and a Presence Aggregation Information Interworking Function PAIF device738. HSS731, IMS APP1728, IMS APP n730, MCGF and MGW device726, a P-CSCF device734, a ISC GW735, and PAIF device738, are coupled to the S-CSCF732.

MGCF and MGW device726couples the IMS network702to the 2G/3G core network704. P-CSCF734is coupled to a packet data network gateway (PDN GW)712, which is coupled to the SGW742of 3G/4G packet access network710. ISC GW735of IMS network702is coupled to PAIF device740of Lync online cloud712.

Enterprise C770includes a Lync presence server771, which is coupled to the PAIF device738of IMS network702. A plurality of user devices (user device1C788, . . . , user device NC790) are coupled to Lync Presence server770of Enterprise C770.

A plurality of user devices (user device1A784, . . . , user device NA786) are coupled to Enterprise A766. A plurality of user devices (user device1B780, . . . , user device NB782) are coupled to Enterprise B768. Lync Presence server770is coupled to PAIF738.

A user may, and sometimes does, have multiple user devices, e.g., different user devices which may be used to access different autonomous systems, e.g., based on device capabilities and/or user subscription. A user may, and sometimes does, have different user IDs corresponding to different systems, e.g., an ID corresponding to a 2G cellular network, an ID corresponding to a 4G packet network, a MS Lync ID, etc.

In one embodiment, the Presence Aggregation and Interworking Function (PAIF) is included in a module positioned between MS Lync and IMS Networks and/or clouds. In the example ofFIG. 1, PAIF device108is positioned between MS Lync Presence server102and IMS network112. In other embodiments, the Presence Aggregation and Interworking Function is deployed under a MS Lync cloud or as part of an IMS network. In the example, ofFIG. 7, PAIF740is deployed under Lync cloud712, e.g., an MS Lync cloud, and PAIF738is deployed as part of IMS network702. When the PAIF is located in the IMS network facing the Lync Enterprises, the IMS operator is able to offer the enhanced presence service to MS Lync subscribers. When the PAIF is located in the MS Lync cloud facing the IMS Operator it enables the MS Lync cloud to expose standard SIP interfaces towards the IMS Operator.

In various embodiments, the IMS network702, uses the standard IMS procedures as defined by 3GPP and chains in the Presence Aggregation & Interworking Function (738or740), as an IMS Application server for the subscriber. Chaining of the PAIF Application server (738or740) for a subscriber can be configured in the HSS731via ‘IFCs—Initial Filter Criteria’. S-CSCF (732)/IMS core chains in the PAIF (738or740) (via ISC Gateway745in case PAIF740is in a different domain) in the following events:Registration/Deregistration—S-CSCF732sends the third party registration/de-registration towards PAIF (738or740) when IMS Identity of the user registers or de-registers,Originating call—S-CSCF732chains in the PAIF (738or740) when IMS Identity of user initiates a call,Terminating call—S-CSCF732chains in the PAIF (738or740) when an incoming call is received for IMS Identity of user.

In accordance with a feature of various embodiments of the present invention, a Presence Aggregation and Interworking Function (PAIF) module, e.g. in a PAIF device such as PAIF738or PAIF740, is introduced into a communications environment. In various embodiments, a PAIF is responsible for monitoring user activity, aggregating status information corresponding to a user, and communicating aggregated status information. The PAIF monitors user activity corresponding to an IMS ID. This includes monitoring user registration information, monitoring user on call information corresponding to incoming and/or outgoing calls, and monitoring user Idle information. The PAIF aggregates the presence status of the user based on user activity on the user's IMS ID and publishes the aggregated information to a MS Lync system.

FIG. 8is a drawing800illustrating an exemplary Lync network802in the Lync domain, an exemplary IMS/NextGeneration SIP network804in the IMS domain, and a PAIF device806which bridges the two domains. The Lync network802includes an exemplary Lync presence server804. SIP signals808flows between the IMS network and a first interface of the PAIF device806. United Communications Managed API (UCMA) signals810flow between the Lync Presence server and a second interface of the PAIF device806.

Exemplary Lync and IMS Presence aggregation procedures are described below. In some embodiments, the PAIF acts as a standard IMS Application Server (AS) relaying the SIP Requests and responses back to a S-CSCF node. The IMS AS may be, and in some embodiments is, a SIP proxy or back to back user agent (B2BUA) transparently relaying Session Description Protocol (SDP) information. The PAIF uses the knowledge of the SIP session corresponding to the IMS ID to establish the user's presence state.

The PAIF learns the location of a device using the user's IMS ID based on one or more of the following:SIP Signaling headers, e.g., ‘P-Access-Network-Info’ and GeoLocation header, etc.;Using interface to location database, e.g., HLR, HSS, etc.

The PAIF learns the User's activity on the user's devices with respect to the user's IMS ID based on one or more of the following:by being chained in as an IMS AS by IMS core functions for calls and registrations;by having an interface towards call server serving the User to learn its call activity, for example a CTI interface, or any notification mechanism.

The PAIF learns the user device capability on the user's IMS ID based on one or more of the following:User and network Policy information stored in a database,Capabilities of the Access network, which can be learned dynamically using SIP headers, e.g., ‘P-Access-Network-Info’,Capability of the device, which can be learned dynamically using SIP headers, e.g., ‘User-Agent’.

In some embodiments, the PAIF establishes the users presence status based on one or more of the following:User registration status;User in call or IDLE;User location;Access network capabilities;User device capability.

In some embodiments, the PAIF uses the open presence specification published by Microsoft, e.g., Microsoft's [MS-PRES]: Presence Protocol, for sharing the presence state of the user. In some embodiments, the PAIF sends a SIP PUBLISH request with pidf+xml payload representing IMS IDs presence state based on user activity.User not de-Register→send Publish with presence state expired.User Registered but IDLE→send Publish with presence state AvailableUser On call—incoming or outgoing calls→send Publish with presence state Busy

In some embodiments, the PAIF will send SIP Publish with IMS ID presence state to a Lync server in following events:User registers→presence state AvailableUser de-registers/registration expired→presence state expiredUser makes a call→presence state BusyUser receives a call→presence state BusyUser call is over →presence state Available

Table1300ofFIG. 13illustrates exemplary presence information which may be, and in some embodiments is, generated for a user ID by a PAIF device based on activity of a user's device detected by the PAIF device during monitoring of the activity of the user's device. In some such embodiments the PAIF device may be incorporated into an Enterprise PBX or an SBC. Each of the rows1306,1308,1310,1312,1314,1316, and1316contain two entries. The first entry of each of these rows corresponds to column1302and contains an activity which may be detected during monitoring of the activity corresponding to a user ID, e.g., an IMS ID, by the PAIF on one of the PAIF's I/O interfaces. The second entry of each of these rows corresponds to column1304and contains the corresponding presence information generated by the PAIF for the user ID based on the monitored activity contained in the entry of the first column of the row. The entries of row1306indicate that activity of being registered (entry row1306, column1302) correlates to a presence information state of available (entry row1306, column1304). The entries of row1308indicate that activity of making a call (entry row1308, column1302) correlates to a presence information state of busy (entry row1308, column1304). The entries of row1310indicate that activity of receiving a call (entry row131, column1302) correlates to a presence information state of busy (entry row1310, column1304). The entries of row1312indicate that activity of call over (entry row1312, column1302) correlates to a presence information state of available (entry row1312, column1304). The entries of row1314indicate that activity of not registered (entry row1314, column1302) correlates to a presence information state of offline (entry row1314, column1304). The entries of row1316indicate that activity of detecting a location, e.g., through a SIP message, correlates to presence information indicating the location detected (entry row1316, column1304). The entries of row1318indicate that activity of detecting a device capability, e.g., through a SIP message, correlates to presence information indicating the device capability detected (entry row1318, column1304).

FIG. 9is a flowchart900of an exemplary method of operating a PAIF device in accordance with an exemplary embodiment. Operation starts in step902in which the PAIF device is powered on and initialized. Operation proceeds from step902to step904, in which the PAIF device monitors a user's activity across one or more of a user's IDs in different domains, e.g., user registration status, user in call or idle status, user location, access network capabilities, user device capability. Operation proceeds from step904to step906, in which the PAIF device determines if user activity has changed in any domain. If the PAIF determines that user activity has not changed, then operation proceeds from step906to step904, in which the PAIF continues the monitoring. If the PAIF determines that user activity has changed, then operation proceeds from step906to step908. In step908the PAIF device generates aggregated presence state for the user based on the user's activity across the different domains. Operation proceeds from step908to step910. In step910the PAIF transmits the generated aggregated presence state to the presence server. Operation proceeds from step910to step904for additional monitoring.

An exemplary method of providing presence information in a communications environment including multiple autonomous systems, in accordance with some embodiments, comprises: receiving, at a first aggregation element, first presence information corresponding to a first user identifier of a first user indicating a presence state of said first user in a first domain of a first autonomous system; receiving, at the first aggregation element, second presence information corresponding to a second user identifier of the first user indicating a presence state of said first user in a second domain of a second autonomous system; generating, at the first aggregation element, from said first and second presence information a first set of aggregated presence information; and communicating from the first aggregation element said first set of aggregated presence information, in a first format, to a first presence server, as presence information corresponding to a third user identifier. In some embodiments, the exemplary method further comprises communicating, from said first presence server, said first set of aggregated presence information, in said first format, as presence information corresponding to the third user identifier, to a device, e.g., a 3rd device which is an MS LYNC device, in a third domain of a third autonomous system. In some such embodiments, the exemplary method further comprises: prior to communicating said first set of aggregated information to said presence server in the first format, processing, at said first aggregation element, said first set of aggregated information to put it in said first format. In some embodiments, said first set of aggregated information in the first format includes an aggregation indicator indicating that the information being communicated is aggregated information.

In some embodiments, the exemplary method includes receiving, at the first presence server, third presence information corresponding to said third user identifier of the first user indicating a presence state of said first user on a third device in said third domain of said third autonomous system; generating from said first set of aggregated presence information and said third presence information from said third device an updated first set of aggregated presence information in the first format; and communicating said updated first set of aggregated presence information, in the first format, to a device in said third domain, e.g., 3rd device or another device in the 3rd domain.

In some embodiments, said first set of aggregated presence information is generated by a presence aggregation internetworking function module included in said first aggregation element. In some such embodiments, said first aggregation element is configured to interface between an IMS network and a MS Lync server.

In some embodiments, said first aggregation element is located in a device positioned between the IMS network and the MS Lync Server; said MS Lync server is said first presence server. In some embodiments, first aggregation element is located in a device located in the IMS network. In some embodiments, said first aggregation element is located in a border session controller which is an edge device positioned at the edge of the IMS network. In some embodiments, the first aggregation element is location in a application server.

In various embodiments, first presence server is an MS LYNC server, and said third identifier is an MS Lync ID. In some such embodiments, said first set of aggregated presence information is not indicated to be aggregated information.

In some embodiments, said first and second user identifiers are not MS LYNC identifiers.

In various embodiments, the exemplary method includes receiving, at the first aggregation element, fourth presence information corresponding to a fourth user identifier of the first user indicating a presence state of said first user in a fourth domain of a fourth autonomous system; generating, at the first aggregation element, from said first, second and fourth presence information an updated first set of aggregated presence information; and communicating said updated first set of aggregated presence information, in the first format, to the first presence server, as presence information corresponding to the third user identifier.

In some embodiments, said first presence information corresponds to a first device, said second presence information corresponds to a second device and said fourth presence information corresponds to a fourth device, said first, second and fourth devices corresponding to the first user; and communicating, from said first presence server, said updated first set of aggregated presence information, in said first format, as presence information corresponding to the third user identifier, to at least one device which supports said first format and has expressed an interest (e.g., registered for presence updates corresponding to the first MS LYNC ID or request presence information for the first MS LYNC ID) in presence information corresponding to the third user identifier. In some such embodiments, the exemplary method further includes converting said updated first set of aggregated presence information from said first format to a different format used by a device which does not support said first format but which has expressed an interest in presence information corresponding to the third user identifier, prior to communicating said updated first set of aggregated presence information to the device which does not support said first format.

In some embodiments, said third presence information includes user state information in an MS Lync format, said first, second and fourth domains being domains in which MS Lync is not used to communicate presence information.

In some embodiments, said first presence information is presence information generated by a Web server and said first presence information corresponds to a smart phone. In some embodiments, first presence information includes user state information in a XML (eXtensible Markup Language) format, said first domain being a domain in which XML is used to communicate presence information. In some such embodiments, the XML format is XMPP (Extensible Messaging and Presence Protocol) format.

In various embodiments, the second user identifier is an IMS ID; and the second presence information is information obtained from SIP signaling corresponding to devices using said IMS ID or location signaling corresponding to devices using said IMS ID.

In various embodiments, the exemplary method includes storing said first set of aggregate presence information in a home subscriber server memory corresponding to said IMS ID. In some embodiments, the second presence information includes SIP session information from a call server control entity, e.g., a S-CSCF.

In some embodiments, said first and second presence information each include one or more of the following: user registration status; user in call status or IDLE status; user location; access network capability information; and user device capability information, e.g., device audio and/or video capability information.

In some embodiments, the exemplary method includes operating a CTI interface of a call server to monitor call activity corresponding to said fourth user identifier; and operating the CTI interface of said call server to generate said fourth presence information based on said monitoring.

An exemplary system, in accordance with some embodiments, includes a presence aggregation and interworking function (PAIF) device and a first presence server. The PAIF device includes a first interface configured to receive first presence information corresponding to a first user identifier of a first user indicating a presence state of said first user in a first domain of a first autonomous system; a second interface configured to receive second presence information corresponding to a second user identifier of the first user indicating a presence state of said first user in a second domain of a second autonomous system; an aggregated presence information generation module configured to generate, from said first and second presence information, a first set of aggregated presence information; and a third interface configured to communicate said first set of aggregated presence information, in a first format, to a first presence server, as presence information corresponding to a third user identifier.

In some embodiments, the first presence server includes: a first communications interface configured to communicate, from said first presence server, said first set of aggregated presence information, in said first format, as presence information corresponding to the third user identifier, to a device, e.g., 3rd device which is an MS LYNC device, in a third domain of a third autonomous system.

In some embodiments, said PAIF device further comprises: an information processing module configured to process said first set of aggregated information to put it in said first format. In some embodiments, said first set of aggregated information in the first format includes an aggregation indicator indicating that the information being communicated is aggregated information.

In some embodiments, the first communication interface in said first presence server is further configured to receive third presence information corresponding to said third user identifier of the first user indicating a presence state of said first user on a third device in said third domain of said third autonomous system. In various embodiments, said first presence server further comprising: an updated information generation module configured to generate, from said first set of aggregated presence information and said third presence information from said third device, an updated first set of aggregated presence information in the first format; and the first communications interface is further configured to communicate said updated first set of aggregated presence information, in the first format, to a device (e.g., 3rd device or another device in 3rd domain) in said third domain.

In some embodiments, first set of aggregated presence information is generated by a presence aggregation internetworking function module included in said aggregation element. In various embodiments, the PAIF device is configured to interface between an IMS network and a MS Lync server. In some such embodiments, the PAIF device is positioned between the IMS network and the MS Lync Server. In some embodiments, the PAIF device is located in the IMS network. In various embodiments, the PAIF device is included in a border session controller which is an edge device positioned at the edge of the IMS network.

In some embodiments, the first presence server is an MS LYNC server, and wherein said third identifier is an MS Lync ID. In some such embodiments, said first set of aggregated presence information is not indicated to be aggregated information.

In various embodiments, the first and second user identifiers are not MS LYNC identifiers. In some such embodiments, the first, second and fourth user identifiers are not MS Lync identifiers; the third user identifier is an MS LYNC identifier, and the first second and fourth user identifier correspond to the same user.

In some embodiments, the PAIF device includes a fourth interface configured to receive fourth presence information corresponding to a fourth user identifier of the first user indicating a presence state of said first user in a fourth domain of a fourth autonomous system. In some such embodiments, said aggregated presence information generation module is further configured to generate from said first, second and fourth presence information an updated first set of aggregated presence information; and the third interface is further configured to communicate said updated first set of aggregated presence information, in the first format, to the first presence server, as presence information corresponding to the third user identifier.

In some embodiments, the first presence information corresponds to a first device, the second presence information corresponds to a second device and said fourth presence information corresponds to a fourth device, said first, second and fourth devices corresponding to the first user. In some such embodiments, the first presence server further comprises: a first updating module which is configured to control the first presence server to communicate, via said first communications interface, said updated first set of aggregated presence information, in said first format, as presence information corresponding to the third user identifier, to at least one device which supports said first format and has expressed an interest (e.g., registered for presence updates corresponding to the first MSLYNC ID or request presence information for the first MS LYNC ID) in presence information corresponding to the third user identifier. In some such embodiments, said first presence server further comprises: a format conversion module configured to convert said updated first set of aggregated presence information from said first format to a different format used by a device which does not support said first format but which has expressed an interest in presence information corresponding to the third user identifier; and a second updating module which is configured to control the first presence server to communicate, via a second communications interface, said updated first set of aggregated presence information to the device which does not support said first format.

In some embodiments, the third presence information includes user state information in an MS Lync format, said first, second and fourth domains being domains in which MS Lync is not used to communicate presence information.

In various embodiments, said first presence information is presence information generated by a Web server and wherein said first presence information corresponds to a smart phone. In some embodiments, said first presence information includes user state information in a XML (eXtensible Markup Language) format, said first domain being a domain in which XML is used to communicate presence information. In some such embodiments, the XML format is XMPP (Extensible Messaging and Presence Protocol) format. In some embodiments, said second user identifier is an IMS ID; and the second presence information is information obtained from SIP signaling corresponding to devices using said IMS ID or location signaling corresponding to devices using said IMS ID.

In some embodiments, the system further includes a home subscriber server including memory for storing said first set of aggregate presence information corresponding to said IMS ID. In some embodiments, the second presence information includes SIP session information from a call server control entity, e.g., a S-CSCF.

In some embodiments, said first and second presence information each include one or more of the following: user registration status; user in call status or IDLE status; user location; access network capability information; and user device capability information, e.g., device audio and/or video capability information.

In some embodiments, the updated aggregated presence information is transmitted from the PAIF device to the first presence server when the updated aggregated presence information associated with the first user generated by the PAIF device is determined by the PAIF device to be different from the prior aggregated presence information generated by the PAIF device for the first user and the updated presence information associated with the first user is not transmitted from the PAIF device to the first presence server when the PAIF device determines that the updated aggregated presence information generated by the PAIF device is not different from the prior aggregated presence information generated by the PAIF device for the first user and previously transmitted to the first presence server. In some embodiments, the first presence server publishes aggregated user presence information only when the first presence server determines that the aggregated user presence information has changed.

In some embodiments the first and second devices may be in the same autonomous system but in different domains. The various user devices shown and described in the exemplary embodiments such as smartphones, desk phones, IMS based mobile cellphones, and PBX desk phones, are only exemplary in nature and are not meant to limit the application.

In some embodiments, device1118may register with Google Presence Server106to receive notifications of the presence status of the third user identifier. In some such embodiments, the Google Presence Server106registers with the MS Lync Presence Server102to receive notifications regarding the status of the presence information associated with the third user identifier and upon receipt of such information from the MS Lync Presence Server102via XMPP Gateway104over communication links140and142transmits the information to the device1118via communication link145.

In various embodiments the system includes a call server including: a CTI interface for monitoring call activity corresponding to said fourth user identifier; and a generation module for generating said fourth presence information based on said monitoring.

While a logical sequencing of the processing steps of the exemplary embodiments of the methods, routines and subroutines of the present invention have been shown, the sequencing is only exemplary and the ordering of the steps may be varied.

The techniques of various embodiments may be implemented using software, hardware and/or a combination of software and hardware. Various embodiments are directed to apparatus, e.g., a data processing system. Various embodiments are also directed to methods, e.g., a method of processing data. Various embodiments are also directed to non-transitory machine, e.g., computer, readable medium, e.g., ROM, RAM, solid state storage, silicon storage disks, CDs, hard discs, etc., which include machine readable instructions for controlling a machine to implement one or more steps of a method.

In various embodiments, servers, e.g., application servers, may be utilized. Servers may be implemented in one or more circuits thus in some embodiments a server is a hardware device. In some embodiments servers may be software. In some embodiments servers may be a combination of hardware and software.

Various features of the present invention are implemented using modules. For example each of the various routines and/or subroutines disclosed may be implemented in one or more modules. Such modules may be, and in some embodiments are, implemented as software modules. In other embodiments the modules are implemented in hardware. In still other embodiments the modules are implemented using a combination of software and hardware. A wide variety of embodiments are contemplated including some embodiments where different modules are implemented differently, e.g., some in hardware, some in software, and some using a combination of hardware and software. It should also be noted that routines and/or subroutines, or some of the steps performed by such routines, may be implemented in dedicated hardware as opposed to software executed on a general purpose processor. Such embodiments remain within the scope of the present invention. Many of the above described methods or method steps can be implemented using machine executable instructions, such as software, included in a machine readable medium such as a memory device, e.g., RAM, floppy disk, solid state storage device, silicon storage device, etc. to control a machine, e.g., general purpose computer with or without additional hardware, to implement all or portions of the above described methods. Accordingly, among other things, the present invention is directed to a machine readable medium including machine executable instructions for causing a machine, e.g., processor and associated hardware, to perform one or more of the steps of the above described method(s).

Numerous additional variations on the methods and apparatus of the various embodiments described above will be apparent to those skilled in the art in view of the above description. Such variations are to be considered within the scope of the invention.