Not applicable
Not applicable
Not applicable
This invention relates to interfacing computer peripherals with messaging systems. The invention is applicable to both server-based and peer-to-peer systems. The invention is particularly suited to instant messaging systems but is also applicable to other messaging systems, including IRC, email, and SMS text messaging.
The proposed US classification is 709/206.
Instant messaging (IM) systems have become increasingly popular over the past decade. Much of their popularity derives from the medium's combination of immediacy with non-intrusiveness. Messages sent via IM can be viewed immediately if desired, but a recipient can also decide to ignore messages until a later, more convenient time without loss of message content.
A significant limitation of instant messages is expressiveness, which is constrained primarily to text. To compensate for this limitation, IM users have developed a rich vocabulary of “emoticons,” which are character sequences that resemble pictograms, such as smiley faces. Most Messaging Systems translate these character sequences to graphical icons that convey the implied emotion or expression: for example, :) may be translated to , indicating happiness. One Messaging System add-on (IMPService, at www.impservice.com) has further enhanced the expressiveness of emoticons by using them to control avatar animations that are displayed in a separate application window. Other attempts to increase IM expressiveness include integration of audio, including audio clips played in response to emoticons and presence notifications. The U.S. Patent Application 2002/0194006 is representative. The primary drawback is that these expressiveness enhancements are limited to computer-based graphics and audio.
The “IM Buddies” product attempts to expand expressiveness. It is produced by United Internet Technologies (UIT) and covered by patent U.S. Pat. No. 6,370,597. This product attempts to bring IM emoticons to the physical world by using an Messaging System to control animatronic devices, which are capable of movement and audio output. However, the UIT system is significantly limited because it requires custom integration with the Messaging System. The UIT system requires modification of both IM server and client application code. Furthermore, the UIT system requires modifications to the standard IM (AOL Instant Messenger (“AIM”)) protocol. Since these limitations prevent the UIT system from being useable with existing unmodified Messaging Systems (even with an unmodified Messaging Client), few users have adopted the system. Few users are willing to change their Messaging Systems or even their Messaging Clients for non-essential features. This is due in large part to the inertia created by the community-based nature of Messaging Systems: a single individual cannot change to a new Messaging System and still communicate with his/her IM buddies unless all the buddies also change to the same system.
U.S. patent applications 2003/0078979, 2004/0267885, 2005/0021639, and 2005/0102362 take a different approach by embedding an Messaging Client directly into a peripheral device. There are several disadvantages of this approach. The primary drawback is that messages must be directed to the device itself, and each person who sends a message must code the message appropriately in order for the message to be correctly interpreted by the device. This becomes particularly difficult to manage when the person with a controllable peripheral device has a large number of “buddies.”
The current invention provides increased expressiveness in messaging systems by integrating messaging systems with the physical world. This invention also enables broad adoption by not requiring modifications to messaging application programs. In addition, by using a proxy, this invention enables maximum flexibility while simultaneously providing the simplicity of a configuration that is managed solely by the owner of the peripheral device.
The current invention can operate in a mode analogous to that outlined in U.S. patent applications 2003/0078979 et al., where messages are sent directly to a peripheral device. But in the typical mode of operation, a message is sent to another user. The current invention then operates by monitoring the messages and transmitting commands to a peripheral device based on the content of the messages.
Further objects and advantages will become apparent from a consideration of the ensuing description and drawings.
A proxy application that transparently integrates into a messaging environment, monitors both incoming and outgoing messages, analyzes monitored messages, sends commands to a peripheral device and monitors activity of the same device, inserts additional messages into the messaging environment, and is configurable.
The inventors hereby define the following terms, and these definitions apply both in the written specification and the claims:
The word “any,” when used in conjunction with the word “plurality” means any number between 0 and the entirety of the plurality, specifically allowing 0 (none) and the entirety (all) as possibilities.
A “command” is any instruction that can be communicated with a device.
A “client platform” can be a computer, a cellular phone, or any other electronic instrument upon which a “messaging client” may reside.
A “configuration means” is any process by which a person may view or modify the values associated with configuration parameters.
A “device” is any electronic instrument that can produce sensory output (i.e., anything that a person can perceive using eyes, ears, nose, touch, etc.) in response to electronic commands. Visual output includes physical motion.
A “message” is any digital data that is transferred to a messaging client.
A “messaging client” is software that a person uses to transmit, receive, compose, read, and manage digital messages. A “messaging client” communicates with other people over a “messaging system.”
A “messaging system” allows people to communicate using digital messages. A messaging system itself can also send messages on its own behalf: for example, to provide status information to users. Examples of “messaging systems” include AOL Instant Messenger, Yahoo! Messenger, Microsoft MSN Messenger, Cerulean Studios Trillian, Jabber Messenger, email, and SMS text messaging.
The word “or” is used in the broadest possible sense. Whenever the word “or” is used, this includes the possibilities of none, all, and any possibility in between the two extremes.
The adjective “transparent” means that the application of the current invention can be installed and operated without modification to the code of the local messaging client. In addition, no changes are necessary to the messaging system or any other messaging clients.
Referring to
In a normal messaging environment, the Messaging Client 200 communicates directly with the Messaging System 102 to send and receive messages. The present invention inserts Proxy Application 201 in the communication path. The Proxy Application 201 can be a standard proxy through which the Messaging Client 200 can be explicitly configured to communicate. In this case the Proxy Application 201 uses a standard protocol. Standard protocols include, but are not limited to, HTTP, HTTPS, SOCKS 4, and SOCKS 5. In this case, the Messaging Client 200 directs all messages to the Proxy Application 201, and the proxy forwards the messages without modification to the Messaging System 102. Such a proxy is typically required for allowing communications in the presence of network firewalls. Data sent from the Messaging System 102 back to the Messaging Client 200 is also transmitted via the Proxy Application 201. As an alternative to using standard proxy configuration mechanisms, the Proxy Application 201 can use support in the client platform network protocol stack that allows it to intercept and optionally modify data between the Messaging Client 200 and Messaging System 102. In this case the Proxy Application 201 does not rely on standard proxy protocols such as HTTP or SOCKS, and would not require explicit configuration in the Messaging Client 200. The Proxy Application 201 can be used with both connection oriented protocols (such as TCP) and connectionless protocols (such as UDP).
In the present invention, the Proxy Application 201 can forward messages between the Messaging Client 200 and Messaging System 102 without modification. In such cases, the Messaging Client 200 and Messaging System 102 function as if the Proxy Application 201 were not present. The client-to-proxy data 210 is functionally equivalent to the proxy-to-system data 111, and the system-to-proxy data 111 is functionally equivalent to the proxy-to-client data 210.
The Proxy Application 201 of the present invention, however, can analyze the client-to-proxy data 210 or the system-to-proxy data 111 and use the results of such analysis to perform specific actions. Such actions include, but are not limited to, modification of the proxy-to-system data 111 from the original client-to-proxy data 210, modification of the proxy-to-client data 210 from the original system-to-proxy data 111, or interaction with a Device 101.
As depicted in
As noted,
Plugins can interact with non-messaging information systems either to create new events or to affect processing of existing events. Example non-messaging information includes, but is not limited to: current time, type/number/configuration of attached peripheral device(s), email and calendar data (examples of Other Internal Information 203 in
Plugins can maintain state between received events. For example, a plugin could be configured to trigger Device 101 actions only after a specific number of messages have been received with specific message content and within a specific period of time.
In addition, plugins can modify the data content of an event, which can affect the processing of other plugins that have registered interest in the same event type but at a lower priority. As an example, a plugin could register interest in all client-to-system message events and modify all received events by encrypting the message content. A corresponding plugin could register interest in system-to-client message events and perform the corresponding message decryption. A plugin can also request that the Event Distributor 301 cease further distribution of an event after the current plugin has completed.
While the above sections describe the more complex capabilities of plugins, the Proxy Application 201 can be configured more simply to pass messages between Messaging Client 200 and Messaging System 102 without modification. In
While the event processing and plugin design allow for complex processing and manipulation of messages and usage of other information sources, the present invention focuses on the ability of plugins to interact with Devices 101. A Device 101 can connect to the client platform via any standard or proprietary interface, including, but not limited to, serial (RS-232), parallel (Centronics), USB, Bluetooth, and 802.11 WiFi. A Device 101 can provide both input and output sensory capabilities. Output mechanisms may include, but are not limited to, LEDs, LCD displays, audio speakers, actuators, and motors. Input mechanisms include, but are not limited to, buttons, audio/video input, and various sensors such as tilt, light, and motion.
For example, a simple Device 101 connected to the Proxy Application 201 could take the form of a children's doll. Output capabilities of the doll could include an audio speaker and actuators to manipulate the doll's facial expression and appendages. Input capabilities of the doll could include tilt and light sensors. In an Instant Messaging (IM) environment, example interactions between the Proxy Application 201 plugins, the Messaging Client 200, the Messaging System 102, and the doll (Device 101) could include: notification of IM buddy online/offline status causes doll to wave hand and output a greeting/farewell audio clip; happy/sad emoticons received in IM messages change doll's facial expression and output a corresponding audio clip, such as laugher or crying; tilting the doll horizontally or turning off ambient lights cause an offline IM status to be sent to the Messaging System on behalf of the local client; IM messages received when the local IM status is offline (due to tilt/light sensors) are responded to automatically with a “user is sleeping” message similar to email “out-of-office” auto-responses.
An Internal Configuration Means 204 can be a software application, a browser-based application, a text editor, or any other means by which a user can view the configuration parameters and view or modify the values associated with the configuration parameters.
A useful attribute for remote communication is the ability of local and remote users to share a common mental representation of what is being communicated. Because the configuration of the Proxy Application 201 affects the presentation of messages, it is desirable to allow remote users to view the local Proxy Configuration 202. The present invention accomplishes this by providing for External Configuration Means 104, which can simulate on a remote platform the presentation of any messages sent to the local Messaging Client 200. This allows both local and remote users to maintain a common perception of the communications.
External Configuration Means 104 include, but are not limited to, HTTP, file system sharing (such as via NFS), remote Windows Registry access, and direct access via custom protocols. Local Proxy Configuration 202 can be accessed directly by remote clients, or the access can be indirect through intermediate servers. One option for providing remote access to the local Proxy Configuration 202 is by HTTP put requests to a centralized configuration server, which stores the configuration in a database. The database can store configuration data for multiple clients. The configuration server provides access to remote Proxy Configurations 202 via HTTP get requests. The configuration server can secure the configuration data so that users are required to log in and are only allowed to view the configuration data as authorized. The configuration server can also allow authorized users to modify configuration data, so that remote users could control how their messages are presented to another messaging user.
In an alternative embodiment, rather than inserting a proxy between the messaging client and the messaging system, the proxy application can function solely by monitoring the messages that are transmitted to or from the messaging client, and sending messages to a device based on the messages.