The invention relates generally to exchanging data and specifically, to method and system for facilitating exchange of a data between applications using a communication platform.
Everyone today is acquainted with communication platforms, such as Instant Messaging (IM) systems like Skype, MSN, Yahoo etc, or Social Networking applications, or Voice over Internet Protocol (VoIP) platforms or any such other messaging platforms. A communication platform allows a user to send instant messages, voice and video to other users of the communication platform. A communication platform framework manages presence information, presence subscription, message security, blocking, privacy, authentication, buddy lists etc. However communication platforms are, generally, closed and are only used to send their own data packets from one user to another.
For enabling communication and data sharing between any other applications of a user across computing devices, these applications need to write their own proprietary messaging framework.
Hence there is a need to utilize an existing communication platform for enabling exchange of data between two or more applications residing on one or more computing devices.
The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various embodiments and to explain various principles and advantages all in accordance with the invention.
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the invention.
Before describing in detail embodiments that are in accordance with the invention, it should be observed that the embodiments reside primarily in combinations of method steps and apparatus components related to facilitating exchange of a data between applications using a communication platform. Accordingly, the system components and method steps have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.
In this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by “comprises . . . a” does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.
It will be appreciated that embodiments of the invention described herein may be comprised of one or more conventional processors and unique stored program instructions that control the one or more processors to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of facilitating exchange of a data between applications using a communication platform described herein. The non-processor circuits may include, but are not limited to, a radio receiver, a radio transmitter, signal drivers, clock circuits, power source circuits, and user input devices. As such, these functions may be interpreted as steps of a method and system for facilitating exchange of a data between applications using a communication platform. Alternatively, some or all functions could be implemented by a state machine that has no stored program instructions, or in one or more Application Specific Integrated Circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic. Of course, a combination of the two approaches could be used. Thus, methods and means for these functions have been described herein. Further, it is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions and programs and ICs with minimal experimentation.
The present invention relates generally to a framework, whereby, a communication platform can be extended as a messaging bus for other applications of users of the communication platform, thus serving as an underlying message exchange platform between applications that had no other way of communicating with one another. The applications can be hosted on two or more separate computing devices. Those skilled in the art will realize that this sort of a message bus can be very useful for collaboration applications such as office suites, gaming and other such applications which require instances of applications of users to interact with one another. The present invention proposes a framework that can be implemented by an existing communication platform provider, such as, but not limited to, an Instant Messaging (IM) provider, or a VoIP provider, to enable application developers to use that provider's framework, infrastructure, user base, systems etc. to exchange messages between applications across users of different computing devices.
Referring now to
Moreover, first application 105 and second application 115 may be different applications or can be instances of the same application. Also, first application 105 and second application 115 may be hosted on a same computing device or different computing devices.
In accordance with the present invention, first application 105 and second application 115 can exchange data using a communication platform 125. Communication platform 125 can be any existing system that enables exchange of data, such as, but not limited to, an IM system, a VoIP system, a P2P platform. Further, although
Turning now to
In an embodiment of the present invention, first application 105 and second application 115 can send an authorization request through communication platform 125 to the first user and/or the second user. The authorization request can consist of a permission to send and receive the data through communication platform 125. Communication platform 125 can then obtain and store the authorization response received from the first user and the second user.
The authorization response can include a first authorization, a second authorization, a third authorization, a fourth authorization or a fifth authorization. The first authorization permits sending and receiving the data between first application 105 and second application 115 only, which means that if any other application of the first user and/or the second user wish to exchange data with first application 105 or second application 115, that new application may need to obtain separate authorization from the first user and/or the second user. The second authorization permits sending and receiving the data between first application 105 and a plurality of applications of the second user. The third authorization permits sending and receiving the data between first application 105 and a plurality of applications of a plurality of users. The fourth authorization permits sending and receiving the data between a plurality of applications of the first user and second application 115. The fifth authorization permits sending and receiving the data between a plurality of applications of a plurality of users and second application 115. The authorization response is stored by communication platform 125. Any of these authorizations can be temporary such that they expire within a certain time period after which the authorization needs to be re-obtained, or permanent such that the authorization never expires.
In another embodiment of the present invention, first application 105 and second application 115 can send an authorization request through communication platform 125 to the first user and/or the second user. The authorization request can consist of a permission to fetch a first user information and a second user information from the communication platform. The communication platform 125 can then obtain and store the authorization response received from the first user and/or the second user.
The first user information can include a contact information of the first user, a demographic information of the first user such as the first user's location etc, one or more first contacts belonging to the contact list of the first user, a device information of the first user, a presence information for the one or more first contacts, one or more second contacts belonging to the contact list of the one or more first contacts, and one or more applications being used by the one or more first contacts and/or the one or more second contacts. Similarly, the second user information includes a contact information of the second user, a demographic information of the second user, such as the second user's location, one or more third contacts belonging to the contact list of the second user, a device information of the second user, a presence information for the one or more third contacts, one or more fourth contacts belonging to the contact list of the one or more third contacts, and one or more applications being used by the one or more third contacts and/or the one or more fourth contacts.
The authorization response in this case can include a first specific authorization, a second specific authorization, a third specific authorization or a fourth specific authorization. The first specific authorization permits the first application to obtain one or more of the first user information and the second user information. The second specific authorization permits the second application to obtain one or more of the first user information and the second user information. The third specific authorization permits the first application to obtain a subset of the first user information and/or the second user information. The fourth specific authorization permits the second application to obtain a subset of the first user information and/or the second user information. Any of these authorizations can be temporary such that they expire within a certain time period after which the authorization needs to be re-obtained, or permanent such that the authorization never expires.
At step 205, for the authorizations described above, first application 105 and second application 115 may need to be identified. For this purpose, a unique first identifier can be assigned for first application 105 and a unique second identifier can be assigned for second application 115 by communication platform 125.
First application 105 and second application 115 may need to establish a connection with communication platform 125 for obtaining the authorization and subsequently using communication platform 125 to exchange the data and to obtain the first user information and/or the second user information. This connection can be, but is not limited to, a network socket connection, a file socket connection, an HyperText Transfer Protocol (HTTP) connection, a User Datagram Protocol (UDP) connection, and an Extensible Messaging and Presence Protocol (XMPP) connection.
To be able to establish the connection with communication platform 125, a connectivity information of one or more communication platform components of communication platform 125 can be obtained. The connectivity information can include, but is not limited to, a network address of the one or more communication platform components, a port number of the one or more communication platform components, a hostname of the one or more communication platform components, an Internet Protocol (IP) address of the one or more communication platform components, an Application Programming Interface (API) exposed by the one or more communication platform components, a Universal Resource Indicator (URI) of the one or more communication platform components, and a callback method exposed by the one or more communication platform components. The one or more communication platform components can include, but is not limited to, an IM client, an IM server, a Voice over Internet Protocol (VoIP) client, a VoIP Server, a desktop client software, a mobile client software, a server software, a Simple Traversal of UDP through NATs (Network Address Translation) (STUN) server, a Traversal Using Relay NAT (TURN) server, a relay server, a Publish-Subscribe (pubsub) service, an Extensible Messaging and Presence Protocol (XMPP) Server, an Extensible Messaging and Presence Protocol (XMPP) client, and a Peer To Peer (P2P) client.
Once first application 105 and second application 115 are authorized to exchange the data using communication platform 125, the data can be transferred to second application 115, at step 210. The first user information and/or the second user information may be needed by first application 105 and/or second application 115 to initiate the transfer of the data.
For transferring the data, communication platform 125 receives the data from first application 105 at step 215. First application 105 can send the data to communication platform 125 by making a call to an API provided by communication platform 125. The data can also be obtained by communication platform 125 over a file or socket connection established by first application 105. Alternatively, the data can be queued in a shared message queue from where communication platform 125 may dequeue the same.
It is then verified, by communication platform 125 at step 220, if the first user has authorized first application 105 to send the data to second application 115. This can be checked using the authorization response obtained earlier from the first user. If a first user authorization, granting first application 105 authorization to send the data to second application 115, does not exist, the first user may be prompted by communication platform 125 to provide the first user authorization.
The data is then transferred within communication platform 125 towards the second user, where it is similarly verified, at step 225, by communication platform 125, if the second user has authorized second application 215 to receive data from first application 105. This can be checked using the authorization response obtained earlier from the second user. If a second user authorization, granting second application 115 to receive the data from first application 105, does not exist, the second user may be prompted by communication platform 125 to provide the second user authorization. Also, if second application 115 is not present or running, the second user may be prompted to install or start second application 115.
Eventually, communication platform 125 sends the data to second application 115. Communication platform 125 can send the data to second application 115 by making a call to an API callback function provided by the second application 115. The API callback function is provided by second application 115 to communication platform 125. Alternately, the data can be sent over a file or socket connection established with second application 125. The data may also be enqueued in a shared message queue from which it can be dequeued by second application 115. In an embodiment of the present invention, the data may be encrypted by communication platform 125 while transmitting it from the first user to the second user. Those skilled in the art will realize that the encryption may be to ensure secure transmission of the data.
In an embodiment of the present invention, a broadcast node is used to broadcast the data to a plurality of applications. Thus, when first application 105 wants to transfer data to a plurality of applications of a plurality of users, for instance in case of gaming, first application 105 can send the data to the broadcast node. The broadcast node can then broadcast the data to the plurality of applications of the plurality of users through communication platform 125. The broadcast node maybe a component of communication platform 125 being installed on the first computing device of the first user or any one or more of the plurality of users, or an independent server. Communication platform 125 may verify that first application 105 is authorized to send the data, and that the plurality of applications are authorized to receive the data by the first user and the plurality of users, respectively, via communication platform 125.
Turning now to
In an embodiment of the present invention, one or more of application registration module 305, application permission module 310, application connector module 315, first message router 320 and second message router 325 may be a part of communication platform 125 or an independent device. Each of the system modules is described in detail below.
In an embodiment of the present invention, communication platform 125 can further comprise of various components including but not limited to an IM client, an IM server, a Voice over Internet Protocol (VoIP) client, a VoIP Server, a desktop client software, a mobile client software, a server software, a Simple Traversal of UDP through NATs (Network Address Translation) (STUN) server, a Traversal Using Relay NAT (TURN) server, a relay server, a Publish-Subscribe (pubsub) service, an Extensible Messaging and Presence Protocol (XMPP) Server, an Extensible Messaging and Presence Protocol (XMPP) client, and/or a Peer To Peer (P2P) client
In order to use communication platform 125 for exchanging the data, first application 105 and second application 115 register with application registration module 305. During the registration, application registration module 305 can allocate a unique first identifier to first application 105 and a unique second identifier to second application 115. First application 105 can be uniquely identified at communication platform 125 using the unique first identifier. Similarly, second application 115 can be uniquely identified at communication platform 125 using the unique second identifier.
Further, in an embodiment, application registration module 305 may be configured to provide a connectivity information of one or more communication platform components of communication platform 125 to first application 105 and second application 115. The connectivity information can be useful for connecting first application 105 and/or second application 115 to the one or more components of communication platform 125.
First application 105 and second application 115 can then request for authorization to exchange data and to obtain the first user information and/or the second user information from the first user and/or the second user via application permission module 310. For authorizing first application 105, application permission module 310 receives an authorization request from first application 105 or second application 115. The authorization request can include a permission to obtain a first user information and a second user information. Alternately, the authorization request can include a permission to send and receive the data through communication platform 125.
Application permission module 310 can, in turn, send the authorization request to the first user or the second user. Application permission module 310 can then obtain and store the authorization responses received from the first user or the second user. Authorization responses are explained in detail in conjunction with
Once first application 105 and second application 115 are authorized by application permission module 310, first application 105 and second application 115 can connect to application connector module 315. This connection may be an HTTP connection, an XMPP connection, a persistent TCP/IP connection, or a UDP connection or such other socket connection.
Upon connecting to application connector module 315, first application 105 and second application 115 can fetch one or more of the first user information and the second user information as described in conjunction with
In an embodiment of the present invention, first application 105 or second application 115 can also initiate sending data to each other or to other applications registered at application registration module 305 through communication platform 125. Application connector module 315 is configured to transfer the data from first application 105 and second application 115 to each other and to other applications, using communication platform 125. First message router 320 can receive the data from first application 105. First application 105 can send the data to first message router 320 by making a call to an API of first message router 320. The data may also be obtained over a connection or first application 105 may queue the data in a shared message queue.
First message router 320, then, identifies if the first user has authorized first application 105 to send the data to second application 115, by checking with application permission module 310. If the first user has not authorized first application 105 to send the data, application permission module 310 can prompt the first user to provide the authorization. However, if first application 105 is authorized to send the data, first message router forwards the data to second message router 325.
Second message router 325 receives the data from first message router 320 through communication platform 125. Second message router 325 then verifies if the second user has authorized second application 115 to receive the data from first application 105. If the second user has not authorized second application 115 to receive the data, application permission module 310 can prompt the second user to provide the authorization. However, if second application 115 is authorized, then second message router 325 sends the data to second application 115. Second message router 325 can send the data to second application 115 by making a call to an API function of second application 115. The data may also be sent over a connection or second message router 325 can queue the data in a shared message queue. If second application 115 is absent, application registration module 305 can prompt the second user to install or run second application 115.
In an embodiment of the present invention, application connector module 315 includes a broadcast node 330 to enable first application 105 to transfer the data to a plurality of applications through communication platform 125. If the first user authorizes first application 105 to broadcast the data to a plurality of users, broadcast node 330 receives the data from first message router 320. Broadcast node 330 then broadcasts the data to a plurality of second message routers corresponding to a plurality of users. The plurality of second message routers, then, sends the data to the plurality of applications. Second application 115 can belong to the plurality of applications and the second user can belong to the plurality of users. Each of the plurality of applications may be required to be registered with application registration module 305 and may need to have the appropriate authorizations in order to receive the broadcast of the data.
Various embodiments of the present invention allow applications to exchange data with other applications using a communication platform such as an IM system, or a VoIP system etc without requiring to build a proprietary platform for exchanging messages. Moreover, the present invention also allows for the communication platforms used by users of the applications to be different. Further, the applications exchanging messages are separate from or independent of the communication platform.
The above mentioned advantages are merely exemplary and should not be restricted to the ones specified. Those skilled in the art shall appreciate that the advantages may be several and all such advantages are within the scope of the present invention.
Number | Date | Country | Kind |
---|---|---|---|
1297/MUM/2008 | Jun 2008 | IN | national |