A system and method are presented in which a plurality of transport protocol objects (TPOs) are instantiated at an im user agent. In one embodiment, each of the plurality of TPOs is adapted to provide a translation between a first im protocol and a different im protocol.
|
1. A communication system comprising:
an instant messaging (im) user agent; and
a plurality of transport protocol objects (TPOs) instantiated or an im user agent location, each of the plurality of TPOs adapted to provide a translation between a first im protocol and a different im protocol, the im user agent adapted to transmit and receive im message using the first im protocol, each tpo being adapted to establish a connection between the im user agent and a corresponding im server, each tpo further being adapted to generate a session identifier (ID), the session ID being indicative of the established im connection.
4. In a communication system, a method comprising:
instantiating a transport protocol object (tpo) at an instant messaging (im) user agent location having an im user agent, the PTO adapted to provide a translation between a first im protocol and a second im protocol, the im user agent adapted to transmit and receive im message using the first im protocol;
establishing a connection between the tpo and a foreign server, the foreign server adapted to transmit and receive im messages using the second im protocol;
generating a session identifier (ID) at the tpo, the session ID being indicative of the established connection; and
providing a communication pathway for communicating between the im user agent and the foreign server through the instantiated tpo.
5. In a communication system, a method comprising:
instantiating a plurality of transport protocol (TPOs) at an instant messaging (im) user agent location having an im user agent, each of the plurality of TPOs adapted to provide a translation between a first im protocol and a different protocol, the im user agent adapted to transmit and receive im messages using the first im protocol;
establishing a plurality of connections between the plurality of TPOs and a plurality of im servers, each of the plurality of im servers adapted to transmit and receive im messages using one of the different im protocols;
generating a plurality of session identifiers (ID), each session ID being generated at a corresponding tpo, each session ID being indicative of the established plurality of connections; and
providing a communication pathway for communicating between the im user agent and the plurality of im servers through the plurality of instantiated TPOs.
19. A communication system comprising:
means for instantiating a plurality of transport protocol objects (TPOs) at an instant messaging (im) user agent location having an im user agent, each of the plurality of TPOs adapted to provide a translation between a first im protocol and a different im protocol, the im user agent adapted to transmit and receive im messages using the first im protocol;
means for establishing a plurality of connections between the plurality of TPOs and a plurality of im servers, each of the plurality of im servers adapted to transmit and receive im messages using one of the different im protocols;
means for generating a plurality of session identifiers (ID), each session ID being generated at a corresponding tpo, each session ID being indicative of the established plurality of connections; and
means for providing a communication pathway for communicating between the im user agent and the plurality of im servers through the plurality of instantiated TPOs.
20. A computer-readable medium comprising:
computer-readable code adapted to instruct a programmable device to instantiate a plurality of transport protocol objects (TPOs) at an instant messaging (im) user agent location having an im user agent, each of the plurality of TPOs adapted to provide a translation between a first im protocol and a different im protocol, the im user agent adapted to transmit and receive im messages using the first im protocol;
computer-readable code adapted to instruct a programmable device to establish a plurality of connections between the plurality of TPOs and a plurality of im servers, each of the plurality of im servers adapted to transmit and receive im messages using one of the different im protocols;
computer-readable code adapted to instruct a programmable device to generate a plurality of session identifiers (ID), each session ID being generated at a corresponding tpo, each session ID being indicative of the established plurality of connections; and
computer-readable code adapted to instruct a programmable device to provide a communication pathway for communicating between the im user agent and the plurality of im servers through the plurality of instantiated TPOs.
2. The system of
a message router coupled to the im user agent, the message router being adapted to transmit im messages to the im user agent using the first im protocol, the message router further being adapted to receive im messages from the im user agent using the first im protocol.
3. The system of
a session collection having a plurality of session objects, each of the plurality of session objects having information associated with each of the plurality of TPOs.
6. The method of
receiving a single login name and password;
correlating the single login name password to a plurality of login names and passwords, each of the plurality of login names and passwords associated with one of a plurality of im accounts, each of the plurality of im accounts on one of a plurality of im servers, each of the plurality of im servers adapted to transmit and receive im message using a different im protocol;
retrieving information related to each of the different im protocols; and
conveying the retrieved information and the plurality of login names and passwords to the im user agent.
7. The method of
receiving the information related to each of the different im protocols; and
instantiating a plurality of TPOs, each of the plurality of TPOs associated with each of the different im protocols.
8. The method of
receiving a plurality of login names and passwords, each of the plurality of login names and passwords associated with one of a plurality of im accounts, each of the plurality of im accounts located on one of the plurality of im servers, each of the plurality of im servers adapted to transmit and receive im messages using a different im protocol; and
establishing an im session at each of the plurality of im accounts using the received plurality of login names and passwords.
9. The method of
receiving information from each of the plurality of im servers; and
generating the session ID associated with each of the plurality of im servers in response to receiving information.
10. The method of
storing session information having the generated session ID.
11. The method of
receiving a message from the im user agent, the message received using the first im protocol;
translating the message from the first im protocol to one of the different im protocols; and
conveying the translated message to one of the plurality of im servers, the one of the plurality of im servers adapted to transmit and receive im messages using the one of the different im protocols.
12. The method of
translating an Extensible Markup Language (XML) structured message into a non-XML-structured message.
13. The method of
translating XML-structured presence information into non-XML-structured presence information.
14. The method of
translating an XML-structured text message into non-XML-structured text message.
15. The method of
receiving a message from the one of a plurality of im servers, the one of the plurality of im servers adapted to transmit and receive im messages using one of a plurality of different im protocols;
translating the message from one of the plurality of different im protocols to a first im protocol; and
conveying the translated message to the im user agent.
16. The method of
translating a non-Extensible Markup Language (XML) structured message into an XML-structured message.
17. The method of
translating non-XML-structured presence information into XML-structured presence information.
18. The method of
translating a non-XML-structured text message into an XML-structured text message.
|
This application claims the benefit of U.S. provisional patent application Ser. No. 60/411,336, filed Sep. 17, 2002, which is incorporated herein by reference in its entirety. Additionally, this application claims the benefit of U.S. provisional patent application filed on Oct. 17, 2002, having Express Mail mailing label number 924321225 US, application Ser. No. 60/419,613, filed Oct. 17, 2002, which is incorporated herein by reference in its entirety.
The present disclosure relates generally to the Internet and, more particularly, to systems and methods for providing interoperability between various Internet protocols.
In recent years, the Internet community has grown at an astounding rate. Similarly, the number of products directed to the Internet has grown concomitantly with the dramatic growth of the Internet community. Among the products directed to the Internet are email products, instant messaging (IM) products, video conferencing products, voice-over-Internet protocol (VoIP) products, and many more products that employ the Internet as the backbone for their operations.
The rapid expansion of Internet-directed products is generating an accompanying increase in the sophistication of Internet users, which is, in turn, generating a further expansion of products directed to the Internet. This positive-feedback cycle results in various vendors launching their own Internet products using various technologies that are conducive to fast capitalization of such an expanding market. Thus, while many of the products from the various vendors provide largely similar services, the discrepant technologies used by the various vendors produce problems of interoperability between the various products. For example, while vendors such as Microsoft, Yahoo, and America On-Line (AOL) provide relatively similar instant messaging (IM) services, the underlying protocols employed by the various vendors differ vastly. Thus, in order for Microsoft's IM product to communicate with Yahoo's IM product, the underlying protocol must be translated from Microsoft's protocol to Yahoo's protocol. Similarly, in order for Microsoft's IM product to communicate with AOL's IM product, another translation must occur between Microsoft's protocol and AOL's protocol. As one can see, for interoperability between protocols used by the various vendors, a translation must exist for each protocol for which there is desired interoperability.
Thus, in the past, each IM service had a translation protocol for as many other IM services to which it sought to provide interoperability. Unfortunately, since all communications with a particular service was routed from server to server for this type of approach, any failure in the path resulted in loss of all messaging with a particular service. Additionally, a failure in the server often resulted in loss of all services provided by that server. Moreover, because all messages to other services were routed through the server, the server was required to process all of the messages to all of the services, thereby resulting in greater delays in all services.
In view of this incompatibility among the various vendors, the Internet Engineering Task Force (IETF) began soliciting input from the Internet community to address the problems of incompatibility. This resulted in the adoption of several recommendations by the IETF. For example, Request for Comments (RFC) 2778 and RFC 2779 provide guidelines for presence and IM. However, apart from general features associated with IM, RFC 2778 and RFC 2779 provide very little instruction for actually implementing IM by various vendors.
This lack of instruction resulted in further study by members of the IETF, who published several memos and recommendations for Common Presence and Instant Messaging (CPIM). However, the IETF efforts only address a fraction of the problems dealing with interoperability.
Thus, a heretofore-unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.
The present disclosure provides systems and methods for providing interoperability between various Internet protocols.
Briefly described, in architecture, one embodiment of the system comprises an instant messaging (IM) user agent, and a plurality of transport protocol objects (TPOs) instantiated at an IM user agent location. In one embodiment, each of the plurality of TPOs is adapted to provide a translation between a first IM protocol and a different IM protocol. The IM user agent transmits and receives IM messages using the first IM protocol.
The present disclosure also provides methods for providing interoperability between various Internet protocols. In this regard, one embodiment of the method comprises the steps of instantiating a plurality of transport protocol objects (TPOs) at an instant messaging (IM) user agent location having an IM user agent, establishing a plurality of connections between the plurality of TPOs and a plurality of servers, and providing a communication pathway between the IM user agent and the plurality of servers through the plurality of instantiated TPOs. In one embodiment, each of the plurality of TPOs is adapted to provide a translation between a first IM protocol and a different IM protocol. An IM user agent at the IM user agent location transmits and receives IM messages using the first IM protocol, while each of the plurality of servers transmits and receives IM messages using one of the different IM protocols.
Other systems, methods, features, and advantages will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description.
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present invention. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
Reference is now made in detail to the description of the embodiments as illustrated in the drawings. While several embodiments are described in connection with these drawings, there is no intent to limit the invention to the embodiment or embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents. Additionally, while the interplay between several components are shown in process space for convenience, it will be clear to one of ordinary skill in the art that the components in the process space may correspond to objects that are created during processes at a client computer or a server computer, among others.
When a BellSouth IM user (not shown) provides user information 150a at the BellSouth IM user agent 115 (e.g., through one or more conventional input devices in response to one or more data entry screens displayed to the user), the user information 150a is transmitted by the BellSouth IM user agent 115 to the abstraction server 124 through a communication line 160 and other conventional mechanisms. In one example embodiment, among others, the user information is transmitted and stored on the abstraction server 124 as XML-structured information because XML provides a versatile approach that is compatible with almost any other Internet-based technology. In short, XML is a markup language for documents containing structured information, which contains both content (e.g., words, pictures, etc.) and some indication of what role that content plays (e.g., content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.). The XML specification titled “Extensible Markup Language (XML) 1.0 (Second Edition), W3C Recommendation 6 Oct. 2000” (referred to herein as “the XML specification”) by W3C is hereby incorporated by reference as if set forth in its entirely.
If, for example, a BellSouth user has a BellSouth IM account, an America On-Line (AOL) IM account, a Yahoo IM account, a Microsoft Network (MSN) IM account, or any other IM account, then the BellSouth user may provide an IM login name and password for each of the user's accounts as part of the user information 150a. The inputting of the user information 150a is shown in
As shown in an example embodiment in
Since the TPOs 220, 222, 224, 226 are instantiated at the client location 110, in accordance with one example embodiment, the translation from XML to the BellSouth protocol, the translation from XML to the AOL protocol, the translation from XML to the Yahoo protocol, and the translation from XML to the MSN protocol each occurs at the client location, thereby relinquishing resources of the abstraction server 124 for other functions.
The message router 170 stores the session information as shared session objects 190, 192, 194, 196 in the session collection 180. Thus, the AOL TPO 220 generates an AOL session ID, which is conveyed to the message router 170 for storage in the AOL session object 190. Similarly, the Yahoo TPO 222, the MSN TPO 224, and the BellSouth TPO 226 each generates a Yahoo session ID, an MSN session ID, and a BellSouth session ID, respectively. The session IDs are conveyed to the message router 170, which stores the Yahoo session ID in the Yahoo session object 192, the MSN session ID in the MSN session object 194, and the BellSouth session ID in the BellSouth session object 196.
Typically, after the BellSouth user at the BellSouth IM user agent 115 has been logged onto the various servers 310, 312, 314, 126 and the logon information has been stored as the respective session objects 190, 192, 194, 196 using its respective session IDs, an add-contact user interface is provided to the BellSouth IM user. An example add-contact user interface 202 is shown in FIG. 4A. As shown in
Similarly, if the BellSouth IM user wishes to add an MSN contact, a BellSouth contact, or a Yahoo contact, then options similar to the AOL contact would be available for the MSN contact, the BellSouth contact, and the Yahoo contact. Once the contact information has been entered, the contact information is stored on its respective server. Thus, if an AOL contact is added, then the AOL contact information would be stored on the BellSouth IM user's AOL account since the AOL TPO 220 is providing an interface to the BellSouth IM user's AOL account. Similarly, if a Yahoo contact is added, then the Yahoo contact information would be stored on the Yahoo server at the user's Yahoo account. Likewise, addition of a BellSouth contact and an MSN contact would update the BellSouth IM user's accounts on the BellSouth server and the MSN server, respectively. Once the contact information has been entered and stored on the respective servers, the contact information will be available to the BellSouth IM user for any subsequent IM session, including from the BellSouth IM user agent 115 at the BellSouth client location 110 and other locations. Additionally, the contact information, once it has been entered and stored, will also be available from other native clients at that native-client location and other locations.
In another embodiment, the BellSouth IM user would be able to access pre-existing contact information that is already stored on the various servers 310, 312, 314. Thus, rather than adding new contacts, when the various TPOs 220, 222, 224 establish a connection to their respective servers 310, 312, 314, the contact information from the servers 310, 312, 314 will be displayed to the BellSouth IM user at the user interface. One example of this is shown in FIG. 4B.
In addition to the available contacts, the contact list 302 includes user options 306, which permit the user to chat with a contact, add a new contact, or send a message or file to a contact, all of which would initiate another interface area (e.g., window, screen, etc. (not shown)) for the user to accomplish those functions, as would be understood by one of ordinary skill in the art. The user interface also provides the user with additional menus 308, such as an edit menu, an options menu, a sign-on menu, and a help screen. Since, as described above, the various TPOs 220, 222, 224, 226 provide a virtual native client to the various servers 310, 312, 314, 126, a single user interface may aggregate all of the contact information from all of the servers 310, 312, 314, 126 and display them to the user on a single screen. The display of all contacts on all servers 310, 312, 314, 316 on a single screen permits the user to consolidate all of the contacts in a single user interface, thereby simplifying user IM interactions.
After a user logs onto IM sessions through the various TPOs 220, 222, 224, 226, presence information related to the contacts is further determined by the various TPOs 220, 222, 224, 226. This is shown with reference to FIG. 3. Thus, for example, if the BellSouth IM user has added CONTACT1 having an AOL IM address and a Yahoo IM address, and CONTACT 2 having only an MSN account, then presence information of CONTACT1 is determined from the AOL server 310 and the Yahoo server 312, and presence information of CONTACT2 is determined from the MSN server 314. While the polling for presence is shown as being initiated by the TPOs 220, 222, 224, 226, the evaluation of the various servers for presence information may also be initiated by the server or the client. Alternatively, the presence information may be continually refreshed to the various TPOs 220, 222, 224, 226 by the servers 310, 312, 314, 126 without the polling of the servers for the presence information.
In operation, the AOL TPO 220 may generate an AOL-native presence query to determine whether or not CONTACT1 is present. The AOL server 310 is polled using the AOL-native presence query. The AOL server 310 receives the query and generates AOL-native presence information, which indicates whether or not CONTACT1 is present. The AOL-native presence information is relayed to the AOL TPO 220. As with other native information coming down to any TPO, the AOL TPO 220 encapsulates the AOL-native presence information to generate XML-structured presence information having an appropriate session ID. The XML-structured presence information is relayed to the message router 170 by the AOL TPO 220. The message router 170 receives the XML-structured presence information from the AOL TPO 220, and correlates the XML-structured presence information to the established session using session object 190. Using the AOL session object 190 identified by the session ID from the AOL TPO 220, the message router 170 relays the XML-structured presence information to the BellSouth IM user agent 115.
The presence information of CONTACT1 from the Yahoo server 312 and the presence information of CONTACT2 from the MSN server 314 are each determined in a similar fashion. Thus, as seen from
At this point, if CONTACT1 is present on AOL, and if the BellSouth user wishes to engage in an IM chat session with CONTACT1 through the AOL server 310, then the BellSouth user initiates an IM chat session with CONTACT1 from the BellSouth IM user agent 115. The BellSouth IM user agent 115 issues an XML-structured invitation to the message router 170. The message router 170 receives the XML-structured invitation and conveys the XML-structured invitation to the AOL TPO 220. The AOL TPO 220 receives the XML-structured invitation and generates a thread ID, which is used, in one form or another, to track the thread from the BellSouth IM user agent 115 and the AOL IM agent 320. In addition to generating the thread ID, the AOL TPO 220 translates the XML-structured invitation into an AOL-native invitation. The AOL TPO 220 issues the AOL-native invitation to the AOL server 310, which relays the AOL-native invitation to CONTACT1 at an AOL user agent 320 at an AOL client location. Since the AOL TPO 220 provides the AOL server 310 with AOL-native information related to the thread ID, each invitation may be properly delivered to CONTACT1 at the AOL user agent 320.
If CONTACT1 at the AOL user agent 320 accepts the invitation, then the AOL user agent 320 issues an AOL-native acceptance, which is relayed to the AOL server 310. The AOL server 310 further conveys the AOL-native acceptance to the AOL TPO 220. The AOL TPO 220 receives the AOL-native acceptance and encapsulates the AOL-native acceptance to produce an XML-structured acceptance. The XML-structured acceptance is relayed to the message router 170 by the AOL TPO 220. Since the XML-structured acceptance includes information related to the thread ID for that particular IM session, the message router 170 relays the XML-structured acceptance to the proper BellSouth IM user agent 115. Upon receiving the BellSouth-native acceptance, a chat session is established between the BellSouth IM user and CONTACT1.
During the chat session, the BellSouth user agent 115 generates an XML-structured message. The BellSouth TPO 226 conveys the XML-structured message to the message router 170, which subsequently routes the XML-structured message to the AOL TPO 220 based on the message ID. The AOL TPO 220 translates the XML-structured message into an AOL-native message, and conveys the AOL-native message to the AOL server 310. In addition to routing the XML-structured message, the message router 170 may further modify the message by, for example, adding additional XML tags or tracking information, encrypting all or sensitive portions of the message, etc. The AOL server 310 receives the AOL-native message from the TPO 220 and relays the AOL-native message to CONTACT1 at the AOL user agent 320.
Similarly, the AOL user agent 320 generates an AOL-native message. Of course the representative native user agents 320, 322, 324 could also be replaced in part by a plurality of IM user agents similar to the BellSouth IM user agent 115 having the various TPOs 220, 222, 224, 226. The AOL-native message has a message ID, or equivalent, to track the message. The AOL-native message is conveyed to the AOL IM server 310, which further conveys the AOL-native message to the AOL TPO 220. The AOL TPO 220 encapsulates the AOL-native message to produce an XML-structured message. In addition to producing the XML-structured message, the AOL TPO 220 may further modify the message by, for example, altering the header of the message. The AOL TPO 220 conveys the XML-structured message to the message router 170, which subsequently routes the XML-structured message to the BellSouth IM user at the BellSouth IM user agent 115.
Similar to the chat session with the AOL user agent 320, the BellSouth IM user agent 115 may engage in a chat session with the Yahoo user agent 322 and the MSN user agent 324 through the Yahoo TPO 222 and the MSN TPO 224, respectively. While this process is not specifically described here, it will be clear to one of ordinary skill in the art that the Yahoo TPO 222, the MSN TPO 224, the BellSouth TPO 226, or any other TPO (not shown) performs similar functions to the AOL TPO 220. In other words, the various TPOs 222, 224, 226 each perform similarly as the AOL TPO 220 to translate between various native protocols and XML.
As seen in the embodiments of
As shown in an example embodiment in
Since the IPOs 221, 223, 225, 227 are instantiated at the abstraction server 124, a single TPO can accommodate multiple users from a particular protocol. For example, a single AOL TPO 221 can accommodate multiple AOL users; a single MSN TPO 225 can accommodate multiple MSN users, etc. This reduces the number of TPOs instantiated, thereby reducing some of the processing by the server. Since multiple users can access the same TPO, the TPO generates a separate session ID for each of the multiple users. The abstraction server 124 stores user information 150b, such as the various login names and passwords, as well as the various session objects 191, 193, 195, 197 associated with a particular BellSouth IM user. Thus, when a BellSouth IM user subsequently logs on at a BellSouth IM user agent 115, the logon information is conveyed to the message router 175 at the abstraction server 124, which retrieves the user information 150b. Upon retrieving the user information 150b and the information related to the various TPOs 221, 223, 225, 227, the message router 175 automatically instantiates the BellSouth TPO 227, the AOL TPO 221, the Yahoo TPO 223, and the MSN TPO 225, or utilizes respective existing TPOs.
If the BellSouth IM user wishes to add an MSN contact, a BellSouth contact, or a Yahoo contact, then options similar to the AOL contact would be available for the MSN contact, the BellSouth contact, and the Yahoo contact. Once the contact information has been entered, the contact information is stored on its respective server. Thus, if an AOL contact is added, then the AOL contact information would be stored on the BellSouth IM user's AOL account since the AOL TPO 221 is providing an interface to the BellSouth IM user's AOL account. Similarly, if a Yahoo contact is added, then the Yahoo contact information would be stored on the BellSouth IM user's Yahoo account since the Yahoo TPO 223 is providing an interface to the BellSouth IM user's Yahoo account. Likewise, addition of a BellSouth contact and an MSN contact would update the BellSouth IM user's account on the BellSouth server and the MSN server respectively. Once the contact information has been entered and stored on the respective servers, the contact information will be available to the BellSouth IM user for any subsequent IM session.
Upon logging onto subsequent IM sessions through the various TPOs 221, 223, 225, 227, presence information related to the contacts is further determined by the various TPOs 221, 223, 225, 227. For example, if the BellSouth IM user has added CONTACT1 having an AOL IM address and a Yahoo IM address, and CONTACT 2 having only an MSN account, then presence information of CONTACT1 is determined from the AOL server 310 and the Yahoo server 312, and presence information of CONTACT2 is determined from the MSN server 314. While the polling for presence is shown as being initiated by the TPOs 221, 223, 225, 227, the polling of the various servers for presence information may also be initiated by the server or the client. Alternatively, the presence information may be continually refreshed to the various TPOs 221, 223, 225, 227 by the servers 310, 312, 314, 126 without the polling of the servers for the presence information.
In operation, the AOL TPO 221 generates an AOL-native presence query to determine whether or not CONTACT1 is present. The AOL server 310 is polled using the AOL-native presence query. The AOL server 310 receives the query and generates AOL-native presence information, which indicates whether or not CONTACT1 is present. The AOL-native presence information is relayed to the AOL TPO 221. The AOL TPO 221 encapsulates the AOL-native presence information to generate XML-structured presence information. The XML-structured presence information is relayed to the message router 175 by the AOL TPO 221. The message router 175 receives the XML-structured presence information from the AOL TPO 221, and correlates the XML-structured presence information to the AOL session object 191. Using the AOL session ID from the AOL session object 191, the message router 175 relays the XML-structured presence information to the BellSouth IM user agent 115.
Similarly, the Yahoo TPO 223 generates a Yahoo-native presence query to determine whether or not CONTACT1 is present. Likewise, the MSN TPO 225 generates an MSN-native presence query to determine whether or not CONTACT2 is present. Thus, as seen from
At this point, if CONTACT1 is present on AOL, and if the BellSouth user wishes to engage in an IM chat session with CONTACT1 through the AOL server 310, then the BellSouth user initiates an IM chat session with CONTACT1 from the BellSouth IM user agent 115. The BellSouth IM user agent 115 issues an XML-structured invitation to the message router 175. The message router 175 receives the XML-structured invitation and conveys the XML-structured invitation to the AOL TPO 221. The AOL TPO 221 receives the XML-structured invitation and translates the XML-structured invitation into an AOL-native invitation. In addition to translating the XML-structured invitation, the AOL TPO 221 generates a thread ID, which is used, in one form or another, to track the thread between the BellSouth IM user agent 115 and the AOL user agent 320. The AOL TPO 221 issues the AOL-native invitation to the AOL server 310, which relays the AOL-native invitation to CONTACT1 at an AOL user agent 320 at an AOL client location. Since the AOL TPO 221 provides the AOL server 310 with information related to the thread ID, each invitation may be properly delivered to CONTACT1 at the AOL user agent 320.
If CONTACT1 at the AOL user agent 320 accepts the invitation, then the AOL user agent 320 issues an AOL-native acceptance, which is relayed to the AOL server 310. The AOL server 310 further conveys the AOL-native acceptance to the AOL TPO 221. The AOL TPO 221 receives the AOL-native acceptance and encapsulates the AOL-native acceptance to produce an XML-structured acceptance. The XML-structured acceptance is relayed to the message router 175 by the AOL TPO 221. Since the XML-structured acceptance includes information related to the thread ID for that particular IM session, the message router 175 relay the XML-structured acceptance to the proper BellSouth IM user agent 115. Upon receiving the BellSouth-native acceptance, a chat session is established between the BellSouth IM user and CONTACT1.
During the chat session, the BellSouth user agent 115 generates an XML-structured message. The BellSouth TPO 227 conveys the XML-structured message to the message router 175, which subsequently routes the XML-structured message to the AOL TPO 221 based on the message ID. The AOL TPO 221 translates the XML-structured message into an AOL-native message. In addition to routing the XML-structured message, the message router 175 may further modify the message by, for example, adding additional XML tags or tracking information, encrypting all or sensitive portions of the message, etc. Upon translating the message, the AOL TPO 221 conveys the AOL-native message to the AOL server 310. The AOL server 310 receives the AOL-native message and relays the AOL-native message to CONTACT1 at the AOL user agent 320.
Similarly, the AOL user agent 320 generates an AOL-native message. The AOL-native message is conveyed to the AOL IM server 310, which further conveys the AOL-native message to the AOL TPO 221. The AOL TPO 221 encapsulates the AOL-native message to produce an XML-structured message. In producing the XML-structured message, the AOL TPO 221 may further modify the message by, for example, modifying the message header. The AOL TPO 221 conveys the XML-structured message to the message router 175, which subsequently routes the XML-structured message to the BellSouth IM user at the BellSouth IM user agent 115.
Similar to the chat session with CONTACT1 at the AOL user agent 320, a chat session may be established with CONTACT1 at the Yahoo user agent 322 using the Yahoo TPO 223. Likewise a chat session may be established with CONTACT2 at the MSN user agent 324 using the MSN TPO 225. Since the chat sessions are established through the various TPOs 221, 223, 225, 227, each of the native servers 310, 312, 314, 126 communicate using their respective native protocols. Thus, for example, the AOL server 310 uses an AOL-native protocol; the Yahoo server 312 uses the Yahoo-native protocol, etc. In this regard, each of the TPOs 221, 223, 225, 227 appears as a native client to each of their respective servers 310, 312, 314, 126. In other words, the MSN TPO 225 appears as an MSN client to the MSN server 314; the AOL TPO 221 appears as an AOL client to the AOL server 310, etc. Thus, none of the servers 310, 312, 314, 126 modify their respective IM protocols or IM interfaces because the servers 310, 312, 314, 126 are in communication objects that behave as virtual native clients to those servers 310, 312, 314, 126.
As shown in
Continuing in
Similarly, as shown in
As shown in
Subsequently, as shown in
As shown in
Once the IM chat session has been established, the BellSouth IM user agent 115 generates XML-structured chat messages, which are translated into AOL-native chat messages at the AOL TPO 220. The AOL-native chat messages are conveyed (570, 572, 574) from the AOL TPO 220 to the AOL server 310, and subsequently to the AOL user agent 320 as an AOL-native chat message.
Similarly, while not specifically shown in
The IM user agents 115, 320, 322, 324, 326, the session objects 190, 191, 192, 193, 194, 195, 196, 197, the message router 170, 175, and the TPOs 220, 221, 222, 223, 224, 225, 226, 227 of the present invention can be implemented in hardware, software, firmware, or a combination thereof. In the preferred embodiments, the The IM user agents 115, 320, 322, 324, 326, the session objects 190, 191, 192, 193, 194, 195, 196, 197, the message router 170, 175, and the TPOs 220, 221, 222, 223, 224, 225, 226, 227 are implemented in software or firmware that is stored in a memory and that is executed by a suitable instruction execution system. If implemented in hardware, as in an alternative embodiment, The IM user agents 115, 320, 322, 324, 326, the session objects 190, 191, 192, 193, 194, 195, 196, 197, the message router 170, 175, and the TPOs 220, 221, 222, 223, 224, 225, 226, 227 can be implemented with any or a combination of the following technologies, which are all well known in the art: Internet Appliances, a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc.
Any process descriptions or blocks in the data-flow diagrams should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the preferred embodiment of the present invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present invention.
The IM user agents 115, 320, 322, 324, 326, the session objects 190, 191, 192, 193, 194, 195, 196, 197, the message router 170, 175, and the TPOs 220, 221, 222, 223, 224, 225, 226, 227 may also be implemented as a computer program, which comprises an ordered listing of executable instructions for implementing logical functions. As such the computer program can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory. Although exemplary embodiments have been shown and described, it will be clear to those of ordinary skill in the art that a number of changes, modifications, or alterations may be made, none of which depart from the spirit of the present invention. For example, while an AOL server 310, a Yahoo server 312, an MSN server 314, and a BellSouth IM server 126 have been shown in the example embodiments, it will be clear to one of ordinary skill in the art that the systems and methods as outlined above may be extended to other Internet-based IM protocols. Also, while XML-structured information is chosen as a preferred embodiment, it will be clear to one of ordinary skill in the art that other languages or protocols may be used in place of XML, so long as those protocols provide for broad Internet applications. Additionally, while the IM abstraction object 130 is located on the abstraction server 124 in the various embodiments, it will be clear to one of ordinary skill in the art that the IM abstraction object 130 may be located at a client location, rather than at a server. Also, while IM has specifically been described in detail in
Furthermore, one having ordinary skill in the art will appreciate the functions of the following items: the “done” icon 107a (FIG. 1B), 107b (FIG. 1C); the login interface 210 (FIG. 2); the drop-down menu 204 (FIG. 4A); and various selection icons 306, 308 (FIG. 4B. Thus, no further discussion of those items is provides herein.
Friedman, Lee G., Daniell, William Todd, Davis, Joel A., Kent, Jr., Larry Graham, Daigle, Brian Keith
Patent | Priority | Assignee | Title |
10616151, | Oct 17 2018 | Asana, Inc.; ASANA, INC | Systems and methods for generating and presenting graphical user interfaces |
10623359, | Feb 28 2018 | Asana, Inc.; ASANA, INC | Systems and methods for generating tasks based on chat sessions between users of a collaboration environment |
10977434, | Jul 11 2017 | ASANA, INC | Database model which provides management of custom fields and methods and apparatus therfor |
11082381, | Feb 28 2018 | Asana, Inc. | Systems and methods for generating tasks based on chat sessions between users of a collaboration environment |
11204683, | Jan 09 2019 | Asana, Inc. | Systems and methods for generating and tracking hardcoded communications in a collaboration management platform |
11212242, | Oct 17 2018 | Asana, Inc. | Systems and methods for generating and presenting graphical user interfaces |
11288081, | Jan 08 2019 | Asana, Inc. | Systems and methods for determining and presenting a graphical user interface including template metrics |
11327645, | Apr 04 2018 | Asana, Inc. | Systems and methods for preloading an amount of content based on user scrolling |
11341444, | Dec 06 2018 | Asana, Inc. | Systems and methods for generating prioritization models and predicting workflow prioritizations |
11398998, | Feb 28 2018 | Asana, Inc. | Systems and methods for generating tasks based on chat sessions between users of a collaboration environment |
11405435, | Dec 02 2020 | Asana, Inc. | Systems and methods to present views of records in chat sessions between users of a collaboration environment |
11449836, | Jul 21 2020 | Asana, Inc. | Systems and methods to facilitate user engagement with units of work assigned within a collaboration environment |
11553045, | Apr 29 2021 | Asana, Inc. | Systems and methods to automatically update status of projects within a collaboration environment |
11561677, | Jan 09 2019 | Asana, Inc. | Systems and methods for generating and tracking hardcoded communications in a collaboration management platform |
11561996, | Nov 24 2014 | Asana, Inc. | Continuously scrollable calendar user interface |
11568339, | Aug 18 2020 | Asana, Inc. | Systems and methods to characterize units of work based on business objectives |
11610053, | Jul 11 2017 | Asana, Inc. | Database model which provides management of custom fields and methods and apparatus therfor |
11620615, | Dec 18 2018 | Asana, Inc. | Systems and methods for providing a dashboard for a collaboration work management platform |
11632260, | Jun 08 2018 | Asana, Inc. | Systems and methods for providing a collaboration work management platform that facilitates differentiation between users in an overarching group and one or more subsets of individual users |
11635884, | Oct 11 2021 | Asana, Inc. | Systems and methods to provide personalized graphical user interfaces within a collaboration environment |
11636432, | Jun 29 2020 | Asana, Inc. | Systems and methods to measure and visualize workload for completing individual units of work |
11652762, | Oct 17 2018 | Asana, Inc. | Systems and methods for generating and presenting graphical user interfaces |
11656754, | Apr 04 2018 | Asana, Inc. | Systems and methods for preloading an amount of content based on user scrolling |
11676107, | Apr 14 2021 | Asana, Inc. | Systems and methods to facilitate interaction with a collaboration environment based on assignment of project-level roles |
11693875, | Nov 24 2014 | Asana, Inc. | Client side system and method for search backed calendar user interface |
11694140, | Dec 06 2018 | Asana, Inc. | Systems and methods for generating prioritization models and predicting workflow prioritizations |
11694162, | Apr 01 2021 | Asana, Inc.; ASANA, INC | Systems and methods to recommend templates for project-level graphical user interfaces within a collaboration environment |
11695719, | Feb 28 2018 | Asana, Inc. | Systems and methods for generating tasks based on chat sessions between users of a collaboration environment |
11720378, | Apr 02 2018 | Asana, Inc. | Systems and methods to facilitate task-specific workspaces for a collaboration work management platform |
11720858, | Jul 21 2020 | Asana, Inc. | Systems and methods to facilitate user engagement with units of work assigned within a collaboration environment |
11734625, | Aug 18 2020 | Asana, Inc. | Systems and methods to characterize units of work based on business objectives |
11756000, | Sep 08 2021 | Asana, Inc. | Systems and methods to effectuate sets of automated actions within a collaboration environment including embedded third-party content based on trigger events |
11763259, | Feb 20 2020 | Asana, Inc.; ASANA, INC | Systems and methods to generate units of work in a collaboration environment |
11769115, | Nov 23 2020 | Asana, Inc. | Systems and methods to provide measures of user workload when generating units of work based on chat sessions between users of a collaboration environment |
11775745, | Jul 11 2017 | Asana, Inc. | Database model which provides management of custom fields and methods and apparatus therfore |
11782737, | Jan 08 2019 | Asana, Inc. | Systems and methods for determining and presenting a graphical user interface including template metrics |
11792028, | May 13 2021 | Asana, Inc. | Systems and methods to link meetings with units of work of a collaboration environment |
11803814, | May 07 2021 | Asana, Inc.; ASANA, INC | Systems and methods to facilitate nesting of portfolios within a collaboration environment |
11809222, | May 24 2021 | Asana, Inc. | Systems and methods to generate units of work within a collaboration environment based on selection of text |
11810074, | Dec 18 2018 | Asana, Inc. | Systems and methods for providing a dashboard for a collaboration work management platform |
11831457, | Jun 08 2018 | Asana, Inc. | Systems and methods for providing a collaboration work management platform that facilitates differentiation between users in an overarching group and one or more subsets of individual users |
11836681, | Feb 17 2022 | Asana, Inc. | Systems and methods to generate records within a collaboration environment |
11847613, | Feb 14 2020 | Asana, Inc. | Systems and methods to attribute automated actions within a collaboration environment |
11863601, | Nov 18 2022 | Asana, Inc.; ASANA, INC | Systems and methods to execute branching automation schemes in a collaboration environment |
11900323, | Jun 29 2020 | Asana, Inc. | Systems and methods to generate units of work within a collaboration environment based on video dictation |
11902344, | Dec 02 2020 | Asana, Inc. | Systems and methods to present views of records in chat sessions between users of a collaboration environment |
11943179, | Oct 17 2018 | Asana, Inc. | Systems and methods for generating and presenting graphical user interfaces |
11956193, | Feb 28 2018 | Asana, Inc. | Systems and methods for generating tasks based on chat sessions between users of a collaboration environment |
11995611, | Jul 21 2020 | Asana, Inc. | Systems and methods to facilitate user engagement with units of work assigned within a collaboration environment |
11997425, | Feb 17 2022 | Asana, Inc. | Systems and methods to generate correspondences between portions of recorded audio content and records of a collaboration environment |
12073363, | Dec 18 2018 | Asana, Inc. | Systems and methods for providing a dashboard for a collaboration work management platform |
12093859, | Jun 02 2021 | ASANA, INC ; Asana, Inc. | Systems and methods to measure and visualize workload for individual users |
12093896, | Jan 10 2022 | Asana, Inc. | Systems and methods to prioritize resources of projects within a collaboration environment |
12112298, | Oct 04 2021 | Asana, Inc. | Systems and methods to provide user-generated graphical user interfaces within a collaboration environment |
12118514, | Feb 17 2022 | Asana, Inc. | Systems and methods to generate records within a collaboration environment based on a machine learning model trained from a text corpus |
12119949, | Jun 08 2018 | Asana, Inc. | Systems and methods for providing a collaboration work management platform that facilitates differentiation between users in an overarching group and one or more subsets of individual users |
12124997, | May 07 2021 | Asana, Inc. | Systems and methods to facilitate nesting of portfolios within a collaboration environment |
12124998, | Feb 17 2022 | Asana, Inc. | Systems and methods to generate records within a collaboration environment |
12131293, | Apr 01 2021 | Asana, Inc. | Systems and methods to recommend templates for project-level graphical user interfaces within a collaboration environment |
12141756, | May 24 2021 | Asana, Inc. | Systems and methods to generate project-level graphical user interfaces within a collaboration environment |
ER1193, | |||
ER1547, | |||
ER2393, | |||
ER29, | |||
ER3116, | |||
ER8087, | |||
ER9292, |
Patent | Priority | Assignee | Title |
5497373, | Mar 22 1994 | ERICSSON MESSAGING SYSTEMS INC | Multi-media interface |
6463078, | Jul 22 1998 | Microsoft Technology Licensing, LLC | Method for switching protocols transparently in multi-user applications |
6535486, | Mar 20 1998 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for adaptive prioritization of multiple information types in highly congested communication devices |
6549937, | Jul 21 1999 | Microsoft Technology Licensing, LLC | System and method for multi-protocol communication in a computer network |
6629163, | Dec 29 1999 | Implicit, LLC | Method and system for demultiplexing a first sequence of packet components to identify specific components wherein subsequent components are processed without re-identifying components |
6738822, | Sep 30 1997 | Canon Kabushiki Kaisha | Relay apparatus, system and method, and storage medium |
20020087704, | |||
20020118809, | |||
20020163934, | |||
20030054810, | |||
20040015723, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 16 2002 | DAIGLE, BRIAN KEITH | Bellsouth Intellectual Property Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042445 | /0346 | |
Dec 16 2002 | DANIELL, WILLIAM TODD | Bellsouth Intellectual Property Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042445 | /0346 | |
Dec 16 2002 | FRIEDMAN, LEE G | Bellsouth Intellectual Property Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042445 | /0346 | |
Dec 16 2002 | KENT, LARRY GRAHAM, JR | Bellsouth Intellectual Property Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042445 | /0346 | |
Dec 16 2002 | DAVIS, JOEL A | Bellsouth Intellectual Property Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042445 | /0346 | |
Apr 27 2007 | Bellsouth Intellectual Property Corporation | AT&T INTELLECTUAL PROPERTY, INC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 042512 | /0869 | |
Jul 27 2007 | AT&T INTELLECTUAL PROPERTY, INC | AT&T BLS Intellectual Property, Inc | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 042512 | /0871 | |
Nov 01 2007 | AT&T BLS Intellectual Property, Inc | AT&T Delaware Intellectual Property, Inc | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 042512 | /0873 | |
Sep 24 2008 | AT&T Intellectual Property I, L.P. | (assignment on the face of the patent) | / | |||
Jan 12 2017 | AT&T INTELLECTUAL PROPERTY, LLC | Uber Technologies, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043549 | /0642 | |
Apr 21 2017 | AT&T Delaware Intellectual Property, Inc | AT&T Intellectual Property I, L P | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042987 | /0741 | |
Oct 17 2019 | Uber Technologies, Inc | CORTLAND CAPITAL MARKET SERVICES LLC | PATENT SECURITY AGREEMENT SUPPLEMENT | 050817 | /0600 | |
Oct 17 2019 | Uber Technologies, Inc | MORGAN STANLEY SENIOR FUNDING, INC , AS ADMINISTRATIVE AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 050767 | /0076 | |
Feb 25 2021 | CORTLAND CAPITAL MARKET SERVICES LLC, AS ADMINISTRATIVE AGENT | Uber Technologies, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 055547 | /0404 | |
Sep 09 2024 | MORGAN STANLEY SENIOR FUNDING, INC AS ADMINISTRATIVE AGENT | Uber Technologies, Inc | TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT TERM LOAN AT REEL 050767, FRAME 0076 | 069133 | /0167 | |
Sep 26 2024 | MORGAN STANLEY SENIOR FUNDING, INC , AS ADMINISTRATIVE AGENT | Uber Technologies, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 069110 | /0508 |
Date | Maintenance Fee Events |
Dec 15 2010 | ASPN: Payor Number Assigned. |
Dec 15 2010 | RMPN: Payer Number De-assigned. |
Mar 18 2013 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
May 25 2017 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 19 2013 | 4 years fee payment window open |
Apr 19 2014 | 6 months grace period start (w surcharge) |
Oct 19 2014 | patent expiry (for year 4) |
Oct 19 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 19 2017 | 8 years fee payment window open |
Apr 19 2018 | 6 months grace period start (w surcharge) |
Oct 19 2018 | patent expiry (for year 8) |
Oct 19 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 19 2021 | 12 years fee payment window open |
Apr 19 2022 | 6 months grace period start (w surcharge) |
Oct 19 2022 | patent expiry (for year 12) |
Oct 19 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |