The specification relates generally to electronic communications, and specifically to a method, system and apparatus for processing communications.
The use of electronic correspondence has become very common in many industries and in personal affairs. The ease with which such correspondence, such as email, can be generated can result in messages being received at elevated rates, resulting in large volumes of messages to be processed. The volume of correspondence needing to processed can lead to inefficient use of resources in processing it.
Embodiments are described with reference to the following figures, in which:
According to an aspect of the specification, a method of processing messages at a server is provided, the method comprising: storing a plurality of messages in a memory of the server, each message having one of a plurality of thread identifiers; receiving a closing message via a communications interface, the closing message including a first thread identifier and a thread closing instruction; responsive to receiving the closing message, locating each of the plurality of messages having thread identifiers which match the first thread identifier; and updating a status indicator in association with each of the located messages.
According to another aspect of the specification, a non-transitory computer readable medium is provided for storing a plurality of computer-readable instructions executable by a processor for performing the above method.
According to a further aspect of the specification, a server is provided, comprising: a memory; a communications interface; and a processor interconnected with the memory and the communications interface; the processor configured to store a plurality of messages in the memory, each message having one of a plurality of thread identifiers; the processor further configured to receive a closing message via the communications interface, the message including a first thread identifier and a thread closing instruction; the processor further configured, responsive to receiving the closing message, to locate each of the plurality of messages having thread identifiers which match the first thread identifier; and the processor further configured to update a status indicator in association with each of the located messages.
Electronic communication device 104 includes a processor 108 interconnected with a non-transitory computer readable storage medium such as a memory 112. Memory 112 can be any suitable combination of volatile (e.g. Random Access Memory (“RAM”)) and non-volatile (e.g. read only memory (“ROM”), Electrically Erasable Programmable Read Only Memory (“EEPROM”), flash memory, magnetic computer storage device, or optical disc) memory. In the present example, memory 112 includes both a volatile memory and a non-volatile memory. Other types of non-transitory computer readable storage media are also contemplated, such as compact discs (CD-ROM, CD-RW) and digital video discs (DVD).
Electronic communication device 104 also includes one or more input devices interconnected with processor 108. Such input devices are configured to receive input and provide data representative of such input to processor 108. Input devices can include, for example, a keypad 116 and a microphone 118. Thus, keypad 116 can receive input in the form of the depression of one or more keys, and can then provide data representative of such input to processor 108. The data provided to processor 108 can be, for example, an American Standard Code for Information Interchange (ASCII) value for each of the depressed keys. Keypad 116 can be a full QWERTY keypad, a reduced QWERTY keypad or any other suitable arrangement of keys. Microphone 118 can also receive input in the form of sound waves, and transmit data representative of such input to processor 108.
In some examples, electronic communication device 104 can include additional input devices in the form of one or more touch screens, buttons, light sensors and the like (not shown). More generally, any suitable combination of the above-mentioned input devices can be incorporated into electronic communication device 104.
Electronic communication device 104 further includes one or more output devices. The output devices of electronic communication device 104 include a display 120. Display 120 includes display circuitry 124 controllable by processor 108 for generating interfaces which include representations of data maintained in memory 112. Display 120 includes a flat panel display comprising any one of, or any suitable combination of, a Liquid Crystal Display (LCD), a plasma display, an Organic Light Emitting Diode (OLED) display, and the like. Circuitry 124 can thus include any suitable combination of display buffers, transistors, LCD cells, plasma cells, phosphors, LEDs and the like. When the input devices of electronic communication device 104 include a touch screen input device, the touch screen (not shown) can be integrated with display 120, though it is contemplated that the touch screen can also be provided separately from display 120.
The output devices of electronic communication device 104 can also include a speaker 128 interconnected with processor 108. Additional output devices are also contemplated, including, for example, a light-emitting indicator (not shown) in the form of an LED, and a motor or other mechanical output device (not shown) for causing electronic communication device 104 to vibrate. In general, electronic communication device 104 can include any suitable combination of the above-mentioned output devices, and may also include other output devices.
Electronic communication device 104 also includes a communications interface 132 interconnected with processor 108. Communications interface 132 allows electronic communication device 104 to communicate with other computing devices via a link 136 and a network 140. Network 140 can include any suitable combination of wired and/or wireless networks, including but not limited to a Wide Area Network (WAN) such as the Internet, a Local Area Network (LAN), cell phone networks, WiFi networks, WiMax networks and the like. Link 136 is compatible with network 140. In particular, link 136 can be a wireless link based on any of the Global System for Mobile communications (GSM), General Packet Radio Service (GPRS), Enhanced Data rates for GSM Evolution (EDGE), third and fourth-generation mobile communication system (3G and 4G), Institute of Electrical and Electronic Engineers (IEEE) 802.11 (WiFi) or other wireless protocols or standards. Link 136 can also include any base stations and backhaul links necessary to connect electronic communication device 104 to network 140.
Communications interface 132 of electronic communication device 104 is selected for compatibility with link 136 as well as with network 140. Communications interface 132 thus includes one or more transmitter/receiver assemblies, or radios, and associated circuitry. For example, communications interface 132 can include a first assembly, or radio, for enabling communications over a WiFi network, and a second radio for enabling communications over one or more mobile telephone networks (e.g. 3G networks).
The various components of electronic communication device 104 are contained within a housing (not shown) comprising any suitable combination of materials (e.g. aluminum, plastics, composites and the like). The components of electronic communication device 104 are interconnected via a communication bus (not shown). Electronic communication device 104 can be powered by a battery (not shown) also contained within the housing, though it is contemplated that electronic communication device 104 can also be supplied with electricity by a wired connection to a wall outlet or other power source in addition to or instead of the battery. In other examples, such as where a desktop computer is provided for electronic communication device 104 rather than a hand-held wireless device, certain components need not be contained within the same housing. For example, display 120 can be housed separately from an enclosure housing processor 108 and memory 112. As a further example, keypad 116 can be replaced or supplemented by a keyboard which is housed separately from the enclosure housing processor 108 and memory 112.
System 100 also includes a server 144, which can be based on any known server environment. Server 144 thus includes one or more processors such as a processor 148. Processor 148 is interconnected with a non-transitory computer-readable storage medium, such as a memory 152. Memory 152 can be any suitable combination of volatile (e.g. Random Access Memory (“RAM”)) and non-volatile (e.g. read only memory (“ROM”), Electrically Erasable Programmable Read Only Memory (“EEPROM”), flash memory, magnetic computer storage device, or optical disc) memory. Server 144 also includes one or more communications interfaces, such as a communications interface 156, for interconnecting server 144 with network 140 via a link 160. In the present embodiment, link 160 is a wired link, and communications interface 156 is a network interface controller (NIC) which enables communications based on the Ethernet standard. It is contemplated, however, that link 160 can be any suitable combination of wired and wireless links, and that the nature of communications interface 156 can be varied according to the nature of link 160.
Server 144 can be controlled by way of input and output devices (not shown) such as a keyboard, a mouse and a display. Such input and output devices can be co-located with server 144 and connected with processor 148 via local connections (e.g. Universal Serial Bus (USB)). In other embodiments, the input and output devices can be located at a terminal (not shown) remote from server 144 and connected to server 144 via network 140 and link 160. In some embodiments, both local input devices and a remote terminal can be present, and server 144 can be controlled via either the local input devices or the remote terminal, as desired.
System 100 can also include additional electronic communication devices, such as another hand-held wireless communication device 164 and a desktop computer 168, each interconnected with network 140 via respective links. It is contemplated that any number of such additional electronic communication devices may be present. Further, it is contemplated that system 100 can include any number of other servers and the like in addition to server 144.
Electronic communication device 104 can send and receive communications to and from other electronic communication devices, including handheld 164 and desktop 168. Such communications can include messages such as email messages, Short Message Service (SMS) messages, Multimedia Messaging Service (MMS) messages, and the like. To that end, electronic communication device 104 stores a messaging application 172 in memory 112. Messaging application 172 comprises a plurality of computer-readable instructions which are executable by processor 108. Processor 108 is configured, via execution of the instructions of messaging application 172, to carry out various functions related to the processing of messages at electronic communication device 104. Electronic communication device 104 also stores a message database 174 in memory 112. Message database 174 is used by electronic communication device 104 to store messages received from other communication devices (e.g. handheld 164 and desktop 168) and messages sent to such other communication devices.
Electronic communication device 104 can also store and process calendar events, and thus includes a calendar application 176 stored in memory 112. Calendar application 176 comprises a plurality of computer-readable instructions which are executable by processor 108 for causing processor 108 to carry out various functions related to the processing of calendar events. Electronic communication device 104 also stores a calendar database 178 for storing data defining calendar events. Further discussion of applications 172 and 176, as well as databases 174 and 178, will be provided below. It is contemplated that in some examples, applications 172 and 176 can be merged as a single communications application, and that databases 174 and 178 can also be merged into a single database.
Server 144 maintains and processes a communications account associated with electronic communication device 104. Thus, server 144 stores a database 180 in memory 152. Database 180 can contain both messages and calendar events in connection with the communications account. Thus, database 180 is synchronized with databases 174 and 178 in any suitable manner over links 160 and 136, via network 140. It is contemplated that server 144 can also maintain communications accounts associated with other electronic communication devices, such as handheld 164 and desktop 168. Thus, in the present example, server 144 also stores databases 182 and 183 in memory 152. Database 182 can be a repository of messages and calendar events associated with handheld 164, while database 183 can be a repository of messages and calendar events associated with desktop 168. Server 144 also stores a server application 184 in memory 152, comprising a plurality of computer-readable instructions which are executable by processor 148 for performing various functions in connection with the communications accounts maintained by server 144.
Referring to
In the following description of an example performance of method 200, it will be assumed that prior to the performance of block 205, a plurality of email messages have been exchanged between electronic communication device 104, handheld 164 and desktop 168, via server 144. As a result of the exchanges of messages, message database 174 of communication device 104 includes the records shown in
Database 174, as shown in
Each record 300 also includes a status indicator field 316. It is contemplated that numerous other fields can also be included in database 174, such as the message contents (also referred to as the message body), a timestamp indicating when the message was received, and the like. Such additional fields are contemplated, but not shown in
Status indicator field 316 contains a status indicator for a record 300 indicating whether the message defined by the record is considered to have been accessed by processor 108 for generation of the message content on display 120 via execution of messaging application 172. If the status indicator 316 is “read” (or any suitable alternative value, such as the value “1”), the message is considered to have been accessed for generation of the message content on display 120. If the status indicator 316 is “unread” (or any suitable alternative value, such as the value “0”), the message is considered not to have been accessed for generation of the message content on display 120. As will be discussed below in further detail, it is not necessary for the message to have actually been accessed for generation on display 120 in order for the status indicator 316 of that message to be “read”.
Status indicator 316 affects the execution of messaging application 172 in various ways. Referring briefly to
More generally, processor 108 can be configured to generate the message list in such a way that distinguishes between read and unread messages. If input data is received (for example, from keypad 116) indicating a selection of interface element 404, processor 108 can be configured to generate another interface on display 120, including the contents of the message defined by record 300-2. Thereafter, processor 108 can be configured to update the status indicator 316 of record 300-2 to “read”.
Processor 108 can also be configured, via execution of messaging application 172, to archive messages in database 174. Archiving a message results in the message no longer being synchronized with database 180. For example, archiving can involve removing the message from database 174 to be stored in a different database, whether in memory 112 or in the memory of a different electronic communication device. Processor 108 can also be configured to automatically archive message records of at least a predetermined age, when the status indicators 316 of those records indicate that they are read. Processor 108 can be configured not to archive records with “unread” status indicators.
Returning to
Beginning at block 205, server 144 is configured to maintain at least one message record in memory 152. In particular, the at least one message record is stored in database 180. Thus, in the present example performance of method 200, database 180 contains a plurality of message records corresponding to records 300 as shown in
Proceeding to block 205, processor 148 is configured to receive a closing instruction via communications interface 156. The closing instruction is received at communications interface 156 over link 160, and can be originated from any one of electronic communication device 104, handheld 164 and desktop 168. The closing instruction is a message that includes a thread identifier and causes server 144 to “close” the identified thread, as will be discussed in greater detail below. The thread identifier can be, for example, all or a portion of the subject of a message thread. The generation of a closing instruction will now be discussed in connection with
Referring to
Upon selection of thread closing option 504, processor 108 can be configured to generate a thread closing instruction and transmit the thread closing instruction to server 144. The thread closing instruction can have any suitable format. For example, the thread closing instruction can be an email message addressed to all “members” of the thread (that is, all email addresses which have sent or received messages in the thread) and including one or more supplemental header fields for causing processor 148 to close the thread. When the closing instruction is such an email, the body of the email can include an indication that the thread is to be closed, so as to discourage further emails from being sent in connection with the thread. The closing instruction also includes a thread identifier. The thread identifier can be all or a portion of the subject line of the selected message (that is, the message defined by record 300-1). For example, processor 108 can be configured to identify and remove any leading “RE:” or “FW:” flags from the subject line as contained in subject field 312 of record 300-1 and to use the resulting string as a thread identifier.
Once the closing instruction has been generated by processor 108, processor 108 is configured to control communications interface 132 to transmit the closing instruction to server 144 via link 136.
Returning to
Proceeding to block 220, processor 148 is configured to update the status indicator 316 of each message located at block 215 to “read” (or, as mentioned earlier, any other suitable value which indicates that the message is read, such as the value “1”). As a result of the synchronization of databases 180, 182 and 183 mentioned above, the performance of block 220 will result in the updating of status indicators 316 at electronic device 104, handheld 164 and desktop 168. For example, turning to
It is contemplated that in some examples, when performing blocks 215 and 220, processor 148 can be configured to locate only messages having a thread identifier which matches the thread identifier of the closing instruction and having an “unread” status indicator.
Referring now to
Blocks 705 and 710 are performed as described above. At block 712, processor 148 is configured to determine whether the originator of the closing instruction received at block 710 is authorized to close the thread. Thus, in the present example performance of method 700, processor 148 is configured to determine whether electronic communication device 104 is authorized to close the thread “Project XYZ”. To perform block 712, server 144 can maintain a list in memory 152 of identifiers of electronic communication devices which are authorized to close threads. The list of authorized devices can be modified at server 144, for example via the terminal mentioned earlier. The performance of block 712 can therefore involve determining whether an originator identifier included in the closing instruction (for example, the address “104@acme.com”) is present in the list. In other examples, each one of databases 180, 182 and 183 can be stored along with an authorization level indicating whether closing instructions received from the device associated with each database are to be authorized.
If the determination at block 712 is negative, the performance of method 700 proceeds at block 713, at which server 144 is configured to deny the closing of the thread. Processor 148 is thus configured to discard the closing instruction, and can also be configured to transmit a message to the originator of the closing instruction (electronic communication device 104, in the present example) informing the originator that the thread has not been closed.
If, on the other hand, the determination at block 712 is affirmative, the performance of method 700 proceeds to block 715. It will be assumed, for the present example performance of method 700, that electronic communication device 104 is authorized to close threads. Thus, server 144 is configured to perform block 715 following a “yes” determination at block 712. Blocks 715 and 720 are performed as described above in connection with blocks 215 and 220 respectively, with the exception that at block 715 server 144 is configured to locate only messages with the thread identifier in the closing instruction and account identifiers specified in the closing instruction. The closing instruction can include one or more electronic communication device identifiers, such as email addresses or other account identifiers, as will be described below.
Turning to
The interface shown in
Returning to
Following the performance of block 720, the performance of method 700 proceeds to block 725, at which processor 148 is configured to transmit one or more calendar invitations based on the closing instruction received at block 710. As seen in
Following the performance of block 725, the performance of method 700 proceeds to block 730, at which processor 148 is configured to generate and transmit one or more summary messages. The generation of a summary message can include determining the number of messages in the thread, for example by traversing databases 180, 182 and 183 to determine a count of unique messages having the thread identifier. Some messages may have been sent to multiple accounts and may therefore appear in multiple databases. Therefore, uniqueness can be determined, for example, by inspecting the content of messages, such that a message with identical content appearing in both databases 180 and 182 is not counted twice. The generation of a summary message by processor 148 can also include the automated generation of a subject including the thread identifier and a message body stating the number of messages in the thread, and stating that the thread has been closed. If calendar event invitations were transmitted at block 725, the summary message body can also include some or all of the calendar event data.
The performance of block 730 also includes generating a list of recipient accounts for the summary message. In the present example, processor 148 is configured to select every address named throughout the thread (that is, all members of the thread) for the list of recipients. In other embodiments, the closing instruction itself can specify recipients for the summary message.
The performance of method 700 concludes with the transmission of the summary message to the identified recipients. It will now be understood that transmitting the summary message can include copying the summary message into one of databases 180, 182 and 183 when the recipient is an account maintained by server 144, such as those associated with electronic communication device 104, handheld 164 and desktop 168.
Those skilled in the art will appreciate that in some embodiments, the functionality of any of applications 172, 176 and 184 mentioned above may be implemented using pre-programmed hardware or firmware elements (e.g., application specific integrated circuits (ASICs), electrically erasable programmable read-only memories (EEPROMs), etc.), or other related components.
It is contemplated that variations can be made to the above-described methods and apparatuses. In some examples, processor 148 of server 144 can be configured to perform part or all of any combination of blocks 712, 715, 725 and 730 substantially automatically, without instruction by the sender of the closing instruction received at block 710. In such examples, server 144 can maintain data defining an organizational hierarchy of the members of a thread in memory 152. Processor 148 can be configured to determine whether the sender of the closing instruction is authorized to close the thread by determining the level in the hierarchy at which the sender is located. As another example, processor 148 can be configured to authorize the closing instruction so long as the sender is no more than a certain number of levels below the level of the highest member of the thread. With respect to the performance of block 715, rather than relying on the contents of the closing instruction, processor 148 can be configured to automatically select the sender of the closing instruction and the thread member having the highest level in the hierarchy for updating status indicators. Processor 148 can also be configured to select invitees for calendar event invitations automatically based on the hierarchy.
Persons skilled in the art will appreciate that there are yet more alternative implementations and modifications possible for implementing the embodiments, and that the above implementations and examples are only illustrations of one or more embodiments. The scope, therefore, is only to be limited by the claims appended hereto.