The present invention relates generally to instant messaging and presence (“IMP”) services. More particularly, the invention relates to a mechanism to permit roaming between different service providers, utilizing a dynamically bound protocol stack.
Many portable devices such as cellular telephones and personal digital assistants are now equipped with IMP capability. Using this capability, users can send text messages to other participating users and can publish presence information telling the user's IMP status (available, away, offline, et cetera). Using IMP, the user of a portable device can send short instant messages to individual persons or buddies and also to groups of multiple buddies.
Currently, one limitation of the IMP paradigm derives from the fact that there are numerous, potentially incompatible, IMP services. While the basic functionality of all these services is largely the same, the protocols used can differ. Thus the user of one IMP service is typically not able to send and receive messages, or chat, with persons who are on another IMP service. One proposed solution has been to provide an IMP application that has multiple IMP protocol stacks that are then selectively utilized depending on the capabilities of the party being communicated with. In essence, this solution embeds the capability to communicate with plural IMP systems and then routes messages to the appropriate protocol stack, as needed.
While the aforementioned solution addresses some of the compatibility problems that currently exist, that solution does not fully address the complications that arise when one or more of the parties to an IMP session is mobile. Mobility implies the possibility that a user may roam from one service provider domain to another. This can potentially occur while the user is engaged in an active chat session (with one buddy or with a group) or not. Thus, when a user roams from one service provider to another, his or her ability to participate in IMP sessions with buddies could be lost, if the second service provider does not support the same protocols as the first. This potential loss of messaging capability may occur at two levels. First, active, live or ongoing messaging sessions may be dropped. Second, the ability to establish new sessions with existing buddies may be lost, as well.
Mobility further complicates how the user's presence information is communicated. In this regard, roaming can potentially occur while the user's presence is in any allowed state (e.g., available, away, offline). Unfortunately, different protocols may support different allowed states. Thus, it is possible for a user to roam into a new domain where his current presence state (according to the previous domain) is not defined.
The present invention addresses these mobility problems by providing an IMP middleware that allows IMP protocol implementations to be dynamically swapped in and out as a client application roams among various service provider networks. As one protocol is swapped out for another, the system coordinates the storing and mapping of state variables (including presence state variables) so that presence information is properly communicated.
One benefit of the innovative solution is that the IMP application program interface (API) and the IMP application can remain unchanged and can operate seamlessly and transparently as users roam. As the client application roams and a service provider change is detected, the system signals to the new service provider a profile containing the old IMP session details. A new IMP implementation is swapped into the existing IMP application automatically, so that the user experiences seamless and transparent operation notwithstanding the fact that service providers have changed. The IMP implementation may be either downloaded in real time or it may be previously stored in a suitable memory such as on a SIM card or an SD card.
The architecture of the invention also supports important business advantages. Because protocol implementations are dynamically swapped in and out as needed, the system readily supports an important business architecture where the user may be billed a premium charge for the roaming capability. These additional roaming charges can be integrated into the billing structure associated with a cellular service provider, or they may be implemented at an IMP service provider tier. In one embodiment, the dynamic linking mechanism, whereby one protocol stack is swapped out for another, may be mediated by an account billing system. Thus users who have signed on for the premium service will have the dynamic linking capability turned on (for all services or for selected services, as specified in the user's contract)
According to one aspect, the invention provides method to support roaming in instant messaging systems that uses dynamically swappable middleware components. A first middleware component is configured to support instant message communication through a first service provider. When the system detects user roaming from the first service provider to a second service provider, a second middleware component is dynamically swapped for the first middleware component. The second middleware component is configured to support instant message communication through said second service provider. In this way the session may be seamlessly transferred from one service provider to another.
Further areas of applicability of the present invention will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating the preferred embodiment of the invention, are intended for purposes of illustration only and are not intended to limit the scope of the invention.
The present invention will become more fully understood from the detailed description and the accompanying drawings, wherein:
The following description of the preferred embodiment(s) is merely exemplary in nature and is in no way intended to limit the invention, its application, or uses.
Referring to
Associated with the IMP API are the data structures 16 used by the IMP protocol stack during operation. These data structures include structures for storing state variables representing aspects of a live communication. The actual IMP application is then stacked upon layer 14 as at 18. The application represents that portion of the software with which the user interacts. The application may thus provide a text-based, graphical-based or audio/video-based interface on a suitable device such as the cellular telephone device illustrated at 20, or in a browser-based application running on a computer, or the like.
As will be more fully explained below, the present architecture is designed so that the application layer 18 does not need to change as the user migrates from one service provider domain to another. Instead, the IMP middleware layers are dynamically swapped out and replaced with a different IMP middleware collection corresponding to the protocols used by the service provider domain into which the user has migrated.
The IMP middleware layers may be configured as a middleware component, suitable for downloading from a host system such as a system associated with an instant messaging service provider. The middleware component includes a first interface 13 for dynamically linking to the operating system associated with an instant messaging appliance (or adapted to employ a library or module that directly uses operating system functions, as by making pre-linked or statically linked calls), and a second interface 15 for dynamically linking to the IMP application hosted by the operating system of the appliance. The middleware component thus can be dynamically connected to the operating system (by dynamic linking to the operating system, or by employing library or module that directly uses operating system functions as noted above) and to the corresponding IMP application and enabled to work in processing instant message and presence communication on the appliance. If desired the component can be configured to include a locking mechanism that inhibits the component from working unless a suitable key is provided.
Referring to
The steps performed in order to establish and participate in a message communication have been listed in box 30. Each step is numbered and the numbers correspond to the directed lines (arrows) that link each user with service provider 26. Thus, the process begins with both users A and B registering their account and identifying their buddies. Each user then logs in (step 2) and then each user's presence status is updated (step 3). In this scenario, user A creates a message (step 4) and sends it to the service provider 26, which then forwards the message to user B (step 5).
The process illustrated in
As shown in
As the user roams from position 32 to position 34, it will be assumed that the user migrates from an area serviced by service provider 1 and moves into an area serviced by service provider 2. Service provider 1 is illustrated at 26 and service provider 2 is illustrated at 38. In this scenario service provider 2 uses an IMP protocol 2, which is different from the IMP protocol 1 used by service provider 1. The steps performed during migration from location 32 to location 34 have been illustrated in box 30. The procedure begins while user A is using service provider 1 (IMP protocol 1). Thus the user is using the IMP protocol stack 40 in
In swapping the IMP protocol stack in and out, several variations are possible. In one embodiment, the IMP protocol stack is downloaded, with the associated IMP application remaining unchanged. In another embodiment, the IMP application may also be included in the download. Thus the IMP application software can be changed dynamically, as well. In both cases, the downloaded software (IMP protocol stack and/or IMP application) may be pushed (e.g. automatically sent) to the user's instant messaging appliance by the service provider; or the downloaded software may be pulled from the service provider (e.g., download requested by the user's instant messaging appliance). Alternatively, the download location may be identified by a URI supplied by the service provider. This behavior could be pre-configured or dynamic.
As illustrated above, the techniques for swapping the IMP protocol stack can take many forms. We have adopted the term “dynamic swapping” as a name for this technique. It will be understood that such dynamic swapping can take a variety of different forms, depending on the particular technology used to implement the system. By way of non-limiting example, the following forms may be used to effect dynamic swapping:
The embodiments illustrated and discussed above show the old IMP stack being swapped out or replaced by a new stack. However, it is possible to construct a variation of these embodiments where the previous IMP stack is not necessarily deactivated. This would allow the client application to keep a copy of the previous IMP stack available for re-use, as needed at a later time.
When changing the IMP application the preferred embodiment preserves session state in an application independent way. This may be done by storing the application independent state variables in the data structures 16. When the new IMP application loads, it then retrieves this stored state information.
In some applications it may be more expedient to dynamically activate previously stored IMP software. In one such embodiment, the IMP software may be stored in a suitable memory associated with the instant messaging appliance, such as in flash memory plugged into the appliance. The stored software would then be activated and deactivated as the user roams. Activation may be effected by any of the means discussed above for pushing and pulling the IMP software to the appliance from the service provider, or from a cite referenced by URI supplied by the service provider. The IMP software may thus be pre-installed but require a “key” for running. The service provider would push the key to the appliance, as needed. The key could have an associated lifetime, license and/or billing contract. In this way the system readily supports business models where users may be charged different rates according to the roaming service capabilities they desire.
User A then transfers the IMP protocol 1 profile and session information to service provider 2, as depicted by the message packet 52. Service provider 2 then downloads IMP API implementation protocol 2 to the user A. In this way the session may continue transparently between user A and user B.
In
The system supports a variety of different roaming variations. In one scenario the instant messaging session is active during transfer (i.e., during the time a user roams from one service provider domain to another). Under this scenario, two variations are possible. One, the session was started in the user's primary service provider domain. Two, the session was started in a service provider domain that the user roamed into prior to beginning the session. In another scenario, no instant messaging session is active, but presence subscriptions are in place. Thus as the user roams, his or her presence attributes are automatically updated. In a third scenario, multiple instant messaging sessions are active. That is, a user may have several active sessions running, with different buddies, when the transfer takes place. In a forth scenario, a group instant messaging session is active. In this scenario, multiple users are participating in a group chat, when one or more of the users migrate to different service provider domains.
As illustrated in
Syntactic mapping involves a direct translation of primitive data types, such as translating an integer field (used by one protocol) to a floating point field (used by the other protocol). Semantic mapping involves mapping objects or classes in which there might not be a one-to-one correspondence of individual components. Thus semantic mapping would be performed where each IMP protocol stack would have an object corresponding to “Service Provider”:
In the above table, some fields (e.g., first two rows) may not have a meaningful correspondence between the two stacks. In the latter two rows, vendor/version might be composite for SP2, but separate fields in SP1, as illustrated. The semantic mapping determines which fields are properly associated in such cases. In one preferred embodiment, the swap-in/swap-out procedure determines automatically whether to employ syntactic or semantic mapping, and how to effect the semantic mapping, base on the identity of the IMP stack being swapped out and the IMP stack being swapped in. Where the data are communicated using XML, the information needed to determine the syntactic and semantic requirements of each stack can be ascertained from the corresponding document type definition (DTD).
While there are many ways to implement the mechanisms to support transport roaming as described herein, one convenient approach is to construct an IMP middleware that provides abstract data types for instant messaging and presence services. The middleware may consist of an application programming interface (API), which may be separated into the API interface and the API implementation. Where the API implementation represents an implementation of a specific IMP protocol (e.g., SIP/SIMPLE, Wireless Village, XMPP, and the like), the API can be constructed using different implementations. However, the API interface can remain unchanged. The IMP middleware so constructed thus encapsulates information about the current IMP implementation (i.e., protocol) that is being employed by the IMP middleware. Each IMP middleware maintains the IMP profile and session information.
The description of the invention is merely exemplary in nature and, thus, variations that do not depart from the gist of the invention are intended to be within the scope of the invention. Such variations are not to be regarded as a departure from the spirit and scope of the invention.