Systems and methods for providing in-band and out-band message processing

A personal messaging agent (220) performs enhanced messaging services. The personal messaging agent (220) includes a user profile (310), a message filter (320), and at least one external helper (330). The user profile (310) stores user preferences for processing messages. The message filter (320) receives messages, performs in-band processing on the messages based on the user preferences, and generates at least one event for triggering out-of-band processing of the messages. The external helpers (330) perform the out-of-band processing of the messages in response to the event(s).

BACKGROUND OF THE INVENTION

A. Field of the Invention

The present invention relates generally to messaging systems and, more particularly, to systems and methods that provide enhanced services for e-mail messages.

B. Description of Related Art

Electronic mail (“e-mail”) is quickly becoming a standard mode of communication. E-mail'popularity can be attributed to the ease with which e-mail messages may be transmitted and the speed with which a transmitted message arrives at its intended destination. For example, to transmit a single e-mail message, the sender typically inputs a message and addresses the message with the recipient's e-mail address. When the message is complete, the sender commands the e-mail software to transmit the message, and the message is then delivered over a network, such as the Internet. The delivered message is quickly received by the recipient via a computer or the like.

FIG. 1is a diagram of a conventional e-mail system100. The e-mail system100includes a message arrival component110, user mailboxes120, message retrieval component130, and e-mail clients140. The message arrival component110connects to a network, such as the Internet, to receive e-mail messages from one or more e-mail senders, using, for example, computer devices. The message arrival component110includes a server112and a local delivery agent114. The server112uses a standard transfer protocol, such as the Simple Mail Transfer Protocol (SMTP), to process the e-mail messages and place them in the appropriate user mailboxes120, typically using the services of a local delivery agent114. The local delivery agent114includes the appropriate software and/or hardware to perform the message delivery.

The user mailboxes120include storage locations of one or more memory devices assigned to particular e-mail recipients. The user mailboxes120typically store e-mail messages for retrieval by the recipients. The message retrieval component130includes a server132that uses a conventional message access protocol, such as Post Office Protocol 3 (POP3) or Internet Message Access Protocol 4 (IMAP4), to retrieve the e-mail messages from the user mailboxes120. The e-mail clients140receive instructions from the e-mail recipients and, via the server132, provide content and state information regarding the messages in the user mailboxes120to the e-mail recipients.

Processing by the e-mail system100typically commences with an e-mail sender using a computer device to construct and transmit an e-mail message. The e-mail message from the sender is encoded as an RFC822/MIME stream and routed through the network, based on its destination address, to a specific domain using a standard message transfer protocol, such as SMTP. Within that domain, the message stream is routed to the specific SMTP server, such as server112, responsible for placing the message in the destination mailbox120. The server112sends the message to the local delivery agent114for storage in the destination mailbox120. The local delivery agent114delivers the message to the destination mailbox120and notifies the server112of the delivery status.

When an e-mail recipient desires to retrieve messages from the destination mailbox120, the recipient uses a computer device to invoke an e-mail client140that instructs the server132to access the destination mailbox120. The server132uses a standard message access protocol, such as POP3 or IMAP4, to open the destination mailbox120and return the content/state information about the message to the e-mail recipient.

Conventional e-mail service providers offer enhanced messaging services that are of value to the user to differentiate themselves from their competitors. Some examples of enhanced messaging features include extracting/blocking unwanted messages or removing unwanted parts of messages; inserting a targeted advertisement (to support low-cost/no-cost mail service); replacing a media file attachment with streaming controls (to reduce download time); notifying the user of the new message (e.g., sending a pager notification, displaying a dialog box, etc.); and redirecting the message to other preferred mail account(s).

Some conventional e-mail providers offer these services by providing an enhanced e-mail client. The enhanced e-mail client, however, is rigid in the sense that it restricts the available services to only those services that the e-mail client was originally designed to provide. Other conventional e-mail providers embed additional functionality into the e-mail message itself, independent of the e-mail client. This approach, however, increases network requirements and costs, both to the provider and the user.

As a result, a need exists for a flexible mechanism to offer enhanced e-mail services without substantially increasing requirements and costs to the provider or the user.

SUMMARY OF THE INVENTION

Systems and methods consistent with the present invention address this need by providing one or more personal messaging agents that intelligently process e-mail messages on behalf of a specific user, independent of the e-mail clients used to retrieve the messages.

In accordance with the purpose of the invention as embodied and broadly described herein, a personal messaging agent performs enhanced messaging services. The personal messaging agent includes a user profile, a message filter, and at least one external helper. The user profile stores user preferences for processing messages. The message filter receives messages, performs in-band processing on the messages based on the user preferences, and generates at least one event for triggering out-of-band processing of the messages. The external helpers perform the out-of-band processing of the messages in response to the event(s).

In another implementation consistent with the present invention, a message arrival system includes a server, multiple personal messaging agents, and a local delivery agent. The server receives message streams from message senders. Each of the message streams may be destined for one or more message recipients. The personal messaging agents receive the message streams from the server, process the message streams based on preferences of the one or more message recipients to create modified message streams, and output the modified message streams. The local delivery agent receives the modified message streams and delivers the modified message streams to mailboxes associated with the message recipients.

In yet another implementation consistent with the present invention, an e-mail system includes a message arrival component and a message retrieval component. The message arrival component includes a server, a personal messaging agent, and a local delivery agent. The server receives an e-mail message from an e-mail sender that is destined for one or more e-mail recipients. The personal messaging agent receives the e-mail message from the server, processes the e-mail message based on preferences of the e-mail recipients to create a processed e-mail message, and outputs the processed e-mail message. The local delivery agent receives the processed e-mail message and places the processed e-mail message in one or more mailboxes associated with the e-mail recipients. The message retrieval system retrieves the processed e-mail message from the mailboxes and delivers the processed e-mail message to the e-mail recipients.

In a further implementation consistent with the present invention, a method for performing personal e-mail services includes storing e-mail processing preferences for one or more e-mail recipients; receiving an e-mail message from an e-mail sender that is destined for one or more of the e-mail recipients; processing the e-mail message based on the e-mail processing preferences; and providing the processed e-mail message for delivery to the e-mail recipients.

In another implementation consistent with the present invention, personal messaging agents provide enhanced messaging services. Each of the personal messaging agents includes a user profile and a message filter. The user profile stores user preferences of a message recipient for processing a message. The message filter receives a message destined for the message recipient, processes the message based on the user preferences to produce a processed message, and delivers the processed message to the message recipient.

DETAILED DESCRIPTION

Systems and methods consistent with the present invention provide a personal messaging agent that permits an e-mail message to be processed based on user-defined preferences. The personal messaging agent may be likened to a personal assistant that is tasked with opening a mail envelope for an individual, tailoring the contents according to the individual's personal preferences, resealing the envelope, placing it in the individual's preferred mailbox, and then notifying the individual of the new message.

Exemplary System

FIG. 2is a diagram of an exemplary system200in which systems and methods consistent with the present invention may be implemented. The system200may include one or more e-mail senders, a network, a message arrival component210, user mailboxes120, a message retrieval component130, e-mail clients140, and one or more e-mail recipients. The message arrival component210may include a server112and a local delivery agent114. As can be seen, the system200may include some of the elements found in the conventional system100, such as the e-mail sender(s), the network, the server112, the local delivery agent114, the user mailboxes120, the message retrieval component130, the e-mail clients140, and the e-mail recipient(s). Accordingly, these elements will not be described further.

The message arrival component210may also include one or more personal messaging agents (PMAs)220connected between the server112and the local delivery agent114to perform enhanced messaging services. To the server112, the PMA220behaves like the local delivery agent114. To the local delivery agent114, the PMA220acts like the server112. This transparency makes it easy to integrate the functionality of the PMA220into any existing e-mail infrastructure. The PMA220may be implemented in software, hardware, or a combination of software and hardware. If implemented in software, the PMA220may be stored within a computer-readable medium. A computer-readable medium may include one or more memory devices.

FIG. 3is a detailed diagram of the PMA220according to an implementation consistent with the present invention. An instance of the PMA220may be created on a per message/per recipient basis (i.e., for each message placed in a specific recipient's mailbox120). For example, a trigger may be generated upon receipt of a new message. The trigger may cause a process to execute that generates an instance of the PMA220.

The PMA220may include a user profile310, a message filter320, and external helpers330. The user profile310may store information regarding personal preferences of an e-mail recipient or user. The personal preferences may determine the way messages are processed by the message filter320and the external helpers330on behalf of the e-mail recipient or user.

The message filter320may parse an incoming message stream, such as an RFC822/MIME stream, inspect the message contents (i.e., the header and body parts), and dynamically modify the message (e.g., extract/insert/replace header fields and/or body parts) based on the user's preferences in the user profile310. For example, the message filter320may extract a media file attachment and replace it with streaming controls or insert a targeted advertisement.

The message filter320may also generate “events” at various stages of message processing to allow the external helpers330to perform additional operations outside the context of the message stream (i.e., out-of-band). For example, after extracting a media file, the message filter320may generate an event that triggers an external helper330to perform any user-requested media translations (e.g., creating a textual transcript of an audio file). Similarly, when a (modified) message is finally placed in the user's mailbox120, the message filter320may generate an event to initiate an external helper330to perform additional message-related processing. Examples include, but are not limited to, notifying the user of the new message (e.g., sending a pager notification, displaying a dialog box on a computer, etc.), redirecting the message to other preferred mail account(s), and automatically generating a customized response to the e-mail sender.

The external helpers330may include extensible mechanisms that allow the PMA220to separate the processing of a message into in-band and out-of-band processing. In-band processing refers to processing that has an impact on the enhanced message stream being produced. Out-of-band processing refers to everything else. For example, consider the replacement of a large audio attachment with streaming media controls in terms of in-band and out-of band processing. To replace an audio attachment, the audio file must be extracted from the message stream, converted to a streaming format, placed on a media server, and replaced with interactive controls in the message stream to allow the user to activate the media stream. Extracting the audio to a media file and replacing it with streaming controls are in-band processing since they directly impact the resulting message stream. Manipulating the file format and interacting with a media server have no impact on the message stream and, therefore, are considered out-of-band processing that can be performed in parallel with the in-band processing or, perhaps, deferred.

Another example of out-of-band processing includes performing cross-media translation (e.g., converting the audio file into a textual transcript). This distinction between in-band and out-of-band processing ensures efficient processing that is not subject to the delays associated with adjunct processing and allows the PMA220to be easily extended, without adversely impacting processing performance.

In addition, an event may be generated when the local delivery agent114returns its status indicating whether the enhanced message was successfully placed in the user's mailbox120. The external helper330for this event can perform many different operations, such as notifying the user of the new message (e.g., sending a pager notification, displaying a dialog box on a computer, etc.), redirecting the message to other preferred mail account(s), and automatically generating a customized response to the e-mail sender.

Exemplary Message Filter

The message filter320plays the central role of examining and possibly enhancing a message stream as it passes between the server112and the local delivery agent114. The message filter320may initiate the local delivery agent114responsible for placing the enhanced message in the user's mailbox120. The message filter320may then process the incoming message stream, generate an enhanced message stream (as well as other output files), and trigger events that initiate external helpers330. To support these operations, the message filter320may include several components.

FIG. 4is a detailed diagram of the message filter320according to an implementation consistent with the present invention. The message filter320may include a message manager410, a stream manager420, and an event manager430. The message manager410is the central component of the message filter320and performs the in-band message recognition/enhancement operations. The stream manager420manages the output streams needed during message processing, including the enhanced message stream to the local delivery agent114as well as any other streams needed to create various output files (e.g., an extracted media file). The event manager430delivers events to the external helpers330.

The message manager410performs the examination and possible modification of the message stream. In some implementations consistent with the present invention, the message manager410does not store a complete representation of the input message in memory. Rather, the message manager410may buffer the smallest possible unit of the message stream until a determination can be made about the disposition of that unit, at which point the results are placed in the output stream. By minimizing the amount of memory required, the message manager410places few demands on the computing/storage resources of the host platform. In order to perform the recognition task, the message manager410creates a collection of support components.

FIG. 5is a detailed diagram of the message manager410according to an implementation consistent with the present invention. The message manager410may include an attribute manager510, a tokenizer520, and message components unit530. The attribute manager510may maintain a hierarchical namespace that contains name value pairs for items, such as user preferences, message fields, and processing state. The attribute manager510may also provide functions for adding/removing hierarchies, searching, adding name value pairs, and retrieving the value for a named item.

The tokenizer520may include a lexical analyzer responsible for reading the incoming message stream and reducing it to a set of tokens. The tokenizer520may assign each token a name and match it with a corresponding value that will be used to reconstruct the enhanced message stream.

The message components unit530may create a number of components that correspond to the structural elements of an e-mail message. Initially, it creates three components that mimic the three major structural elements of any message: a header532, a separator534, and a body536. Each of the components may recognize a specific piece of an e-mail message, tailor it based on user-defined preferences, and then pass the results to the output stream (i.e., the enhanced message stream). The message components unit530may create additional components, such as field, boundary, and body part, as necessary to perform similar functions for other significant sub-components of an e-mail message.

Along with the tokenizer520and the attribute manager510, the message components unit530form a complete parser for e-mail messages. Each of the components identified above provides a common set of functions: Initialize, Recognize, Actions, and End.

The Initialize function may be performed prior to any other function and is responsible for general startup housekeeping relevant to the specific message component. The Initialize function is invoked whenever an attempt to identify that particular type of message component is initiated. The particular message component dictates the types of processing performed. For example, the Initialize function of the body part component may ask the attribute manager510to create a new frame in the name space to ensure that any name/value pairs defined by this body part do not conflict with those from the header or any other body part.

The Recognize function is responsible for identifying that portion of the input message stream that corresponds to the message component. Each message component implements a subset of the message stream grammar. For example, a message header includes one or more fields and each field includes a label and a value. In order to recognize a message header, the Recognize function of the header component532repeatedly invokes the functions of a field component until it encounters something other than a field in the input message stream. All processing that occurs within the Recognize function can be customized based on user preferences. For example, a user preference that large audio attachments be replaced with streaming controls will cause the Recognize function of a body part to redirect its audio content to a file rather than to the resulting output stream.

The Actions function is responsible for taking any semantic actions relevant to the recognized message component. Possible semantic actions include saving information that affects the processing of other message components or applying user preferences to the generated output stream. Continuing the previous example with respect to large audio attachments, the Actions function of a “Content-Transfer-Encoding” field, which identifies the encoding used for the content, saves its value in the attribute manager510so that its encompassing body part can properly recognize and extract the audio content. Then, based on user-defined preferences, the Actions function of the body part component may insert streaming controls into the output stream.

The End function is performed after all other functions and is responsible for cleanly wrapping up any processing necessary for that message component. For example, because of possible transformations that may be applied to a message, the original “Content-Type” field in the message header may not accurately describe the resulting message and, thus, must be adjusted. The End function of the header component532ensures that an appropriate “Content-Type” field is placed in the output stream. Like the other functions, the End function may also apply user preferences. The End function of the body component536may handle the case in which a user authorizes that advertisements be included at the end of a message.

Exemplary Processing

FIG. 6is a flowchart of processing for providing enhanced message services according to an implementation consistent with the present invention. Processing may begin when an e-mail sender creates an e-mail message using, for example, conventional e-mail software. The e-mail software may encode the e-mail message as a message stream, such as an RFC822/MIME steam, and transmit it across the network based on its destination address. The network may route the message stream to a specific domain using a standard message transfer protocol, such as SMTP. Within that domain, a server responsible for placing the message in a destination mailbox, such as the server112, receives the message stream [step610].

The server112processes the message stream to identify the appropriate destination mailbox and sends the message stream to an instance of the PMA220[step620]. The PMA220processes the message stream to create an enhanced message stream based on user preferences [step630].

FIG. 7is a flowchart of processing for creating an enhanced message stream in an implementation consistent with the present invention. The message filter320(FIG. 3) within the PMA220receives the message stream [step710]. The message filter320may parse the message stream [step720]. For example, the message filter320may analyze the message stream to identify different parts of the message, such as the header, separator, and body. The message filter320may then inspect the message contents to possibly determine what fields are included in each of the message parts [step730].

The message filter320may dynamically modify the message based on user preferences [step740]. The message filter320may obtain the user preferences from the user profile310. Based on the user preferences, the message filter320may perform any necessary in-band processing on the message stream, thereby creating an enhanced message stream.

The message filter320may also generate events relating to out-of-band processing of the message stream [step750]. For example, the out-of-band processing may include notifying the e-mail recipient of the new message, performing media translations, such as creating a textual transcript from an audio file, automatically generating a reply message, etc. The external helpers330perform the out-of-band processing in response to the events generated by the message filter320[step760]. In some implementations consistent with the present invention, steps750and760may occur concurrently with step740.

Generally, steps720–740may be described in terms of processing performed by the components of the message filter320.FIG. 8is a flowchart of processing by components of the message filter320according to an implementation consistent with the present invention. The tokenizer520(FIG. 5) may read the message stream [step810] and reduce it to a set of tokens [step820]. The tokenizer520may assign a name to each token and match it with a corresponding value that may be used later to reconstruct the enhanced message stream.

The message components unit530may create a number of components that correspond to the structural elements of the message [step830]. For example, the message components unit530may initially create header532, separator534, and body536components (i.e., three components that correspond to the major structural elements of any message). The message components unit530may create additional components that correspond to other significant sub-components of the message.

Each of the components532–536may recognize a specific portion of the message and modify it based on user preferences [step840]. The modified portions may then be combined to form the enhanced message stream.

Returning toFIG. 6, the PMA220sends the enhanced message stream to the local delivery agent114for delivery to the appropriate destination user mailbox120[step640]. The local delivery agent114may deliver the enhanced message stream to the user mailbox120[step650]. When the local delivery agent114finishes the delivery, the local delivery agent114may notify the PMA220whether the delivery was successful [step660]. The local delivery agent114may make the notification through the use of a status message. The PMA220may, in turn, notify the server112of the success of the message delivery.

Once the enhanced message has been delivered to the user mailbox120, the PMA220may further process the enhanced message based on the user preferences [step670]. For example, the PMA220may notify the user of the new message (e.g., sending a pager notification, displaying a dialog box on a computer, etc.), forward the message to other preferred mail account(s), or automatically generate a customized response to the e-mail sender.

The e-mail recipient may then retrieve the message using an e-mail client140. The e-mail client140may use a conventional message access protocol, such as POP3 or IMAP4, to open the user mailbox120and return the content/state information about the message to the e-mail recipient.

CONCLUSION

Systems and methods consistent with the present invention provide enhanced message services using cost-effective, extensible processing techniques. The processing techniques include, for example, embedding interactive and/or actionable components directly within a message to provide enhanced functionality to a user. The systems and methods separate message modification into in-band and out-of-band processing to achieve efficiency, flexibility, and scalability.

The foregoing description of preferred embodiments of the present invention provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. For example, systems and methods have been described in terms of e-mail messages. In other implementations consistent with the present invention, other types of messages may be used.

Also, it has been described that an instance of the PMA220is created to produce a single customized message stream on a per message/per recipient basis. In other implementations consistent with the present invention, the PMA220operates over multiple message streams for multiple recipients.