The disclosure relates generally to electronic messaging applications, and more specifically to providing task assistance.
Electronic messaging applications, such as email, convey various types of information to and from a user. Some messages include a task that the user must perform. As such, many messaging applications track not only messages received by or sent by the user but also tasks that the user is to perform. Conventional methods of entering tasks (e.g., entering reminders to perform tasks) within a messaging application fail to take advantage of information that is already known about the user and therefore do not provide optimum user interfaces for task assistance.
Disclosed implementations address the above deficiencies and other problems associated with task assistance. In accordance with some implementations, a method of task assistance is executed at a computing device having one or more processors and memory storing one or more programs configured for execution by the one or more processors. The method includes receiving, from a user, a task description corresponding to an electronic message. The method further includes identifying, based on the task description, a task template from among a plurality of predefined task templates. The identified task template includes one or more first task parameters. The method further includes determining values for the one or more first task parameters based on contents of the electronic message. The method further includes presenting, to the user for user selection, a set of options for completing a task corresponding to the received task description. At least a first subset of the options in the set of options is based upon the one or more first task parameters.
In some implementations, determining values for the one or more first task parameters based on contents of the electronic message includes constructing a query using the identified task template and the values for the one or more first task parameters; and using the query to retrieve the first subset of the options in the set of options. In some implementations, the query is a parameterized universal resource locator (URL) and each determined value is used as a parameter in the URL.
In some implementations, identifying the task template based on the task description includes determining that the task template matches the task description. In some implementations, the task description is for a task that is assigned to the corresponding electronic message.
In some implementations, the electronic message and the task description are received from the user while the user is composing the electronic message. Alternatively, in some implementations, the user is a recipient of the electronic message and the task description is entered by the user in response to the user receiving the electronic message.
In some implementations, the method further comprises, receiving user selection of a first option from the set of options and completing the task according to the first option.
In some implementations, the task description is a character string.
In some implementations, at least a second subset of the options in the set of options is based upon the task description but not the contents of the electronic message. In some implementations, the set of options are presented in an order determined in accordance with a weight assigned to each option in the set of options. The options in the first subset of the options are weighted so as to position the options in the first subset of the options more prominently than the options in the second subset of the options.
In some implementations, the identified task template includes one or more second task parameters. The method further includes determining values for the one or more second task parameters based on stored personal information. In some implementations, the stored personal information comprises a user profile. In some implementations, the stored personal information includes a home location. In some implementations, the stored personal information includes a current geographic location of the user. In some implementations, the stored personal information includes a log of previous task assistance selections by the user.
Another aspect of the present disclosure provides a computing device comprising one or more processors, memory, and one or more programs stored in the memory. The one or more programs are configured for execution by the one or more processors. The one or more programs comprise instructions for receiving, from a user, a task description corresponding to an electronic message. The one or more programs further comprise instructions for identifying, based on the task description, a task template from among a plurality of predefined task templates. The identified task template includes one or more first task parameters. The one or more programs further comprise instructions for determining values for the one or more first task parameters based on contents of the electronic message. The one or more programs further comprise instructions for presenting, to the user for user selection, a set of options for completing a task corresponding to the received task description. At least a first subset of the options in the set of options is based upon the one or more first task parameters.
Another aspect of the present disclosure provides a non-transitory computer readable storage medium storing one or more programs configured for execution by a computing device having one or more processors and memory. The one or more programs comprise instructions for receiving, from a user, a task description corresponding to an electronic message. The one or more programs further comprise instructions for identifying, based on the task description, a task template from among a plurality of predefined task templates. The identified task template includes one or more first task parameters. The one or more programs further comprise instructions for determining values for the one or more first task parameters based on contents of the electronic message. The one or more programs further comprise instructions for presenting, to the user for user selection, a set of options for completing a task corresponding to the received task description. At least a first subset of the options in the set of options is based upon the one or more first task parameters.
For a better understanding of the aforementioned implementations of the invention as well as additional implementations thereof, reference should be made to the Description of Implementations below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
Reference will now be made in detail to implementations, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that the present invention may be practiced without these specific details.
According to the systems and methods described herein, users have the ability to add a task to an electronic message such as an email, which describes what action the user needs to take in relation to that email. When a user is typing in a task description for the task, the user is provided an auto-complete user interface. This systems and methods described herein further provide for auto-complete user interfaces that use biasing data to bias the auto-complete suggestions based on entities extracted from the email (e.g. contacts who are on the email thread, or entities mentioned in the email such as businesses, flights, account numbers, locations, etc.). This biasing data is used to increase the weight of those auto-complete suggestions that contain entities mentioned in the email (e.g., relative to those auto-complete suggestions that do not contain entities mentioned in the email).
In some implementations, the server system 110 consists of a single server 300. More commonly, the server system 110 includes a plurality of servers 300. In some implementations, the servers 300 are connected by an internal communication network of bus 122. The server system 110 includes one or more web servers 112, which receive requests from users (e.g., from client devices 102) and return appropriate information, resources, links, and so on. In some implementations, the server system 110 includes one or more application servers 114, which provide various applications, such as a messaging application 106. The server system 110 typically includes one or more databases 116, which store information such as web pages, a user list 118, and various user information 120 (e.g., user names and encrypted passwords, user preferences, and so on).
In some implementations, the memory 214 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices. In some implementations, memory 214 includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some implementations, the memory 214 includes one or more storage devices remotely located from the CPU(s) 202. The memory 214, or alternately the non-volatile memory device(s) within memory 214, comprises a non-transitory computer readable storage medium. In some implementations, the memory 214, or the computer readable storage medium of memory 214, stores the following programs, modules, and data structures, or a subset thereof:
Each of the above identified executable modules, applications, or sets of procedures may be stored in one or more of the previously mentioned memory devices and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations, the memory 214 may store a subset of the modules and data structures identified above. Furthermore, the memory 214 may store additional modules or data structures not described above.
Although
In some implementations, the memory 314 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices. In some implementations, the memory 314 includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some implementations, the memory 314 includes one or more storage devices remotely located from the CPU(s) 302. The memory 314, or alternately the non-volatile memory device(s) within memory 314, comprises a non-transitory computer readable storage medium. In some implementations, the memory 314, or the computer readable storage medium of memory 314, stores the following programs, modules, and data structures, or a subset thereof:
Each of the above identified elements in
Although
As illustrated in
When affordance 424 is selected, the user interface displays user interface window 428, shown in
The server system receives (502), from a user, a task description corresponding to an electronic message. In some implementations, the task description is received in a messaging application on the user's client device (e.g., the messaging application may be a local application or a web application running through a web browser). In some implementations, the task description is a partial task description, meaning that the user has not yet entered (e.g., submitted) a full task description to the messaging application and/or to the server system (e.g., the user is not finished typing the task description). To that end, in some implementations, the messaging application sends, and the server system receives, partial task descriptions at predefined synchronization intervals (e.g., as the user is entering the task description), such as 0.1 seconds, or whenever the task description changes (e.g., whenever the user enters any character, or alternatively, a special character such as a space).
In some implementations, the task description is for a task. Such a task is sometimes called a reminder, as the messaging application will function to remind the user to perform the task. In some implementations, the task description is for a task that is (504) assigned to the corresponding electronic message. For example, in some implementations, the electronic message and the task description are received (506) from the user while the user is composing the electronic message. In some implementations, the task represents metadata or an attachment for the electronic message. In other words, information about the task (e.g., the what, when, how of the task etc.) is stored, retrieved, or sent as metadata together with the corresponding message. For example,
Alternatively, in some implementations, a task description corresponds to an electronic message even when the task is not assigned to the electronic message. For example, as shown in
Thus, at least three examples are provided for when a task description corresponds to an electronic message: when the server system utilizes the contents of the electronic message to provide one or more auto-complete suggestions, when the electronic message is displayed with a prompt to enter the task description, and when the task description is for a task that is attached to the electronic message (e.g., as metadata).
In some implementations, the task description is (510) a character string.
The server system identifies (512) based on the task description, a task template from among a plurality of predefined task templates. The identified task template includes one or more first task parameters. In some implementations, identifying the task template based on the task description includes determining (514) that the task template matches the task description. For example, certain terms in the task description are, in some implementations, indicators of the task template. For example, as shown in
In some implementations, the plurality of task templates includes task templates for making dinner plans, scheduling appointments, scheduling meetings, booking flights, and so on.
In some implementations, indicators are identifiable as corresponding to structured data, meaning that the server system can identify entities and/or objects corresponding to the indicator. Stated another way, in some implementations, indicators are keywords corresponding to structured data. Names of months, names of cities, dates and times, relative dates (e.g., “tomorrow”) are all examples of indicators that can be related to a well-defined entity or object. For example, the term “tomorrow,” when found in a task description, can be used in conjunction with the current date (e.g., stored on the server system) to determine a value for a date task parameter for the dinner task template (see operation 516).
In some implementations, the server system identifies the task template based on contents of the electronic message. For example, in some implementations, the server system offers auto-complete suggestions even before receiving a task description. Instead, in some implementations, the auto-complete suggestions (e.g., starting with identification of the task template) are based solely on the contents of the electronic message. In some implementations, those auto-complete suggestions are updated and/or replaced based on the task description in accordance with method 500. In some implementations, the task template is identified based on a combination of the task description and the contents of the electronic message.
The server system determines (516) values for the one or more first task parameters based on contents of the electronic message. In some implementations, the contents of the electronic message include the body of the electronic message (e.g., an email body). In some implementations, the contents of the electronic message include attachments to the electronic message, a header of the electronic message, and/or metadata associated with the electronic message. In some implementations, the values are well-defined, identifiable, objects and/entities (e.g., the values are obtained from structured data). Consider, as an example, a task template for dinner plans that includes a location task parameter. The value of the location task parameter for dinner plans could be somebody's home (e.g., “My house”), a restaurant, a public park, etc. In some implementations, the server system stores a list of restaurants and, optionally, information about those restaurants (e.g., hours of operation, food-type, and/or price range). Take, as the example shown in
In some implementations, the identified task template (518) includes one or more second task parameters. In such implementations, the server system determines (520) values for the one or more second task parameters based on stored personal information. In some implementations, the stored personal information comprises (522) a user profile. In some implementations, the stored personal information includes (524) a home location. In some implementations, the stored personal information includes (526) a current geographic location of the user. Consider an example of a task description that begins with the character string “Book flight.” Such a task description may be sufficient to identify a flight booking task template, which includes task parameters such as “Departing Airport” (e.g., a respective second task parameter) and “Destination Airport” (e.g., a respective first task parameter) among others. When the contents of the message body includes the words “to Atlanta,” in some implementations, the server system determines a value of ATL (i.e., the federal aviation administration (FAA) airport code for the Hartsfield-Jackson Atlanta International Airport) for the respective first task parameter, and uses a home location stored in the user's profile to determine that the user is nearest to PHL (i.e., the FAA airport code for the Philadelphia International Airport) and, furthermore, to determine that a value of PHL is appropriate for the respective second task parameter.
In some implementations, the stored personal information includes (528) a log of previous task assistance selections by the user. For example, in some implementations, the server system uses a log of previous flights booked by the user to determine that PHL is the user's most common departing airport, and thus uses PHL for the value of the respective second task parameter.
The server system presents (530), to the user for user selection, a set of options for completing a task corresponding to the received task description. Stated another way, the system presents auto-complete suggestions to the user for completing the task. At least a first subset of the options in the set of options is based upon the one or more first task parameters. In some implementations, the first subset of options includes at least one of the first task parameters. In some implementations, the set of options comprises a plurality of options (e.g., two or more, three or more, etc.). In some implementations, the first subset of options includes information corresponding to the first task parameters. Stated another way, at least some of the auto-complete suggestions are based on the contents of the electronic message, which is used to determine values for the one or more first task parameters as described above. As used herein, “completing” a task is used in the sense of “auto-complete.” For example, in some implementations, completing the task means completing the process of recording (e.g., completely recording) the task within the messaging application, e.g., so that the messaging application can provide reminders. In some implementations, completing the task includes storing a unique record in memory with information about the task. In some implementations, completing the task means updating the task description in accordance with one of the set of options. In contrast, performing the task means the actual doing of what is required by the task (e.g., the act of booking a flight is performance of a task).
In some implementations, determining values for the one or more first task parameters based on contents of the electronic message includes (532): Constructing (534) a query using the identified task template and the values for the one or more first task parameters and using (536) the query to retrieve the first subset of the options in the set of options. In some implementations, the query is (538) a parameterized universal resource locator (URL) and each determined value is used as a parameter in the URL.
In some implementations, at least a second subset of the options in the set of options is (540) based upon the task description but not the contents of the electronic message. In some implementations, the set of options are presented (542) in an order determined in accordance with a weight assigned to each option in the set of options. The options in the first subset of the options are weighted so as to position the options in the first subset of the options more prominently (e.g., higher in the order) than the options in the second subset of the options. Stated another way, the server system choice of which auto-complete suggestions to display is based on a weight associated with each potential auto-complete suggestion (e.g., the server system chooses the three most highly weighted auto-complete suggestion to display). Further, auto-complete suggestions that are based on the contents of the electronic message are up-weighted such that the set of auto-complete suggestions is biased toward those auto-complete suggestions that are based on the contents of the electronic message. More simply put: the presentation of auto-complete suggestions is biased toward auto-complete suggestions that are based on contents of the electronic message. In some implementations, auto-complete suggestions are weighted in accordance with a variety of factors and auto-complete suggestions that are based on electronic message contents are given a predetermined bias (e.g., a fixed offset to their respective weights). Other factors affecting the weight of auto-complete suggestions may include proximity of the user to entities within the auto-complete suggestions and/or factors based on other stored personal information, as described above. For example, when displaying auto-complete suggestions for airports, in some implementations, the auto-complete suggestions are weighted based on the “Departing Airports” proximity to the user.
In some implementations, the server system receives (544) user selection of a first option from the set of options and completes (546) the task according to the first option. In some implementations, the server system sends instructions to the messaging application prompting the user to enter further details about the task.
The terminology used in the description of the invention herein is for the purpose of describing particular implementations only and is not intended to be limiting of the invention. As used in the description of the invention and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, steps, operations, elements, components, and/or groups thereof.
The foregoing description, for purpose of explanation, has been described with reference to specific implementations. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The implementations described herein were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various implementations with various modifications as are suited to the particular use contemplated.