The claimed subject matter relates generally to electronic messaging and, more specifically, to providing technology to correct erroneous electronic messages.
More and more communication is becoming electronic. Electronic mail, or “email,” and electronic text messages, or “text messages,” are increasingly being relied upon rather than telephones and regular, or “snail,” mail. Of course, such messages may include more than simply text. For example a sender may attach images to an email or text message. One advantage of email and text messages is the speed at they can be delivered. Regardless of where in the world the sender and receiver may be located, such messages are routinely delivered almost instantaneously.
Currently, there are electronic messaging applications that that enable a sender to place a “hold” on such a message thereby enabling the sender to confirm that the message is correct before the message is sent, or transmitted. However, once a message has been successfully transmitted there are only limited options available to correct an error. Technology exists for retracting an email message that has not been read by a recipient by deleting the message from a corresponding server.
Provided are techniques to enable a sender of an electronic message, or “text message,” to modify, or “edit,” a text message after transmission. In one embodiment, this would result in the edited message being displayed rather than the original message. Another embodiment enables the history of a message to be preserved. For example, an edited message may be displayed in conjunction with an indicia, such as an asterisk or different color text, to indicate that the message has been altered. In this manner, a recipient may be provided the ability to view both the original and modified messages.
Provided are techniques for a user interface (UI) enabling a user to identify and modify previously transmitted electronic message from a first device to a second device; and, responsive to a modification of the previously transmitted outgoing message from the first device, generating a modification message, transmitting the modification message to the second device and, responsive to receiving the modification message on the second device, correlating the modification message to a previously received incoming message on the second device and modifying the previously received incoming message in accordance with information transmitted in conjunction with the modification message to generate a modified message.
This summary is not intended as a comprehensive description of the claimed subject matter but, rather, is intended to provide a brief overview of some of the functionality associated therewith. Other systems, methods, functionality, features and advantages of the claimed subject matter will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description.
A better understanding of the claimed subject matter can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following figures.
The present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
Turning now to the figures,
In EMA 100, computing system 102 and CPU 104 are connected to the Internet 118, which is also connected to Cellular Telephone Service (CTS) 120. In this example, CTS 120 is providing cellular service to two (2) mobile devices, i.e., a mobile telephone 122 and a mobile telephone 124. It will be understood by those with knowledge in the relevant arts that mobile telephones are also typically computing devices and, as such, would also each include a CPU, display and CRSM, which are not shown. Rather than a keyboard and mouse, mobile telephones 122 and 124 may include touch screens 302 and 308, respectively (see
Also coupled to Internet 118 are a tablet device 132, via a wireless connection 134, and a messaging server, or simply “server,” 142. Like mobile telephones 122 and 124, tablet device 132 would have a CPU, display, CRSM and touch screen, none of which are shown. Although not shown, like computer system 102, server 142 would typically include a CPU, monitor, keyboard, mouse and CRSM.
Mobile telephones 122 and 124 and tablet device 132 are examples of devices, in addition to computing system 102, that may implement the claimed subject matter by incorporating logic associated with a EM3 such as EM3116. Messaging server 142 may also incorporate aspects of the claimed subject matter. In the following description, the claimed subject matter is described with respect to electronic messages transmitted between users on computing systems 102 and mobile telephone 122 and between mobile telephones 122 and 124. The disclosed technology is equally applicable to other types of electronic messaging such as emails. In some of the following examples, the disclosed technology is implemented by EM3116 and corresponding EM3s (not shown) on mobile telephones 122 and 124. It should be understood intermediate computing systems such as server 142 would also typically be involved in the implementation of a EMA like EMA 110 in general and in the implementation of the claimed subject matter.
Although in this example, computing system 102, mobile telephones 122 and 124, tablet device 132 and server 142 are communicatively coupled via some combination of Internet 118 and CTS 120, they could also be coupled through any number of communication mediums such as, but not limited to, a local area network (LAN) (not shown), a wide area network (WAN) and a plain ole telephone system (POTS) (not shown). Wireless connections such as 126, 128 and 134 may be cellular, WiFi, Bluetooth or any currently available or yet to be developed medium. Further, it should be noted there are many possible electronic messaging configurations, of which computing EMA 100 is only one simple example.
I/O module 150 handles any communication EM3116 has with other components of EMA 100. Data module 152 is a data repository for information that EM3116 requires during normal operation. Examples of the types of information stored in data Module 152 include user data 162, message data 164, operating logic 166 and operating parameters 168. User data 150 stores the identity and relevant information of specific users that utilize the service provided by the claimed subject matter. Message Data 164 stores information on currently active message threads that may be the subject of modification in accordance with the claimed subject matter. Operating logic 166, in addition to MAM 154, MMM 156 and GUI 158, stores program code to implement functionality of EM3116. Operating parameters 168 includes information on various user preferences that have been set. For example, a user may specify particular display options for modified messages, as described in more detail below.
MAM 154 analyses both incoming and outgoing messages to determine if processing in accordance with the claimed subject matter is necessary. If so, MAM 154 correlates a message to a particular message stream or streams. If not, typical message processing is allowed to proceed. Once MAM 154 has determined that a particular incoming or outgoing message has been marked for processing, MMM 156 performs that processing. For outgoing messages, that may include a determination of specific modifications to a correlated message, including the generation of a file indicating the differences between the original message and the modification, or a “dif” file. With respect to incoming messages, such processing may include a implementation of the modification with respect to the correlated message. GUI component 158 enables users of EM3116 to interact with and to define the desired functionality of EM3116, typically by the setting of parameters in operating parameters 168. Components 150, 152, 154, 156, 158, 162, 164, 166 and 168 are described in more detail below in conjunction with
Process 200 starts in a “Begin Modify Message” block 202 and proceeds immediately to a “Select Message” block 204. During processing associated with block 204, the user, using a user interface on mobile telephone 122, selects a previously transmitted message to be modified (see
During processing associated with a “Generate Dif Message” block 208, MAM 154 (
If the sender then realizes the correct address is “4321” Main Street,” a correction or dif message may be sent as follows:
It should be understood that this is merely one simple example and that more sophisticated schemes may be employed. For example, in an alternative embodiment, the entire edited message may be transmitted in conjunction with metadata indicating that the message is a correction or modification of a previously transmitted message. In that scenario, the original message may either be simply replaced or a dif file generated at the recipient's device.
During processing associated with an “Identify Target Device(s)” block 210, MAM 154 also determines the one of more recipients of the original message to whom the original message was transmitted. For the sake of the following examples, a messages to a user on mobile telephone 124 is assumed. During processing associated with a “Transmit Dif Message” block 212, the dif file generated during processing associated with block 208 is transmitted to the users/devices determined during processing associated with block 210. Typically, the dif message may be transmitted by pressing a Send button (not shown) the mobile telephone. The processing of the dif file on the target device is described below in conjunction with
During processing associated with an “Update database” block 214, the internal state of the electronic messaging system is modified to reflect the modifications and transmittals described above. Finally, during processing associated with an “End Modify Message” block 219, process 200 is complete.
Process 250 starts in a “Begin Receive Message” block 252 and proceeds immediately to a “Receive Message” block 254. During processing associated with block 254 a message transmitted from, in this example, mobile telephone 122 (
If, during processing associated with block 256, a determination is made that the message received during processing associated with block 254 is a dif file, control proceeds to a “Correlate to Existing Message (Msg.)” block 262. During processing associated with block 262, MAM 154 determines the original message stream and message with which the dif message is associated. During processing associated with a “Parse Dif Message” block 262, MAM 154 analyses the message receive during processing associated with block 154 to identify the differences that the user who transmitted the file would like to have implemented, i.e., the edited differences between the originally transmitted file and the modification and/or corrections. (see 206,
During processing associated with an “Original Msg. Read?” block 266, a determination is made as to whether or not the original message has already been read. If so, control proceeds to an “Modify Original Msg.” block 270. During processing associated with block 270, the original message is changed to reflect the editing specified in the dif file received during processing associated with block 254. It should be noted that if the original message has not been read the original user notification that a message has been received is typically sufficient and a new notification is not necessary.
If, during processing associated with block 266 a determination is made that the original message has already been read, control proceeds to an “Update Original Msg.” block 270. During processing associated with block 270, the original message is modified in accordance with the dif file received during processing associated with block 254. In addition, an icon (see 314,
Finally, once the user has been notified during processing associated with block 274 or a original but unread message has been processed during processing associated with block 268, control proceeds to an “End Receive Message” block 279 in which process 250 is complete.
It should be understood that the disclosed technology may be integrated with existing text messaging application and infrastructure, i.e., making user use of network's existing text messaging protocols. Therefore, additional metadata may not need to be added to already-standardized protocols. The claimed subject matter is also designed so that users of older devices that do not include support for editing text messages can still receive updates in a readable format. The text message character set, GSM 03.38 (aka 3GPP 23.038), includes an escape character that renders as a space. (There are other characters that may be used for this purpose; the escape character is used for illustrative purposes.) The same UI elements as the first example are employed. If the user modifies:
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.