Commercially available personal information management and communications programs provide a wealth of features to computer users. Such applications are known to provide an integrated solution for managing and organizing e-mail messages, schedules, tasks, notes, contacts, and other information. The integrated nature of the information and communication management of such applications allows users thereof to manage their information and communicate very efficiently. One example of such an application is sold under the trade designation Microsoft Office Outlook 2003, available from Microsoft Corporation of Redmond, Wash.
Known applications typically allow for management of e-mail, calendar and contact information all from within the same application. These applications can provide advanced categorization and search functionality for these various entities. For example known applications provides a feature where a user can view e-mail and calendar item interaction history. This feature is generally provided by allowing a user to select one or more folders on their local machine to monitor. The application will then provide an event notification when a selected event, such as an item being added or an item being modified, occurs within a monitored folder. When an event is detected, the item is evaluated to determine if it is an item for which the user has selected auto association with a contact. If so, a communications history link is created between the contact and the e-mail or calendar item. Once the e-mail/calendar item is linked to all appropriate contacts, a notification is generated in order to update any dynamic history views that the user may have open.
The features provided by known personal information and communication applications have proven extremely useful. In order to provide more effective use of such applications for multi-user collaboration, some additional features would be helpful. These and other features of embodiments of the present invention are set forth below.
A computing device is configured to provide personal information and communications functions. The computing device includes, among other things, a communication interface, a storage device, and a processor. The communication interface is adapted to pass at least one communication. The storage device is operably coupled to the communication interface, and stores a contact information database relative to at least one contact. The storage device also stores auto-association information relative to the at least one contact. The processor is coupled to the storage device and configured to detect an event relative to the communication. The processor analyzes the communication to ascertain communication contact information. A communication history item is automatically generated when the event is detected and the communication contact information corresponds with information in the contact information database that is indicated as auto-associated by the auto-association information.
While embodiments of the present invention will generally be described with respect to e-mail communications and the communication of calendar items, it is expressly noted that embodiments of the present invention are applicable to any communication that bears an identification (either in electronic form, or in a form that can be effectively digitized) of a sender.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, telephony systems, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention is designed to be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules are located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 110 through input devices such as a keyboard 162, a microphone 163, and a pointing device 161, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
The computer 110 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110. The logical connections depicted in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Memory 204 is implemented as non-volatile electronic memory such as random access memory (RAM) with a battery back-up module (not shown) such that information stored in memory 204 is not lost when the general power to mobile device 200 is shut down. A portion of memory 204 is preferably allocated as addressable memory for program execution, while another portion of memory 204 is preferably used for storage, such as to simulate storage on a disk drive.
Memory 204 includes an operating system 212, application programs 214 as well as an object store 216. During operation, operating system 212 is preferably executed by processor 202 from memory 204. Operating system 212, in one preferred embodiment, is a WINDOWS® CE brand operating system commercially available from Microsoft Corporation. Operating system 212 is preferably designed for mobile devices, and implements database features that can be utilized by applications 214 through a set of exposed application programming interfaces and methods. The objects in object store 216 are maintained by applications 214 and operating system 212, at least partially in response to calls to the exposed application programming interfaces and methods.
Communication interface 208 represents numerous devices and technologies that allow mobile device 200 to send and receive information. The devices include wired and wireless modems, satellite receivers and broadcast tuners to name a few. Mobile device 200 can also be directly connected to a computer to exchange data therewith. In such cases, communication interface 208 can be an infrared transceiver or a serial or parallel communication connection, all of which are capable of transmitting streaming information.
Input/output components 206 include a variety of input devices such as a touch-sensitive screen, buttons, rollers, and a microphone as well as a variety of output devices including an audio generator, a vibrating device, and a display. The devices listed above are by way of example and need not all be present on mobile device 200. In addition, other input/output devices may be attached to or found with mobile device 200 within the scope of the present invention.
In accordance with one broad aspect of embodiments of the present invention, communications such as e-mails and calendar items are automatically associated with business contacts as such communications are sent or received. Then, when a user wishes to view the communication history of a particular contact, the communication history view is dynamically updated without requiring the user to perform complicated or repetitive global searches through the various forms of communication. In accordance with another broad aspect, the automatic association functionality is configurable on a per contact or per e-mail address setting for each user of the system.
The method continues at block 302 where the BCM module of the application determines if the communication is in a monitored folder. For example, Outlook 2003 currently has an “in-box” folder. If incoming e-mail for any contact is to be monitored, the application subscribes to the Outlook event notification for items being added to the “in-box” folder. Then, when an e-mail is received, Outlook provides an event notification to the subscriber that the subscribed event has occurred. If the communication is not in a monitored folder, flow passes to block 304, where the communication is not associated with any contact. If, however, the communication is in a monitored folder, control passes to block 306 where the communication is analyzed to determine communication contact information. For example, in instances where the communication is an e-mail, the e-mail is opened and the addresses in the “to” line, the “from” line and the “cc” line are checked to see who all the potential contacts are who would be touched by the e-mail. These addresses are examples of communication contact information and are used to build a list of senders and recipients. The list is preferably normalized. One form of normalization includes normalizing the e-mail addresses to simple mail transfer protocol (SMTP) form. The normalized list is then used to query a list of contact items (such as business contact or account) that have at least one of matching piece of contact information. Where the communication is an e-mail, the list of e-mail addresses is used to query a list of contact items that have at least one of the e-mail addresses as a value in their e-mail data field(s). This will generate a list of pairs of e-mail address/contact items. At block 308, a loop is performed for each identified contact. Specifically, blocks 310 and 312 or 314 are performed for each pair in the list. At block 310, for a specific contact, the contact is checked to determine if automatic association of the communication is enabled. This can be accomplished by consulting a user-generated list. The list may indicate that a specific contact, or specific sub-contact, is enabled for automatic association. If enabled, block 312 executes, where the contact is marked as a target for association of the communication. A communication history link is then created between the contact and the communication. It is preferable that the history link include a summary of information relative to the communication. If auto-association is not enabled, control passes from block 310 to block 314, where the communication is not associated with the contact.
At block 316, the process is repeated for each contact by returning control to block 308 through line 318, until all contacts have been processed. Once all contacts have been processed, control passes from block 316 to block 320, where history view notifications are generated. On the local machine, generating a notification simply includes providing a notification to the Outlook application that contacts, represented as messaging application programming interface (MAPI) objects, have been updated.
At block 322, all open history views are automatically updated with the latest communications. Thus, if a user has selected the contact Joe Smith for auto-association, and an e-mail arrives from Joe Smith while the user is viewing Joe's communication history, the history view will be updated with the new e-mail.
Generating the notifications in a multi-user environment is somewhat more complex. For multi-user embodiments, change records are inserted into the local machine's shared database, and a polling mechanism on one or more remote machines is used to detect the change records. If the remote machine's polling observes a change record in the shared database, the change record is then converted on the remote machine to a local (for the remote machine) Outlook notification event, corresponding to the change record. In this manner, all history views that correspond to a shared contact, will be updated when a communication for that contact arrives.
One advantageous feature of embodiments of the present invention is the ability to auto-associate different aspects of a contact differently. For example, a given contact may have a plurality of e-mail addresses, and use one e-mail address for the transmission of sensitive materials. In a multi-user environment, it is important that the level of sharing be configurable. Thus, the contacts less sensitive e-mail addresses may be auto-associated and shared, while the sensitive address, while auto-associated, is not shared among users. Accordingly, each user of the Business Contact Manager portion of the personal information and communications software will generate their own list of contacts and/or sub-contact information (such as specific e-mail addresses) for auto-association. Additionally, each user's auto-association list allows that user to configure whether the particular auto-association is shared, and if so, how it is shared among other users. Further, each user can preferably only modify their own auto-association information. This allows for maintaining privacy of communications, where necessary, while providing visibility of communications among multiple users where desired/appropriate. Finally, it is preferred that when the product is first provided to a user, that all contacts are initially set to no auto-association. Thus, a user must affirmatively engage the auto-association features in order to use them.
Although the present invention has been described with reference to particular embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.