The present system and method relate to unified communications (UC) systems, and more particularly, to providing a system and method for federating chat rooms across disparate unified communications systems.
A unified communications (UC) system generally refers to a system that provides users with an integration of communications services. Users typically connect to the UC system through a single client to access the integrated communications services. The integrated communications services may include real-time services, such as instant messaging (IM), presence notifications, telephony, and video conferencing, as well as non-real-time services, such as email, SMS, fax, and voicemail.
Organizations, such as corporations, businesses, educational institutions, and government entities, often employ UC systems to enable internal communication among its members in a uniform and generally cost-efficient manner. In addition, organizations may employ UC systems for communicating with trusted external entities.
Currently, a number of third-party developers offer various UC applications for implementing UC systems. The various applications include Microsoft Office Communications Server (OCS), IBM Sametime (ST), Google Apps, and Cisco Jabber. Because there is no industry standard regarding UC systems, issues of incompatibility arise when one UC system needs to communicate with a different UC system. In one case, a corporation or business that employs a particular UC system may desire to communicate externally with vendors or other persons who employ a different UC system. Or in the case of internal communication, when an organization that employs a particular UC system “A” merges with another organization that employs a UC system “B”, the ability for users on system “A” to communicate with users on system “B” is often desirable. Nevertheless, the incompatibility of the UC systems often makes communication between the UC systems difficult or impossible to implement.
A system wide shift to one system can be expensive and in some cases impractical. Thus, in the past, these issues have been dealt with in a variety of ways:
A system and method for federating chat rooms across disparate unified communications systems is disclosed. According to one embodiment, a system includes a federation server that is configured to connect to a first unified communications system and a second unified communications system. The federation server has a moderator that includes an address. The federation server has a translation engine that intercepts a first formatted message from the first unified communications system. The translation engine generates a second formatted message from the first formatted message, where the second formatted message includes a request from the moderator to a chat room with the second unified communications system to provide an invitation to the first unified communications system. The federation server routes the second formatted message to the second unified communications system.
The above and other preferred features, including various novel details of implementation and combination of events, will now be more particularly described with reference to the accompanying figures and pointed out in the claims. It will be understood that the particular systems and methods described here are shown by way of illustration only and not as limitations. As will be understood by those skilled in the art, the principles and features described herein may be employed in various and numerous embodiment without departing from the scope of the present disclosure.
The accompanying drawings, which are included as part of the present specification, illustrate the presently preferred embodiment and together with the general description given above and the detailed description of the preferred embodiment given below serve to explain and teach the principles described herein.
It should be noted that the figures are not necessarily drawn to scale and that elements of similar structures or functions are generally represented by like reference numerals for illustrative purposes throughout the figures. It also should be noted that the figures are only intended to facilitate the description of the various embodiments described herein. The figures do not describe every aspect of the teachings disclosed herein and do not limit the scope of the claims.
Issues arise, for instance, when users in domain B 120 need to communicate with users in domain A 110 or users in domain C 130. Without a communications link between users in two different domains, the users in a domain can only communicate (through its UC system) with users in the same domain. Here, as
However, where the UC systems are not running the same UC application, as between UC system 111 and UC system 121, there is typically no federation link available because a third-party developer would only provide support for its own product. Historically, one way to provide a communications link between UC systems 111 and 121 is to build a custom link 102, as
Furthermore, custom links are not scalable. As
The hub 350 acts as a central station for translating incoming data from any supported UC system into a common language (CL) 355. Depending on the UC application that is implemented on the receiving UC system, the CL 355 is then translated into the language that is supported by the receiving UC system. For instance, a message that is transmitted by UC system 331 and intended for UC system 341 is first transmitted to the hub 350 via connector 353. The message is then translated by hub 350 into a CL 355. Because the message is intended for UC system 341, the CL 355 is then translated into the language that is recognized by the UC application denoted by “UCz” and transmitted to UC system 341 via connector 354.
Similarly, a message that is transmitted by UC system 321 and intended for UC system 341 is first transmitted to the hub 350 via connector 352 and then translated into a CL 355. Again, the CL 355 is then translated into the language that is recognized by the UC application denoted by “UCz” and transmitted to UC system 341 via connector 354. In the case in which two UC systems are running the same UC application, the hub may route a message sent from one UC system to the other without performing translations. As
The hub may also perform direct translation (e.g., from “UCy” type to “UCz” type) without first translating the message into a CL. Direct translation may be used to achieve higher efficiency and to maintain high fidelity communications.
Under the exemplary embodiment of
In addition to solving the scalability issues described above, the hub or clearing house system illustrated in
Consistent with one embodiment, the CL is a superset language that supports features (e.g., fields) of all supported UC language formats. For instance, the CL may contain some or all the fields of a supported UC language format. Also, the CL may be an evolving language wherein new syntax (headers) can be added to accommodate any new features that become available in supported UC systems. The new syntax may then be used by all the translators to translate a CL formatted message into a message of respective UC format that supports these new features. In one embodiment, an appropriate CL format is generic SIP.
The hub system also allows administrators to set and enforce policies by virtue of it being a hub for all inter-domain communication. When a UC system in one domain communicates directly (without going through a hub) with a UC system in another domain, administrators of each domain can only control incoming and outgoing messages locally. However, if the UC systems communicate with each other through a hub, the hub allows administrators of each UC system to access the part of the hub that applies to them so that they can administer policies that are not possible to administer locally. For instance, an administrator may administer one or more policies through the hub to allow a user in one domain to make his status appear as available to only certain members of another domain. Such granular control in setting policies is generally not available to administrators of domains interconnected using just federation and custom links.
Hub 400 includes an administration module implemented on computer 401. An administration module (AM) is a software program that allows hub system administrators to configure the hub to provide UC systems with access to the hub. There is typically one AM for each installation. The AM configures the hub by creating and updating a data store in a database (DB) implemented on computer 402. The data store contains the information that is used by the federation servers (FS's) to perform their functions. Each of the FS's may be implemented on separate computers 4041-n.
Some of the configurable parameters and desired settings of the AM are as follows:
As mentioned earlier, the AM configures the hub by creating and updating a data store in a database (DB) implemented on computer 402. In addition to storing configuration data received from the AM, the DB also stores data regarding local administrators (administrators of UC systems connected to the hub), local users (users in the domains of associated UC systems), and FS's. In general, because only the AM can directly manipulate data in the DB, local administrators who wish to update the DB data would have to log into the AM to do so. Local user information that may be stored in the DB include usage and audit logging information. The DB may be implemented as a relational data base.
A FS has two main components: (1) instances of connectors, and (2) the DP Application Logic (herein “engine”). A connector is an object that includes both a hardware aspect and a software aspect. The hardware aspect includes a physical network card connection that provides a physical pathway for data to flow into and out of a FS machine. The software aspect of a connector, in its basic form, is comprised of (1) a listening loop that listens on the physical connection and waits for incoming data, and (2) a function that can be called by the FS when data is ready to be sent out from a network card of the FS.
client 711→RS 733→client 721
Similarly, media traffic originating from client 721 would flow as follows:
client 721→RS 733→client 711
If there is no common codec that is available to clients 711 and 721, RS 733 engages transcoder 735 to transcode the media traffic from one codec format (e.g., format used by client 711) to another codec format (e.g., format used by client 721) and vice versa. For instance, if transcoding is needed, media traffic originating from client 711 would flow as follows:
client 711→RS 733→Transcoder 735→RS 733→client 721
Similarly, media traffic originating from client 721 would flow as follows:
client 721→RS 733→Transcoder 735→RS 733→client 711
RS 733 engages transcoder 735 via control signals that, for instance, tell the transcoder 735 to set up and tear down the media endpoints (e.g., RTP and RTCP ports) that were set up at the transcoder for sending and receiving media to/from RS 733.
Although load balancers are not shown in
Next, the FS sends all caller candidates to the RS via an add-candidate message (at 803). (See
The FS waits for the callee to answer the call (at 809). After the callee answers the call, the FS parses the answer to obtain the callee candidates, which are then sent to the RS. Callee candidates are IP addresses and ports at which the callee can receive media traffic. The FS also sends an accept message (translated if appropriate) to the caller (at 810). The accept message signals to the caller that the callee has accepted the call. The accept message also contains the RS candidates for the caller. After receiving these RS candidates, the caller may use them to establish connectivity thru ICE negotiation, such as described in
Next, the FS waits for the RS to return final candidates (at 811). Final candidates are IP addresses and ports are the best remote candidates for transferring data between the RS and the caller/callee. The RS determines the final candidates by performing ICE connectivity checks (e.g., exchanging STUN messages) with both the caller and the callee. For instance, the RS would use different pairs of callee candidates and RS callee candidates to exchange STUN messages to determine the final callee and RS callee candidates. Similarly, the RS would use different pairs of caller candidates and RS caller candidates to exchange STUN messages to determine the final caller and RS caller candidates. After the RS returns the final candidates, the FS may send the final RS callee candidate to the callee if the callee protocol expects it (at 812). Finally, the call is established (at 813).
Next, the RS sets up an ICE reactor for each local RS candidate (at 902). An ICE reactor performs at least two functions. One function is to establish ICE connectivity through STUN negotiaion. After connectivity is established, a second function is to forward data packets between two peers. Next, the RS determines whether a call object is present for the call-id associated with the add-candidate message (at 903). If no call object is present, the RS creates a call object for the call-id (at 904). Next, the RS adds the candidates that are provided in the message to the call object (at 905). The RS then creates RS candidates for each of the caller and the callee (at 906) and sends them to the FS (at 907).
Next, the RS sends STUN binding requests through RS caller candidates and RS callee candidates to caller candidatdes and callee candidates, respectively (at 908). Next, the RS determines whether transcoding is required (at 909). Transcoding may be required if there exists no common media codec that is used by both caller and callee. If transcoding is not required, the RS sets up packet forwarding between the two local ports that have been allocated for the caller and the callee (at 912). For instance, if port A is used by the caller and port B is used by the callee, the RS forwards packets from A to B and vice versa. If transcoding is required, the RS allocates a transcoding channel and two additional ports for (e.g., port C for sending traffic to transcoder and port D for receiving traffic from transcoder) for communicating with the transcoder (at 910). The RS then sets up packet forwarding so that packets go through the transcoder (at 911). For instance, if transcoding is required, then the packet forwarding through the ports A to D would be as follows:
A→C→transcoder→D→B and vice versa.
If the STUN is valid, the reactor then determines whether it is a response or a request (at 1005). If the STUN is a response, the reactor determines whether remote candidate A is already writable (at 1006). If remote candidate A is already writable, the reactor proceeds to 1008. Otherwise, the reactor marks remote candidate A as writable (at 1007) before proceeding to 1008. If the STUN is a request, the reactor determines whether remote candidate A is already readable (at 1009). If remote candidate A is already readable, the reactor proceeds to 1011. Otherwise, the reactor marks remote candidate A as readable (at 1010) before proceeding to 1011. At 1011, the reactor generates a STUN request for remote candidate A that is sent via local candidate B.
At 1008, the reactor determines whether remote candidate A is both readable and writable. If remote candidate A is both readable and writable, the reactor marks remote candidate A as read-writable (at 1012), indicating that the candidate is ready to be used for communication, before proceeding to 1013. Otherwise, the candidate is not ready to be used for communication and the reactor proceeds back to 1001. At 1013, the reactor determines whether the current candidate is preferred over the best remote candidate. For instance, the reactor may compare the current candidate's preference number with that of the best remote candidate (e.g., candidate associated with highest preference number). If the current candidate's preference number is higher than (e.g., preferred over) that of the best remote candidate, the reactor makes the current candidate the best remote candidate.
After OCS SU connects successfully to the FSS, the FSS sends to the OCS SU a signal indicating the protocol that will be used (e.g., VER MSN_SECURE_FTP) (at 1304). The OCS SU replies to the FSS with the same string indicating the protocol (at 1305). After GTalk RU connects successfully to the FSS, the GTalk RU sends to the FSS an HTTP GET to request the file (at 1310). In response, the FSS sends an HTTP Response (at 1311).
The FSS sends the OCS SU a USR signal for authentication (at 1306). If the USR signal is valid, the OCS SU sends back to the FSS a FIL signal that indicates the file size (at 1307). Next, the FSS sends a TFR signal to the OCS SU (at 1308). Next, the OCS SU sends the file to the FSS while the FSS sends the file to the GTalk RU (at 1312). Because the FSS knows the file size, the FSS knows when a file has finished transferring and sends a BYE signal to the OCS SU indicating a complete transfer (at 1313). Next, the OCS SU sends a MAC signature to the FSS to check the transfer (at 1314). Finally, the OCS SU closes the connection with the FSS (at 1315) and the FSS closes the connection with the GTalk RU (at 1316).
After GTalk SU connects successfully to the FSS, the FSS sends to the GTalk SU an HTTP GET to request the file (at 1410). In response, the GTalk SU sends an HTTP Response (at 1411). After OCS RU connects successfully to the FSS, the OCS RU sends to the FSS a signal indicating the protocol that will be used (e.g., VER MSN_SECURE_FTP) (at 1404). The FSS replies to the OCS RU with the same string indicating the protocol (at 1405).
The OCS RU sends a USR signal to the FSS for authentication (at 1406). If the USR signal is valid, the FSS sends back to the OCS RU a FIL signal that indicates the file size (at 1407). Next, the OCS RU sends a TFR signal to the FSS (at 1408). Next, the GTalk SU sends the file to the FSS while the FSS sends the file to the OCS RU (at 1412). Because the OCS RU knows the file size, the OCS RU knows when a file has finished transferring and sends a BYE signal to the FSS indicating a complete transfer (at 1413). Next, the FSS sends a MAC signature to the OCS RU to check the transfer (at 1414). Finally, the FSS closes the connection with the OCS RU (at 1415) and the GTalk SU closes the connection with the FSS (at 1316).
In order for UC systems to communicate with each other through a hub, the local domain administrators of the UC systems need to properly configure their systems so that communications traffic intended for a receiving UC system is directed to the hub. For instance, in a clearinghouse or hub implementation, a domain gateway is typically implemented. The domain gateway is a component that allows the UC system to communicate with the hub. In order for a UC system to communicate with the hub, both the domain gateway and the UC system need to be configured properly.
In order to route communications traffic that is intended for domain “y.com” (1520) to the hub 1530, the allow list 1540, specifically the FQDN field in the entry for domain “y.com” (1520), needs to include the address of the hub 1530 (“hub_addr”). Furthermore, the hub 1530 must also be properly configured by the hub administrator, who must add both domains (“x.com” and “y.com”) to the hub 1530 through the AM 1531. Once the hub administrator has configured the AM 1531 and the AM 1531 has updated the data store in the DB 1532, the hub 1530 is ready for use and all traffic to and from “x.com” to “y.com” will flow through the hub 1530.
The routed traffic includes the message that was sent by 1511. After being processed by the hub 1530, the message is forwarded to domain gateway 1523, then to UC system 1522, and finally to user 1521. As
SRV records enable a domain (e.g., foo.com) to become part of the hub without asking other domains to configure their gateways/allow lists to add the domain in order to direct traffic to the hub. Accordingly, using SRV records for multiple protocols along with the support for those multiple protocols in the hub enable a domain (e.g., foo.com) to appear as different UC systems. For instance, by publishing an SRV record for the respective protocol, foo.com may appear as an OCS system to other OCS partners, and at the same time, foo.com may appear as a XMPP system to XMPP partners.
The SRV record requirement varies among UC systems based on the UC protocol used by the UC system or even within that UC protocol a vendor may have a specialized SRV record requirement. A feature of the hub is that the administrator of a domain (e.g., “y.com”) can publish SRV records for all the UC system types that can federate (via the hub) with the domain (e.g., “y.com”). All these SRV records would point to the address for the hub (e.g., “hub.addr”). For instance, if “x.com” is an OCS UC system, then it would look up_sipfederationtls._tcp.y.com to federate with “y.com”. If “z.com” is a Jabber UC system, then it would look up_xmpp-server._tcp.y.com to federate with “y.com.” While “y.com” is a certain UC type (e.g., Sametime) but because of the SRV record publication and the hub, “y.com” appears as an OCS UC system to “x.com” and as a Jabber UC system to “z.com”.
Each of the features and teachings disclosed herein can be utilized separately or in conjunction with other features and teachings to provide system and method for federating chat rooms across disparate unified communications systems. Representative examples utilizing many of these additional features and teachings, both separately and in combination, are described in further detail with reference to the attached figures. This detailed description is merely intended to teach a person of skill in the art further details for practicing preferred aspects of the present teachings and is not intended to limit the scope of the claims. Therefore, combinations of features disclosed above in the detailed description may not be necessary to practice the teachings in the broadest sense, and are instead taught merely to describe particularly representative examples of the present teachings.
In the description above, for purposes of explanation only, specific nomenclature is set forth to provide a thorough understanding of the present disclosure. However, it will be apparent to one skilled in the art that these specific details are not required to practice the teachings of the present disclosure.
Some portions of the detailed descriptions above are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk, including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The algorithms presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems, computer servers, or personal computers may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
Moreover, the various features of the representative examples and the dependent claims may be combined in ways that are not specifically and explicitly enumerated in order to provide additional useful embodiments of the present teachings. It is also expressly noted that all value ranges or indications of groups of entities disclose every possible intermediate value or intermediate entity for the purpose of original disclosure, as well as for the purpose of restricting the claimed subject matter. It is also expressly noted that the dimensions and the shapes of the components shown in the figures are designed to help to understand how the present teachings are practiced, but not intended to limit the dimensions and the shapes shown in the examples.
A data storage device 1725 such as a magnetic disk or optical disc and its corresponding drive may also be coupled to architecture 1700 for storing information and instructions. Architecture 1700 can also be coupled to a second I/O bus 1750 via an I/O interface 1730. A plurality of I/O devices may be coupled to I/O bus 1750, including a display device 1743, an input device (e.g., an alphanumeric input device 1742 and/or a cursor control device 1741).
The communication device 1740 allows for access to other computers (e.g., servers or clients) via a network. The communication device 1740 may comprise one or more modems, network interface cards, wireless network interfaces or other interface devices, such as those used for coupling to Ethernet, token ring, or other types of networks.
According to one embodiment, the present system allows a user of a first domain to join and participate in a chat room that is hosted on a second domain via a federation server. In one embodiment, the chat room may be a topic-based discussion room that persists over time. Because a user generally participates in a chat room, the terms “user” and “participant” are used interchangeably in this disclosure. The chat room may have a name. Once a chat room is created, it exists until it is deleted. The chat room may be a persistent chat room that includes content (e.g., a chat room history and a participant list) that is available for a configurable period of time. An example of a UC system that supports chat rooms is OPENFIRE™ (a real-time collaboration server that uses the XMPP protocol). If the chat room is persisted, a user that joins the chat room can browse what messages other users have provided in the chat room, i.e., browse a chat room history. Once a chat room is created, it exists even when there are no participants in the chat room (until the chat room is deleted). The second domain includes a chat room server that supports the chat room and allows a user of the chat room to communicate and collaborate with other users by accessing various features of the chat room including, but not limited to, joining and re-entering the chat room, viewing and posting a message in real-time, browsing/searching a chat room history and a participant list of the chat room, and participating in a chat room discussion. The present system allows a user of the first domain or the second domain to access the various features of the chat room. Furthermore, a user of the first domain or the second domain may further ensure the privacy of the chat room if the chat room is designated as private. According to one embodiment, the first domain is supported by a first UC system that does not support chat room functionality. The first UC system may support multi-user chat (MUC) functionality. The first UC system may create a MUC in real-time when two or more users request to communicate in a chat. A MUC ceases to exist when all the participants leave the MUC. An example of a UC system that supports MUC is Microsoft Office Communications Server (OCS). The present system allows the first UC system to access the chat room functionality that is provided by the chat room server of the second domain via federation and further make use of a multi-user chat (MUC) functionality of the first UC system so that a user of the first domain can participate in the chat room hosted by the second domain.
According to one embodiment, a user of a first domain adds an address of a chat room that is hosted on a second domain as a contact. This allows the user of the first domain to see and enter the chat room without having to be invited a first time or re-invited every time by a chat room moderator. For example, a user of a SIP-based domain can see and enter a chat room hosted on a conferencing domain of an XMPP-based UC system. This eliminates the need for a chat room server on the first domain or a federation support for a chat room capability the first domain in order to access a chat room hosted by another federated domain.
According to one embodiment, users (e.g., user 1811) in domain A 1810 can access the chat room 1821 hosted on domain B 1820 by adding an address of the chat room 1821 as a contact. User 1811 may access the chat room address 1821 via various means that include receiving the chat room address 1821 in an email and/or a chat message, and accessing the chat room address 1821 on a web page. For example, user 1811 can add an address conferenceroom.name@conference.domainb.com as a contact to his/her contact list, where conferenceroom.name is a name of the chat room 1821 and conference.domainb.com is the name of the conferencing domain, i.e., domain B 1820. User 1811 may enter or re-enter the chat room 1821 by opening a chat window using the contact of the chat room 1821 and/or by further providing a command (e.g., join) into the chat window.
After UC system 1812 receives an indication that user 1811 has opened a chat window or has provided a command in the chat window, UC system 1812 generates an originating message that initiates an invitation to join the chat room 1821. The originating message may be based on the protocol (e.g., SIP and XMPP) used by UC system 1812. In one embodiment, the FS 1800 detects and intercepts the originating message and generates a mediated invitation message to send to the chat room 1821 on behalf of a FS moderator 1802. The mediated invitation message includes a request from the FS moderator 1802 to the chat room 1821 to provide an invitation to user 1811 to join the chat room 1821. The FS moderator 1802 acts as a virtual user on another federated domain that runs on the same protocol as domain B 1820 by having an address. For example, the address of the FS moderator 1802 is supermod@foo.com, where the user name is supermod and the federated domain is foo.com. According to one embodiment, UC system 1822 may be configured to provide the FS moderator 1802 with a desired privilege. For example, UC system 1822 is configured to designate the FS moderator 1802 as an owner of the chat room 1821 that is hosted by domain B 1820 so that the FS moderator 1802 is provided with similar owner privileges as a chat room moderator of the chat room 1821. For example, UC system 1822 may be configured based on OPENFIRE™ (an instant messaging and chat server that implements the XMPP protocol) admin console.
According to one embodiment, for the FS moderator 1802 to act as a proxy and to re-invite user 1811 into the chat room 1821, the FS 1800 associates an identity (e.g., XMPP conference) with domain B 1820 that provides an indication that domain B 1820 hosts the chat room 1821 and makes use of the FS moderator 1802. When messages from UC system 1812 are transmitted to UC system 1822, the FS 1800 intercepts the messages on behalf of the FS moderator 1802 and routes the messages through a translation engine 1801 based on this indication.
According to one embodiment, the translation engine 1801 translates incoming messages from a supported UC system into a common language (CL). Depending on the UC application that is implemented on the receiving UC system, the translation engine 1801 translates the CL into the protocol that is supported by the receiving UC system. In the case where two UC systems are running the same UC application, the FS 1800 may simply route a message sent from one UC system to the other without performing translations. The translation engine 1801 may also perform direct translation of an originating message from the originating UC system into a message with the protocol that is supported by the receiving UC system without first translating the message into a CL.
According to one embodiment, the FS 1800 detects and intercepts an originating message from UC system 1812 on behalf of the FS moderator 1802. The translation engine 1801 translates the originating message to generate a mediated invitation message from the originating message. The FS 1800 transmits the mediated invitation message to the chat room 1821. The FS 1800 receives an invitation message from the chat room 1821 and translates the invitation message to invite user 1811 into a multi-user chat (MUC). According to one embodiment, UC system 1812 may include MUC functionality that can support the chat room functionality of UC system 1822 since the MUC functionality provides a user interface that is similar to the user interface provided by the chat room capability of UC system 1822. UC system 1812 provides the user 1811 with a MUC window via a user interface provided by the ad-hoc MUC capability of UC system 1812. After the user 1811 is provided with a user interface to access the chat room 1821 hosted by UC system 1822, UC system 1812 receives an indication from user 1811 accessing a feature of the chat room 1821, such as browsing the participant list and the chat room history, participating in a chat room discussion. UC system 1812 generates an originating message based on the indication. The translation engine 1801 receives the originating message and provides a translation, if any, to the originating message before transmitting the translated message to UC system 1822.
According to one embodiment, the FS 1800 determines whether to intercept an originating message from UC system 1812 based on configuration values that include an address of the FS moderator 1802 and a destination UC type of UC system 1822 of the chat room 1821. The FS 1800 can monitor the status of the FS moderator 1802 in the chat room 1821 to ensure that the FS moderator 1802 is designated as an owner of the chat room 1821, i.e., the FS moderator 1802 has owner privileges, and is displayed as a participant of the chat room 1821. In one embodiment, the FS 1800 queries the attributes of the chat room 1821 to determine that the FS moderator 1802 has a desired privilege for the chat room 1821.
A system and method for federating chat rooms across disparate unified communications systems is disclosed. Although various embodiments have been described with respect to specific examples and subsystems, it will be apparent to those of ordinary skill in the art that the concepts disclosed herein are not limited to these specific examples or subsystems but extends to other embodiments as well. Included within the scope of these concepts are all of these other embodiments as specified in the claims that follow.
The present application is a continuation-in-part of U.S. patent application Ser. No. 13/077,710 titled “Hub Based Clearing House for Interoperability of Distinct Unified Communications Systems”, filed on Mar. 31, 2011, which is fully incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 13077710 | Mar 2011 | US |
Child | 14050303 | US |