EP3055953A1 - Federating chat rooms across disparate unified communications systems - Google Patents
Federating chat rooms across disparate unified communications systemsInfo
- Publication number
- EP3055953A1 EP3055953A1 EP14852192.5A EP14852192A EP3055953A1 EP 3055953 A1 EP3055953 A1 EP 3055953A1 EP 14852192 A EP14852192 A EP 14852192A EP 3055953 A1 EP3055953 A1 EP 3055953A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- chat room
- message
- unified communications
- communications system
- domain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000004891 communication Methods 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000013519 translation Methods 0.000 claims abstract description 30
- 230000008569 process Effects 0.000 description 26
- 230000014616 translation Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 18
- 230000004044 response Effects 0.000 description 12
- 230000001404 mediated effect Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000015654 memory Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000009434 installation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- KKIMDKMETPPURN-UHFFFAOYSA-N 1-(3-(trifluoromethyl)phenyl)piperazine Chemical compound FC(F)(F)C1=CC=CC(N2CCNCC2)=C1 KKIMDKMETPPURN-UHFFFAOYSA-N 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1822—Conducting the conference, e.g. admission, detection, selection or grouping of participants, correlating users to one or more conference sessions, prioritising transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/046—Interoperability with other network applications or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/56—Unified messaging, e.g. interactions between e-mail, instant messaging or converged IP messaging [CPM]
Definitions
- 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.
- UC unified communications
- 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.
- IM instant messaging
- telephony telephony
- video conferencing video conferencing
- non-real-time services such as email, SMS, fax, and voicemail.
- 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.
- FIG. 1 illustrates a block diagram of a prior art system for interconnecting three UC systems using custom and federation links
- FIG. 2 illustrates a block diagram of a prior art system for interconnecting four UC systems using custom and federation links
- FIG. 3 illustrates a block diagram of an exemplary highly scalable system for interconnecting UC systems, according to one embodiment
- FIG. 4 illustrates a block diagram of an exemplary hub that is implemented as cloud services, according to one embodiment
- FIG. 5 illustrates a block diagram of an exemplary hub that is connected to each of three realms, according to one embodiment
- FIG. 6 illustrates a flow chart of an exemplary process for processing messages received from a UC system, according to one embodiment
- FIG. 7 illustrates a block diagram of an exemplary hub system for processing real-time media traffic such as audio and video traffic, according to one embodiment
- FIG. 8 illustrates a flow chart of an exemplary process for processing a media call by a federation server, according to one embodiment
- FIG. 9 illustrates a flow chart of an exemplary process employed by a relay server for adding candidates, according to one embodiment
- FIG. 10 illustrates a flow chart of an exemplary process employed by an ICE reactor that is part of a relay server for establishing ICE connectivity through STUN negotiation, according to one embodiment
- FIG. 11 illustrates a flow chart of an exemplary process employed by an ICE reactor for forwarding data packets once ICE connectivity has been established, according to one embodiment
- FIG. 12 illustrates a flow chart of an exemplary process employed by a federation server for terminating a media call, according to one embodiment
- FIG. 13 illustrates a flow chart of an exemplary process for transferring a file from an OCS user to a GTalk user, according to one embodiment
- FIG. 14 illustrates a flow chart of an exemplary process for transferring a file from an GTalk user to an OCS user, according to one embodiment
- FIG. 15 illustrates a block diagram that traces an exemplary transmission of a message through a hub and domain gateways, according to one embodiment.
- FIG. 16 illustrates a block diagram that traces an exemplary transmission of a message through a hub using SRV record publication, according to one embodiment.
- FIG. 17 illustrates an exemplary computer architecture that may be used for the present system, according to one embodiment.
- FIG. 18 illustrates a block diagram of an exemplary scalable system for providing a federated chat room , according to one embodiment.
- FIG. 19 illustrates a flow chart of an exemplary process for providing a federated chat room , according to one embodiment.
- FIG. 1 illustrates a block diagram of a prior art system for interconnecting three UC systems using custom and federation links.
- UC system 111 is running the UC application denoted as "UCx" and UC systems 121 and 131 are running a different UC application denoted as "UCy”.
- Each UC system supports a different domain and is accessible (e.g., instant messaging, emailing, video conferencing, etc.) by its respective set of users in the domain.
- users 112i-112j in domain A 110 can communicate with one another through UC system 111.
- users 122 122 j in domain B 120 and users 132 132 k in domain C 130 can access UC systems 121 and 131 , respectively, to communicate with other users in the same domain.
- client user client device
- federation link 101 provides a communications link between UC system 120 and 130.
- a federation link allows users in different domains to communicate with each other so long as the associated UC systems are running the same UC application.
- UC systems 121 and 131 both run UC application "UCy”
- federation link 101 allows users 122r122 j to communicate with users 132r 132 k . Whether a federation link is available depends on the particular UC system.
- Custom link 102 includes a translator that translates messages from UC system type "UCx" to UC system type "UCy" and specifically between domains 110 and 120. Because building a custom link is generally expensive in both time and resources, it is not an optimal solution.
- custom links are not scalable. As FIG. 1 illustrates, even after a custom link 102 is implemented between domain A 110 and domain B 120, a second custom link 103 would need to be implemented in order for users in domain A 110 to communicate with users in domain C 130. Thus, implementing the infrastructure of FIG. 1 requires three unique communications links.
- FIG. 2 illustrates a block diagram of a prior art system for interconnecting four UC systems using custom and federation links.
- the scaling problem escalates when four UC systems in four different domains are interconnected using custom and federation links.
- Federation link 201 between UC systems 211 and 221 provides a communications support between users in domain A 210 and users in domain B 220.
- Federation link 201 is available as both associated UC systems 211 and 221 run the same UC application denoted by "UCx". Because UC systems 231 and 241 each run different UC applications (denoted by "UCy” and "UCz” respectively), the infrastructure of FIG.
- FIG. 3 illustrates a block diagram of an exemplary highly scalable system for interconnecting UC systems, according to one embodiment. While FIG. 3 only illustrates interconnecting four UC systems 311, 321 , 331 , and 341 , the present system can interconnect and support any number of UC systems.
- the exemplary system of FIG. 3 employs a hub 350 that includes four connectors 351-354.
- each connector communicates with one of the four UC systems 311 , 321 , 331 , and 341 , each connector can support any number of UC systems as long as the connector and the UC systems utilize or speak the same protocol ⁇ e.g., SIP, XMPP, or any other) and are within reach of one another in terms of network connectivity.
- SIP Session Initiation Protocol
- XMPP XMPP Protocol
- a realm is the network region that is reachable from a network interface (to which the connector is bound).
- the hub 350 acts as a central station for translating incoming data from any supported UC system into a common language (CL) 355.
- CL common language
- 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.
- 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.
- the hub may route a message sent from one UC system to the other without performing translations. As FIG. 3 further illustrates, the hub 350 may, for instance, route a message sent by UC system 311 to UC system 321 without performing translations, as indicated by the perforated line.
- 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.
- each UC system thinks that it is
- FIG. 3 One advantage of the exemplary system of FIG. 3 is its scalability. For instance, consider adding to the infrastructure of FIG. 3 an additional UC system that is implemented on a new UC application and is associated with a new domain. The addition may simply be implemented by adding the functionality (a one-time job) for translating between the language used by the new UC application and the common language.
- an allow list may also need to be updated (also a one-time job) to include any existing or added domain that does not publish an SRV record (discussed more later).
- the new UC system would be able to communicate with any of the UC systems already connected to the hub and vice versa.
- adding a new UC system to the infrastructure of FIG. 2 would require building four additional custom links (one for each of the pre-existing UC systems).
- the hub or clearing house system illustrated in FIG. 3 also provides for the ability to implement additional features.
- the present hub may provide for preservation of high fidelity communication.
- This disclosure contemplates employing a common language (CL) format that provides for full translation from one UC language format to another without unnecessary or unavoidable loss of information. This may be accomplished by translating the UC formatted message into a CL formatted message such that no data is discarded until the CL formatted message is translated into the UC format that is recognized by the receiving UC system.
- CL common language
- the CL is a superset language that supports features (e.g., fields) of all supported UC language formats.
- the CL may contain some or all the fields of a supported UC language format.
- 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.
- 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.
- a UC system in one domain When a UC system in one domain
- 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.
- FIG. 4 illustrates a block diagram of an exemplary hub that is implemented as cloud services, according to one embodiment. That is, a hub does not necessarily run on a particular server installation or from any particular location.
- a hub may be broken into four main components: an administration module (AM), a database (DB), a federation server (FS), and a load balancer (LB). While a hub may be implemented using a single computer, FIG. 4 illustrates an exemplary embodiment in which the hub is implemented using several computers, each computer carrying out a specific function, and networked together to create a single installation.
- a hub may be broken into four main components: an administration module (AM), a database (DB), a federation server (FS), and a load balancer (LB).
- FIG. 4 illustrates an exemplary embodiment in which the hub is implemented using several computers, each computer carrying out a specific function, and networked together to create a single installation.
- 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.
- FS's federation servers
- Each of the FS's may be implemented on separate computers 404 1-n .
- FIG. 4 further illustrates an optional load balancer 403 that manages and directs communications traffic from UC systems to the FS's to make efficient use of the available system resources.
- Some of the configurable parameters and desired settings of the AM are as follows: 1. Administrator Settings a. In the administration settings the hub administrator can configure the hub to allow for public federation (e.g., allowing the hub to connect to public instant messenger systems such as Google Chat, AIM, and Yahoo Messenger).
- public federation e.g., allowing the hub to connect to public instant messenger systems such as Google Chat, AIM, and Yahoo Messenger.
- a default setting allows federation even if no policy applies to a message. This can be reversed by the administrator so that federation is allowed only if a policy applies to a message.
- a physical network card in the FS machine may be configured to support one or more connectors, one connector per protocol.
- a connector is created by configuring a physical network card to use a supported protocol, such as SIP or XMPP or both, and is described in further detail below.
- Private and public keys may be configured within the hub so that the FS can
- the AM allows private keys to be created for the hub by creating a self-signed key and then creating a certificate signing request which is sent to a certification authority (CA) such as Verisign or Entrust.
- CA certification authority
- the reply to the request is imported back into the hub, at which point, the hub can send its public certificate to all the connected UC systems.
- the AM acquires public certificates for all domains it would communicate with.
- the AM fetches the certificate for a domain present in the data store provided the hub is able to communicate over TLS with this domain.
- the AM allows administrators to create, edit, and delete servers after the server has been physically built with the proper hardware.
- the proper settings for creating a federation server depend on the number of network cards installed on the server.
- Each network card may be configured to use each type of connector that is used within the realm that it is associated or may serve as a spare or may be used for other communication purposes ⁇ e.g., to DB or to the AM).
- a connector typically supports a single UC protocol ⁇ e.g., SIP or XMPP).
- a connector may have multiple transports configured for its UC protocol ⁇ e.g., a SIP connector configured to support SIP over TLS and SIP over TCP and an XMPP connector configured to support XMPP over TCP and XMPP over TLS).
- a SIP connector configured to support SIP over TLS and SIP over TCP
- an XMPP connector configured to support XMPP over TCP and XMPP over TLS
- the administrator must also configure private keys and corresponding public keys and certificates so the AM can communicate internally with each FS in the installation securely.
- the AM and each FS communicate over TLS which requires that the AM and each FS have a private key and that the corresponding certificates (public keys) are available to the other side. This enables the AM and each FS to communicate internally over TLS.
- i. Domain name e.g., UC4.acme.com
- Each policy has a name and action flags (e.g., allow, deny). There may be six types of messages that flow thru the hub: buddy invite, presence, chat, audio call, video call, and file transfer.
- the criteria for the policy can be specified in a structured fashion using lists and attributes of addresses involved in the address,
- Buddy list invites can be allowed or denied.
- a buddy list invite (or SUBSCRIBE as it is called in SIP/XMPP) is sent from user A to user B via the hub when user A adds user B to his contact (buddy) list)
- Presence can be allowed or denied
- Policy lists System administrators create lists in the database which can be referenced in the policy rules. Each list may be used by the policy rules described above. The following are the types of lists that can be created by the administrators:
- policies are specified in each policy. These criteria determine when a policy is applied to a message (specifically the source and destination addresses) being processed. Up to five criteria can be specified and each criterion applies to source, destination, both or either address in the message. The operation specified on the address(es) may be one of: is- internal, is-external, is-public, is-present-in-list or the negation of one of them. 7. Directory (For Microsoft Active Directory Functionality)
- Administrator can populate users and groups in the data store by having the hub connect to an active directory and download the users and groups, which eliminates duplication of data already present. Once these users and groups are downloaded, the
- the AM configures the hub by creating and updating a data store in a database (DB) implemented on computer 402.
- DB database
- 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.
- 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
- the DB may be implemented as a relational data base.
- FIG. 4 illustrates that each of the FS's may be implemented on separate computers 404 1-n .
- the computers 404 1-n are substantially identical to one another regarding their physical hardware configurations.
- Each FS computer typically has three network cards installed.
- FIG. 5 illustrates a block diagram of an exemplary hub that is connected to each of three realms, according to one embodiment.
- Each of the computers 501-503 has three network cards (C1 , C2, and C3) installed.
- C1 , C2, and C3 installed in order for each FS to provide access to each of the three realms.
- a realm is a network region or network segment that is reachable through a particular network card. For instance, in an enterprise network there is often an internal network (e.g., intranet) and an external network (e.g., Internet).
- a computer sitting in the demilitarized zone (DMZ) of the enterprise may need a network card to access the intranet ⁇ e.g., realm 1 ) and another network card to access the Internet ⁇ e.g., realm 2). Any number of realms may exist.
- a realm is a private network that is accessible through a private link (e.g., remote branch office).
- 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.
- FIG. 6 illustrates a flow chart of an exemplary process for processing messages received from a UC system, according to one embodiment.
- the operations begin with the connectors of the FS continuously listening (at 601 ) for an on-the-wire message, such as a SIP or XMPP message. If a message is detected, a protocol handler is called (at 602) to translate the detected on-the-wire message into an internal memory representation of the message (IMRM). After translating into an IMRM, the hub message manager (HMM) uses a policy enforcement engine to check the IMRM against policies set up by the administrators (at 603) and decides whether the IMRM should be allowed.
- an on-the-wire message such as a SIP or XMPP message.
- the HMM extracts the destination and source addresses as well as the destination and source UC formats from the IMRM (at 605). Using the extracted addresses, the HMM uses a routing engine to determine the destination route for the IMRM (at 606). The routing engine also adds necessary information to the IMRM to ensure the message is ready for the destination domain.
- the added information may include routing headers that allow SIP and XMPP outgoing connectors to route the message to the appropriate UC systems.
- the HMM processes the IMRM using a translation engine (at 607).
- the translation engine first checks the data store to see if direct translation is available. If so, direct translation is used. If not, the translation engine translates the IMRM into the CL format and then translates the CL formatted message into the destination UC format.
- the translation engine uses the formats that were extracted at 605. After translation into the destination UC format, the message is translated into an on-the-wire format and then sent out to the destination UC system via an outgoing connector (at 608).
- the outgoing connector is determined by the routing engine at 606 and it uses the realm and the UC protocol of the destination UC system. Thus, connector is used for both sending and receiving messages.
- FIG. 7 illustrates a block diagram of an exemplary hub system for processing real-time media traffic such as audio and video traffic, according to one embodiment.
- clients 711 and 721 communicate with one another through their respective UC systems 712 and 722 and hub 700.
- Hub 700 includes a federation server (FS) 734, a relay server (RS) 733, and a transcoder 735.
- FS 734 processes messages received from UC systems (e.g., UCx 712 and UCy 722), such as illustrated in FIG. 6,
- RS 733 processes media traffic such as audio and video traffic between clients 711 and 721.
- FS 734 determines that a media call initiate or INVITE message has been received, FS 734 sends control signals to RS 733 to engage and control certain operations of RS 733. These control signals include start-call, end-call, and caller/callee information such as media endpoint candidates and media codecs that are available. If RS 734 determines that clients 711 and 721 have at least one common media codec that is available to each client, RS 734 relays the media traffic between clients 711 and 721. The media traffic originating from client 711 would flow as follows:
- media traffic originating from client 721 would flow as follows:
- client 721 ⁇ RS 733— ⁇ client 711
- 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:
- media traffic originating from client 721 would flow as follows:
- 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.
- media endpoints e.g., RTP and RTCP ports
- load balancers are not shown in FIG. 7, this disclosure contemplates that a load balancer may be used as an intermediary component of hub 700 for managing and directing communications traffic between UC systems 712 and 722 and FS 734. This disclosure also contemplates employing a load balancer as an intermediary component of hub 700 for managing and directing media traffic between clients 712 and 722 and RS 733. This disclosure also contemplates employing a load balancer as an intermediary component of hub 700 for managing and directing control signals traffic between transcoder 735 and RS 733. This disclosure also contemplates employing a load balancer as an intermediary component of hub 700 for managing and directing media traffic to multiple relay server nodes acting as a single logical relay server RS 733. The use of load balancers allows hub 700 to make efficient use of the available system resources and to be highly scalable.
- FIG. 8 illustrates a flow chart of an exemplary process for processing a media call by a federation server, according to one embodiment.
- the process begins (at 801) when the federation server (FS) receives a media call initiate or INVITE message from a calling client ("caller").
- the initiate message may or may not include the caller candidates.
- Caller candidates are IP addresses and ports at which the caller can receive media traffic. If the caller candidates are not included, they may be sent in a separate message (not shown in FIG. 8).
- the FS creates a call-state object and also parses the caller candidate information (at 802). If the caller and the intended client for receiving the call (“callee") employ different UC systems, the message may need to be translated to a common language (CL) format.
- a call-state object is maintained for each call started and is deleted when the call is hung up.
- the FS sends all caller candidates to the RS via an add-candidate message (at 803). (See FIG. 9).
- the FS waits for the RS to return RS candidates (at 804).
- RS candidates are IP addresses and ports at which the RS can receive data from clients. Because the RS receives data from both a caller and a callee, there are separate RS candidates for the caller and callee. After the FS receives the RS candidates from RS, the FS separates the RS candidates for the caller and the callee and saves them in the call-state object (at 805).
- the FS collects the RS candidates for callee to include in an initiate message that is sent to the callee (at 806) through the callee's UC system.
- the message may need to be translated from a CL format to the language format that is recognized by the callee's UC system prior to being sent.
- a response or acknowledgement message is sent back by the callee's UC system after receiving the message (at 807).
- the callee sends to the caller (e.g., callee— ⁇ callee UC— ⁇ FS— ⁇ caller UC— ⁇ caller) a ringing message (at 808).
- the caller and the callee employ different UC systems, the message may need to be translated to an appropriate format as described earlier in this disclosure.
- 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 FIG. 10.
- 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.
- 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).
- FIG. 9 illustrates a flow chart of an exemplary process employed by a relay server for adding candidates, according to one embodiment.
- the process begins when relay server (RS) receives an add-candidate message from the federation server (FS) for a call component (at 901 ).
- a call has multiple components such as audio-rtp, audio-rtcp, video-rtp and video-rtcp. Each component carries a certain aspect of media traffic. For instance, audio-rtp carries audio packets and video-rtp carries video packets. Rtcp is for control of rtp.
- the process applies to all components of a call.
- An add-candidate message is a request for the RS to return (to the FS) RS candidates for a caller and a cailee and may include the following: call-id, caller address (e.g., IP address and port per candidate), cailee address, and caller UC system (e.g., OCS or GTalk).
- caller address e.g., IP address and port per candidate
- cailee address e.g., OCS or GTalk
- 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.
- 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).
- 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 cailee (at 906) and sends them to the FS (at 907).
- the RS sends STUN binding requests through RS caller candidates and RS cailee candidates to caller confusedes and cailee candidates, respectively (at 908).
- 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 cailee. 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 cailee (at 912). For instance, if port A is used by the caller and port B is used by the cailee, the RS forwards packets from A to B and vice versa.
- 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.
- FIG. 10 illustrates a flow chart of an exemplary process employed by an ICE reactor for establishing ICE connectivity through STUN negotiation, according to one embodiment.
- An ICE reactor is set up for each local port that is allocated for a specific call.
- the ICE reactor is set up for each local port that is allocated for a specific call.
- reactor waits for a STUN binding request/response ("STUN message") (at 1001).
- STUN message STUN binding request/response
- the ICE reactor or rather RS
- the reactor determines whether the STUN message is valid (at 1003). The determination may be made based on industry standards, such as described in RFC5389 published by the Internet Engineering Task Force (IETF). If the STUN message is not valid, the reactor sends an error response back to the originator of the STUN message if the message is a request or does nothing if the message is a response (at 1004).
- IETF Internet Engineering Task Force
- the reactor 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.
- 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.
- 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.
- FIG. 11 illustrates a flow chart of an exemplary process employed by an ICE reactor for forwarding data packets once ICE connectivity has been established, according to one embodiment.
- the ICE reactor (“reactor") waits for data (e.g., rtp or rtcp) packets (at 1101 ).
- the ICE reactor is set up for each local port that is configured for a specific call. Once a data packet arrives at the port, the ICE reactor (or rather RS) knows which call it is for and based on that information, the ICE reactor finds the peer candidate (PC) (at 1102). Next, the reactor determines whether the data packet is valid (at 1103).
- PC peer candidate
- the determination may be made based on industry standards regarding whether the packet is a valid rtp/rtcp packet. If the data packet is determined to be invalid, the data packet is dropped (at 1104). If the data packet is determined to be valid, the reactor then determines whether a transcode channel exists (at 1105). If a transcode channel exists, the reactor locates the transcoding peer (TP) and forwards the data packet to the peer TP (at 1106). If a transcode channel doesn't exist, the reactor forwards the data packet to the PC (at 1107).
- TP transcoding peer
- FIG. 12 illustrates a flow chart of an exemplary process employed by a federation server for terminating a media call, according to one embodiment.
- the process begins when the federation server (FS) receives a media call terminate message from a caller or a callee ("terminator") (at 1201 ). In response, the FS sends a hang-up message to the relay server (RS) (at 1202). Next, the FS sends the terminate message to the "terminatee" (e.g., the other party to the call who did not originate the terminate message) (at 1203).
- the "terminatee" e.g., the other party to the call who did not originate the terminate message
- the message may need to be translated appropriately as described earlier in this disclosure (e.g., terminator UC format commor a*guage terminate format) prior to being sent.
- the terminatee sends an acknowledgement message back to the terminator through the FS (at 1204). Again, appropriate translation of the message by the FS may be necessary.
- the terminator finishes the call tear down sequence and the call is terminated (at 1205).
- FIG. 13 illustrates a flow chart of an exemplary process for transferring a file from an OCS user to a GTalk user, according to one embodiment.
- File transfer is handled by a hub and a file share server (FSS) as follows.
- OCS SU OCS sending user
- a request is sent to the hub (at 1301) and processed by a FS as illustrated in FIG. 6.
- the hub relays the request to the receiving GTalk user (GTalk RU).
- GTalk RU GTalk user
- an acceptance message is sent back through the hub to the OCS SU (at 1302).
- the acceptance message is again processed by a FS as illustrated in FIG. 6.
- TCP is the common protocol over which UC specific protocols such as TFTP and HTTP are implemented.
- 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).
- the GTalk RU sends to the FSS an HTTP GET to request the file (at 1310).
- 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).
- FIG. 14 illustrates a flow chart of an exemplary process for transferring a file from an GTalk user to an OCS user, according to one embodiment.
- File transfer is handled by a hub and a file share server (FSS) as follows.
- GTalk SU GTalk sending user
- a request is sent to the hub (at 1401) and processed by a FS as illustrated in FIG. 6.
- the hub relays the request to the receiving OCS user (OCS RU).
- OCS RU OCS user
- OCS RU OCS user
- an acceptance message is sent back through the hub to the GTalk SU (at 1402).
- the acceptance message is again processed by a FS as illustrated in FIG. 6.
- TCP is the common protocol over which UC specific protocols such as TFTP and HTTP are implemented.
- the FSS sends to the GTalk SU an HTTP GET to request the file (at 1410).
- the GTalk SU sends an HTTP Response (at 1411).
- 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).
- 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).
- a domain gateway is typically implemented.
- the domain gateway is a component that allows the UC system to communicate with the hub.
- both the domain gateway and the UC system need to be configured properly.
- FIG. 15 illustrates a block diagram that traces an exemplary transmission of a message through a hub and domain gateways, according to one embodiment.
- user 1511 wants to send a message to user 1521.
- User 1511 first sends the message to the local UC system 1512.
- the message is then forwarded to domain gateway 1513 (e.g., Access Edge Server (AES), Same Time Gateway, etc) which maintains an allow list 1540 of all the domains the local domain administrator 1514 has allowed its users to have access to. This way, local domain administrators have control over which domains its users can communicate with.
- the allow list can be used allow or disallow communication with federated domains. Another useful function of the allow list is to provide UC address information for federated domains.
- AES Access Edge Server
- the allow list 1540 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.
- the FQDN field in the entry for domain "x.com” in allow list 1550 also needs to include the address of the hub 1530 ("hub_addr"). As such, traffic intended for the domain "x.com” (1510) is also routed through the hub 1530.
- FIG. 16 illustrates a block diagram that traces an exemplary transmission of a message through a hub using SRV record publication, according to one embodiment.
- user 1611 wants to send a message to user 1621.
- User 1611 first sends the message to the local UC system 1612.
- domain gateway 1613 Next, the message is sent to domain gateway 1613 and is intended to be transmitted to domain "y.com" (1620).
- the local administrators 1614 and 1624 have published the SRV records for domains "x.com” (1610) and “y.com” (1620), respectively, with the FQDN fields set as "hub_addr”, as shown in SRV record publication 1640, all communications traffic that is intended for domains "x.com” and “y.com” 1620 will be routed to the hub 1630.
- both domains (“x.com” and “y.com”) need to be added to the hub 1630 through the AM 1631 .
- the routed traffic includes the message that was sent by 1611. After being processed by the hub 1630, the message is forwarded to the domain gateway 1623, then to the UC system 1622, and finally to user 1621.
- 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.
- 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.
- 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").
- 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.
- 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.
- FIG. 17 illustrates an exemplary computer architecture that may be used for the present system, according to one embodiment.
- the exemplary computer architecture may be used for implementing one or more components described in the present disclosure including, but not limited to, a hub system, a load balancer, a database, an administrator module, a federation server, a user client, a relay server, a transcoder, a file sharing server, and a UC system.
- One embodiment of architecture 1700 comprises a system bus 1720 for communicating information, and a processor 1710 coupled to bus 1720 for processing information.
- Architecture 1700 further comprises a random access memory (RAM) or other dynamic storage device 1725
- main memory (referred to herein as main memory), coupled to bus 1720 for storing information and instructions to be executed by processor 1710.
- Main memory 1725 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 1710.
- Architecture 1700 may also include a read only memory (ROM) and/or other static storage device 1726 coupled to bus 1720 for storing static information and instructions used by processor 1710.
- ROM read only memory
- 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.
- 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.
- 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 OPENFIRETM (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
- 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.
- 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.
- MUC multi-user chat
- 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).
- OCS Microsoft Office Communications Server
- 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.
- MUC multi-user chat
- 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.
- 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.
- FIG. 18 illustrates a block diagram of an exemplary scalable system server for providing a federated chat room, according to one embodiment.
- a federation server (FS) 1800 acts as a central station for providing communication between two UC systems 1812 and 1822.
- UC systems 1812 and 1822 are running UC applications as denoted as "UCx" and "UCy” respectively. While FIG. 18 only illustrates interconnecting two UC systems 1812 and 1822, the present system can interconnect and support any number of UC systems.
- a user 1811 in domain A 1810 accesses UC system 1812 to communicate with other users (e.g., user 1813) in the same domain.
- user 1823 in domain B 1820 accesses UC system 1822 to communicate with other users (e.g., user 1824) in the same domain.
- Users 1823 and 1824 may further access and participate in a chat room 1821 hosted on domain B 1820 that is supported by a chat room server.
- Users 1823 and 1824 access various features of the chat room 1821 , including, but not limited to, browsing a chat room history and a participant list, and participating in a chat room discussion.
- 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.
- 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.
- UC system 1812 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.
- 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.
- the address of the FS moderator 1802 is supermod@foo.com, where the user name is supermod and the federated domain is foo.com.
- UC system 1822 may be configured to provide the FS moderator 1802 with a desired privilege.
- 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.
- UC system 1822 may be configured based on OPENFIRETM (an instant messaging and chat server that implements the XMPP protocol) admin console.
- 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.
- identity e.g., XMPP conference
- 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.
- the translation engine 1801 translates incoming messages from a supported UC system into a common language (CL).
- CL common language
- the translation engine 1801 translates the CL into the protocol that is supported by the receiving UC system.
- 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.
- 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).
- 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.
- 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.
- 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. [0098] FIG.
- the present system intercepts an incoming message from a user in domain A to enter a chat room hosted by domain B at 1901.
- the incoming message is generated by a UC system that supports domain A when the user opens a chat window with a chat address of the chat room , or when the user further provides a command (e.g., join) in a chat window of the chat room hosted on domain B.
- the present system determines if domain A and domain B are based on a common protocol at 1902. If domain A and domain B are not based on a common protocol, the present system translates the incoming message at 1903.
- the present system generates a mediated invitation message from the translated message at 1904.
- the mediated invitation message is a request to the chat room to invite the user in domain A into the chat room.
- the present system transmits the mediated invitation message to the chat room that is hosted on domain B at 1905.
- the present system receives an invitation message from the chat room at 1906.
- the present system translates the invitation message at 1907.
- the present system provides an invitation based on the translated invitation message to the user at 1911. If domain A and domain B are based on a common protocol, the present system generates a mediated invitation message from the incoming message at 1908.
- the present system transmits the mediated invitation message to the chat room hosted by domain B at 1909.
- the present system receives an invitation message from the chat room at 1910 and provides an invitation based on the invitation message to the user at 1911 to enter the chat room.
- the user in domain A accesses a UC system that supports MUC.
- the present system provides the user with a MUC window via a user interface where the user can access various features of the chat room, such as browsing an active participant list and chat room history.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/050,303 US20140040404A1 (en) | 2011-03-31 | 2013-10-09 | System and method for federating chat rooms across disparate unified communications systems |
PCT/US2014/059944 WO2015054522A1 (en) | 2013-10-09 | 2014-10-09 | Federating chat rooms across disparate unified communications systems |
Publications (2)
Publication Number | Publication Date |
---|---|
EP3055953A1 true EP3055953A1 (en) | 2016-08-17 |
EP3055953A4 EP3055953A4 (en) | 2017-06-07 |
Family
ID=52813646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP14852192.5A Withdrawn EP3055953A4 (en) | 2013-10-09 | 2014-10-09 | Federating chat rooms across disparate unified communications systems |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP3055953A4 (en) |
WO (1) | WO2015054522A1 (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2671393B1 (en) | 2011-02-04 | 2020-04-08 | Nextplane, Inc. | Method and system for federation of proxy-based and proxy-free communications systems |
US9203799B2 (en) | 2011-03-31 | 2015-12-01 | NextPlane, Inc. | Method and system for advanced alias domain routing |
US9716619B2 (en) | 2011-03-31 | 2017-07-25 | NextPlane, Inc. | System and method of processing media traffic for a hub-based system federating disparate unified communications systems |
US9705840B2 (en) | 2013-06-03 | 2017-07-11 | NextPlane, Inc. | Automation platform for hub-based system federating disparate unified communications systems |
US9819636B2 (en) | 2013-06-10 | 2017-11-14 | NextPlane, Inc. | User directory system for a hub-based system federating disparate unified communications systems |
US20160330164A1 (en) * | 2015-05-06 | 2016-11-10 | NextPlane, Inc. | System and Method of Federating a Cloud-Based Communications Service with a Unified Communications System |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272662B2 (en) * | 2000-11-30 | 2007-09-18 | Nms Communications Corporation | Systems and methods for routing messages to communications devices over a communications network |
US7016978B2 (en) * | 2002-04-29 | 2006-03-21 | Bellsouth Intellectual Property Corporation | Instant messaging architecture and system for interoperability and presence management |
US7240214B2 (en) * | 2002-10-25 | 2007-07-03 | Yahoo!, Inc. | Centrally controllable instant messaging system |
US8300790B2 (en) * | 2010-12-27 | 2012-10-30 | Avaya Inc. | Method and system for automatic conference call session migration |
US9077726B2 (en) * | 2011-03-31 | 2015-07-07 | NextPlane, Inc. | Hub based clearing house for interoperability of distinct unified communication systems |
EP2587721B1 (en) * | 2011-10-31 | 2016-06-08 | BlackBerry Limited | Moderation control method for participants in a heterogeneous conference call |
-
2014
- 2014-10-09 WO PCT/US2014/059944 patent/WO2015054522A1/en active Application Filing
- 2014-10-09 EP EP14852192.5A patent/EP3055953A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP3055953A4 (en) | 2017-06-07 |
WO2015054522A1 (en) | 2015-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10454762B2 (en) | System and method of processing media traffic for a hub-based system federating disparate unified communications systems | |
US20140040404A1 (en) | System and method for federating chat rooms across disparate unified communications systems | |
US9992152B2 (en) | Hub based clearing house for interoperability of distinct unified communications systems | |
US9807054B2 (en) | Method and system for advanced alias domain routing | |
US9705840B2 (en) | Automation platform for hub-based system federating disparate unified communications systems | |
US20160330164A1 (en) | System and Method of Federating a Cloud-Based Communications Service with a Unified Communications System | |
US9497181B2 (en) | System and method for concurrent sessions in a peer-to-peer hybrid communications network | |
US20070100944A1 (en) | Uniform resource identifier decoration to enable connectivity for instant messaging providers serving non-authoritative namespaces | |
JP5735016B2 (en) | System and method for peer-to-peer hybrid communication | |
US7623476B2 (en) | System and method for conferencing in a peer-to-peer hybrid communications network | |
US20070165597A1 (en) | System and method for deterministic routing in a peer-to-peer hybrid communications network | |
WO2015054522A1 (en) | Federating chat rooms across disparate unified communications systems | |
WO2011038639A1 (en) | Realizing method for end-to-end instant messaging, terminal and system for end-to-end instant messaging | |
US10091025B2 (en) | System and method for enabling use of a single user identifier across incompatible networks for UCC functionality | |
WO2016179538A1 (en) | System and method of processing media traffic for a hub-based system federating disparate unified communications systems | |
Cumming | Sip Market Overview |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20160509 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
DAX | Request for extension of the european patent (deleted) | ||
A4 | Supplementary search report drawn up and despatched |
Effective date: 20170510 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: H04L 12/58 20060101AFI20170503BHEP Ipc: H04L 12/18 20060101ALI20170503BHEP |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20171209 |