Many telephone users maintain one or more lists of people whom they call. In general, this has been a manual task that is tedious to accomplish. Some contemporary telephones maintain a log/call history, but there is a limited number of calls maintained, typically corresponding to the most recent outgoing and incoming calls. For example, an arbitrary history window is typically specified by the manufacturer. As a result, a user is not able to find a call made in the last month, for example, as soon as there are enough calls made since that time to occupy the overall history window. Further, in some telephones, only the number is logged, not the name of the caller (or the name is unknown).
Moreover, many telephone users have a number of telephones, including a work telephone, home telephone and mobile telephone. Each of these may have its own call history data, whereby a user cannot use his or her work telephone's call history while at home, for example, or use his or her home telephone's call history while using his or her mobile telephone while away from home.
This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards a technology by which telephone-related data for a user from a plurality of sources is aggregated and may then be used to assist the user with a subsequent telephone operation, such as making a telephone call. For example, aggregating the telephone-related data may combine call history data corresponding to a landline telephone, a mobile telephone and/or an office telephone of the user.
The telephone-related data may be processed based on frequency and call pattern data to establish which telephone number the user is likely trying to connect to in an outgoing call. The user may access the telephone-related data via voice commands input at one of the user's telephones, or by receiving a visible list of at least part of the telephone-related data. For example, the user may select a call recipient from among the telephone-related data by voice command or by selecting from the visible list. The call may then be automatically dialed.
In one example implementation, an aggregation service collects the telephone-related data corresponding to a user to maintain a call history for the user built at least in part by the aggregation service from the collected telephone-related data. The service provides an interface set containing at least one interface by which the user accesses the call history to assist in making a telephone call. For example, the interface can be a speech interface or by data signals.
The telephone-related data can be harvested from any number of sources, including a telephone gateway, a mobile telephone, a landline telephone service, a mobile telephone service, an enterprise telephone system or server, a computing device, voice mail data, web page data, electronic message content, instant message content, a contacts list, and/or an information data store. The telephone-related data can be processed to determine corresponding probability data that may be applied to determine a user's intent with respect to making a telephone call to a particular recipient. For example, if the probability is high enough that the user has intended a particular recipient, the call may be automatically placed to that recipient, otherwise the service can communicate (e.g., by speech or a list) likely candidates back to the recipient whereby the user can select the one that was intended.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Various aspects of the technology described herein are generally directed towards aggregating a user's call history regardless of which telephone made or received a call, e.g., on the user's home telephone, work telephone and/or mobile telephone. Further, as will be understood, the call history may be presented as a set of aggregated contacts, in a more intelligent way for people to use.
In one example implementation, a web service is coupled to each of a plurality of user's telephones, and the web service can ordinarily identify the name associated with the number of an incoming or outgoing call on any of those phones. Telephone-related data including the number and typically the name are logged for subsequent access by the user, and may be processed (analyzed and/or organized) probabilistically. In this manner, it is possible for the user to easily find and connect to people by name, without needing to look up someone's phone number in order to talk to that person. In another alternative, an aggregation service is provided that acts in essentially the same way, but need not be coupled through the Internet as a web service. For example, an aggregation service may be provided by a mobile telephone service provider, by a landline telephone service provider, or even implemented on a personal computer or the like, or any combination thereof.
As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and telephony communication in general.
Turning to
Still other example resources in
A data store (or stores) 126 such as available from one or more information services such as search services, yellow page services and so forth that can relate names, business categories, web pages, and/or addresses to telephone numbers is another exemplified resource. As can be readily appreciated, these resources are only examples, and for any given scenario there may be others that are not represented in
In general, the called or received telephone numbers corresponding to multiple called places or incoming calls that may be of interest to the user are collected and tagged (mapped to that specific user) by a harvester component 130 of the aggregation service 102, and maintained in association with that particular user. For example, the call history on the home phone 104 (facilitated by the gateway 106/computing device 112), mobile telephone (when synchronized with the computing device 112), and office telephone 108 (e.g., collected from a Communications Server or via a specific protocol 110 for transferring the call history to the computing device 112 or otherwise) are collected by the harvester component 130 and mapped to the same user, such as via a service-unique identifier associated with that user and each user device.
Once collected, the data from the various sources are analyzed by analyze logic 132, including analysis such as based on each called number's frequency of being called, and its usage pattern. In addition to called and/or incoming telephone number data), the harvester component 130 may collect telephone numbers found in the users' email, instant messages and/or the user's contacts 116. Voice mail content 124 may be tracked by using speech recognition 126 and text processing to identify any telephone numbers (and possibly names) left in a voice mail message. Web pages 114 that the user visited may contain the phone numbers that are of interest to the user. As described below, such numbers are managed automatically and intelligently, making it straightforward for the user to connect to any person or a business in which the user is interested.
Regardless of how implemented, in general, once the data is collected and processed (analyzed and organized), the aggregation service 102 essentially builds a personalized set of contact data or the like for the user. Note that the web service 202 may be shared by many users, with each user/user device identified in some unique way to the service, but in general operates in a similar way for each user. Further, note that the data collection and processing is typically ongoing and dynamic, e.g., as a user calls a new number and/or is called from that number more and more, that number, frequency and calling pattern are used to move that number up in likelihood that the user will be calling it again. Moreover, the aggregation service 102/web service agent 202 may look up related information from the data store or stores 104 as needed, such as for any new incoming or outgoing number, and occasionally (or possibly every time) for a known number to ensure that the related information for that known number is up-to-date.
The user may access the personalized smart call history 134 in any number of ways, including by web page lookup, by dialing a telephone number that provides access, and so forth. The dashed lines in
The aggregated numbers may be organized in various ways, including based on the behavior usage. For example, the more a user calls a number, the higher the probability the user will be seeking to call that number again. A user may intervene if there is a correction needed, or to manually enter contact information.
In one example implementation, the analyzer uses a time-based weight that decays over time, whereby the most recent changes have a higher probability in the event the usage probability is identical (or within a certain acceptable threshold difference). In another example, the probability of manually entered items is generally higher than that of the automatically harvested items. Any number of factors may be considered and the data weighting tuned over time, such as how often a number calls in to the user, how long it has been since the user last communicated with a number, and what the typical interval is. Other factors such as the time of day, day of week, time of year and so forth may be used. In one example, the combination of different sources is done probabilistically in a framework, such as in a Bayes decision framework.
For a visible representation of the call history, the user may request one of a variety of views, such as a usage-based view (e.g., frequency or time) or alphabetic view on the contacts. There is also an option for the user to view automatically harvested numbers separately from any manually created contacts. Any sorting, filtering, grouping and so forth of the data to provide a view may be available in a given implementation.
Step 304 represents aggregating the harvested data with existing information for this user. In this manner, a personal database of telephone-related information is built and updated for this user. As represented in
Step 306 represents an update being needed, such as by time, an event such as a synchronization, an incoming or outgoing call being detected, and so forth. In this example, harvesting (whether full or selective) and aggregating (whether immediately after harvesting or deferred) are repeated as a need for updates is triggered.
Step 406 represents waiting for a user selection of a contact. When made, (assuming not canceled in some other manner), step 408 dials the call using the number corresponding to the contact that was selected. Step 410 represents updating the user's telephone-related information for this call, including the contact/number dialed, any pattern and/or other information relevant to the call, e.g., which telephone device was used to access the service, whether the call was answered, busy, went to voicemail, a date-and-timestamp, the length of the call, number of rings to answer and/or any other information that may help weight this contact/telephone number relative to others in the user's telephone-related information.
Step 506 evaluates whether a match that is found has a high enough probability given various weighting factors (such as calling frequency and pattern, uniqueness of name, user preference data and so forth) to be deemed correctly disambiguated from any other possible candidates. If so, step 506 branches to step 512 to dial the call.
If further disambiguation is needed, step 506 branches to step 508 to obtain user input to assist in determining which of more than one candidate the user intended. Alternatively, step 508 may provide a message such as “please re-speak, recognition was not successful” or another similar prompt. Step 510 waits until it returns to step 504 on a retry, or branches to step 512 to dial the call upon selection of a recognized name being made. Step 514 updates the user's telephone related information, e.g., as generally described above with reference to step 410 of
In this manner, a user's telephone-related information including call histories and telephone contact information from multiple sources are harvested automatically and processed to assist a user in placing a call. Different sources of such information may be widely varied, and may include call histories on different phones, the phone number contained in a user's redial, voice mail, messages, contact data, web page data and so forth.
The telephone-related information may be used to obtain probabilities (e.g., maintained probabilistically in a Bayes decision framework) that are then associated with a user's request to make a telephone call, and help determine an intended recipient's number and thereby provide an improved user experience. In addition to finding an intended recipient's number, maintaining aggregated telephone-related information for a user leads to applications such as voice or other automatic-dialing, call forwarding, call screening, and so forth. The probability data helps in user disambiguation (e.g., via a voice and/or visual user interface), to determine one most probable match or a subset of candidate matches.
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, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, 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, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also 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 may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 610 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 610 and includes both volatile and nonvolatile media, and 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 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 accessed by the computer 610. 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 the any of the above should also be included within the scope of computer-readable media.
The system memory 630 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 631 and random access memory (RAM) 632. A basic input/output system 633 (BIOS), containing the basic routines that help to transfer information between elements within computer 610, such as during start-up, is typically stored in ROM 631. RAM 632 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 620. By way of example, and not limitation,
The computer 610 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, described above and illustrated in
The computer 610 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 680. The remote computer 680 may be a personal computer, 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 610, although only a memory storage device 681 has been illustrated in
When used in a LAN networking environment, the computer 610 is connected to the LAN 671 through a network interface or adapter 670. When used in a WAN networking environment, the computer 610 typically includes a modem 672 or other means for establishing communications over the WAN 673, such as the Internet. The modem 672, which may be internal or external, may be connected to the system bus 621 via the user input interface 660 or other appropriate mechanism. A wireless networking component 674 such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 610, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary subsystem 699 (e.g., for auxiliary display of content) may be connected via the user interface 660 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 699 may be connected to the modem 672 and/or network interface 670 to allow communication between these systems while the main processing unit 620 is in a low power state.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.