The present invention relates in general to providing user interfaces for user control of devices, and in particular to contextual task recommendation and a method for determining user's context and suggesting tasks.
Typical user interfaces for user control of devices such as CE devices (e.g., TV, VCR, DVD player, CD player, etc.) are such that user tasks are not represented in the devices. Instead, a set of device functions are presented to the user and the user selects combinations of these device functions to perform a task. For example, to watch a video tape requires the user to select the input (e.g., tape), rewind the tape and press play on a VCR. As a result, the user cannot simply specify that he/she wishes to ‘watch’ ‘video tape’ to automate the above operations. Users cannot express desired tasks to be performed (e.g., ‘watch’ ‘video tape’), rather users must directly control devices to perform desired functions (e.g., selecting the input, rewinding the tape and pressing play on a VCR).
This is similar to conventional software architecture wherein tasks map into the idea of an application. For example, if a user wants to write a letter, the user runs a word processor that has the appropriate functionality. However, apart from a well known functionality mapping to a well-known name, this expresses little to the user. Another alternative has been to present the user with a set of options in the form of a menu. Several systems allow well-known tasks to be listed in menu options (e.g., spell-check document or instant record on a VCR). However, such systems only provide device functions to the user.
Yet another alternative has been to allow a user to express the task graphically (e.g., using lines to connect together a set of depicted devices to perform a desired task). The problem with this approach is that it does not mask the complexity of using the devices from the user. It simply graphically represents the function selections to the user and asks the user to specify the connections necessary to perform a task.
Yet another alternative has been a system that discovers devices, and thereby the services available in an ad-hoc environment. The system identifies the services that could be aggregated and finally suggests the possible service combinations to the user. While suggesting the aggregated service combinations to the user, the system scores the services based on any user preferences set and execution history for the user and displays the service with the highest score to the user. However, in such a system the services are ranked based on user preferences and execution history without considering the context of the user, which results in scoring the services in a way that does not reflect the user intentions at that particular instant.
The present invention addresses the above shortcomings. In one embodiment the present invention provides a system and method in a network of devices, which ascertains the user's context to suggest the most preferred task for the user to perform. User's context includes his/her location, the content he/she is interested in, the content he/she is allowed to access, the devices which are being used by him/her, and devices he/she is allowed to access. Using this context, the system suggests tasks to the user that are appropriate to that context.
The determination of context and the suggestion of tasks are performed by keeping track of the content and the devices available to the user at any given time. The suggestion of tasks is performed in accordance with certain policies. Further, the user can control the behavior of the system by changing the rules in the policy.
Tasks are in the form of simple sentences that can be easily understood by the user. If, based on certain context, more than one task is possible, the system suggests the task that is most relevant to the user, which is identified through a priority assigned to the task by a Prioritization module.
The system builds the context by correlating time, device information, content information, location information and actions performed by the user. This contextual information is then used to find and suggest tasks to the user resulting in task suggestions that are relevant to the user. Prior art only performs simple scoring based on device/task attributes and does not suggest tasks based on location.
These and other features, aspects and advantages of the present invention will become understood with reference to the following description, appended claims and accompanying figures.
The devices 20 and 30, respectively, can implement the HTTP protocol for communication and protocol there between. Though in the example described herein the HTTP protocol is utilized by the network 10, those skilled in the art will recognize that the present invention is useful with other network communication protocols that utilize the client-server model. An example device 20 can be a VCR, DVD, computer, etc. Further, an example client device 30 can be a TV, computer, etc.
The network 10 further includes at least one InterPlay Controller (IC) 60 that in one aspect ascertains the user's context to suggest the most preferred task for the user to perform. A task comprises pseudo-sentence based representation of activities that can be performed using devices”. For example, if one has a TV and a DVD player then “Play Movie on TV” is a task. The user's context includes e.g. his/her location, the content he/she is interested in and the devices which are being used by him/her. Using this context, the system suggests tasks to the user that are appropriate to that context.
The determination of context and the suggestion of tasks are performed by keeping track of the content and the devices available to the user at any given time. The suggestion of tasks is performed in accordance with certain policies. Further, the user can control the behavior of the system by changing the rules in the policy. If, based on certain context, more than one task is possible, the system suggests the task that is most relevant to the user. The system builds the context by correlating time, device information, content information, location information and actions performed by the user. This contextual information is then used to find and suggest tasks to the user resulting in task suggestions that are relevant to the user. Prior art only performs simple scoring based on device/task attributes and does not suggest tasks or based on user's context.
As described in more detail further below, in one example, the InterPlay Controller 60 suggests tasks to a user by:
In one embodiment of the InterPlay Controller 60, the location of the user is determined indirectly using the location of the device in the network that he/she is using. In general, the user uses a client program (e.g., on a client device 20 or a server device 30) to interact with the InterPlay Controller 60. Using a context finder (context agent) 62, the InterPlay Controller 60 acquires the location of each device (e.g., device 20 or 30) from the device or from a configuration file for devices that cannot provide their location.
The devices/configuration files for the device that runs the user's client program also contain an additional piece of information called a “cookie”. When the user starts the client program, the client program transmits this cookie to the InterPlay Controller 60. The InterPlay Controller 60 matches the cookie provided by the client program with a cookie in the device configuration files. The location of the device whose cookie matches the client cookie is identified as the location of the user. Finally, content meta-data contains the location of the content. The location for the content is determined from the location of the device that generates or stores the content. The location information can also be obtained from sensors such as GPS on the device. Though some consumer electronics (CE) in a home network may not be equipped with location sensors, use of such location sensors are contemplated by the present invention.
Content meta-data comprises information about the content. For example, a music file contains the track name, the artist, the album, the track number, MIME-type, etc. In the present invention, additional meta-data is utilized. For example, the location information is added to the content meta-data. This piece of data allows correlating location of the content with the location of the user.
The Policy Filter 68 allows the system to react to only certain kinds of device and content. For example, whenever new content is added to the system, the CTR 65 receives an event. The policy lets the user specify that he is only interested in certain types of files such as, mp3 files. By stating this in the policy file, the Policy Filter 68 ignores all content other than mp3s. When the Policy Filter 68 receives mp3 files, the Policy Filter 68 starts the cycle of determining a relevant task and suggesting it to the user.
In either event (i.e., new device or new content), before an appropriate “task suggestion” is provided to the user, the Contextual Task Recommender 65 performs a cycle of policy checks where the device name and the content information are inspected for various parameters (e.g., policy rules) (step 110). In one example, a policy rule corresponds to checking a specific piece of device information or content information or both. For instance, the default rule involves checking to determine if the device location or content location is same as the user's location. A rule can be written that specifies the MIME-types of contents that should be handled by the Contextual Task Recommender 65.
The Contextual Task Recommender 65 attempts to find a task when at least one of the following example trigger conditions is satisfied: (1) New device becomes available, (2) New content becomes available. Conditions 1 and 2 may lead to a new task becoming available. Condition 1 always leads to the availability of a new task. Condition 2 may result in the addition of new task if a content corresponding to a new MIME-type is added AND there is at least one device that can render that content.
Referring to the example flowchart in
If no matching task is found, then the Contextual Task Recommender 65 relaxes the query criteria (step 206) and attempts to find a task that uses the newly discovered device (step 208). If a matching task is not found, the Contextual Task Recommender 65 becomes dormant and waits for a trigger condition (step 210). However, if a matching task is found in either steps 204 or 208, then the Contextual Task Recommender 65 proceeds to the next step and attempts to find the appropriate user (client program) to suggest the task (step 212). In step 202 above, if new content is not found, then the process proceeds to step 206.
Referring now to the example flowchart in
If these queries fail then the search criteria is relaxed (step 226) and the Contextual Task Recommender 65 queries the list of available tasks using just the MIME-type (228). In either step 224 or 228, if a match is found then the Contextual Task Recommender (CTR) attempts to find an appropriate user (client program) to suggest the task (in other words CTR identifies all the active users to whom the task is relevant to and suggests it to them) (step 230). If a match is not found, then the Contextual Task Recommender 65 becomes dormant and waits for the next trigger condition (event) (step 232). In step 222 above, if new device is not found, the process proceeds to step 226.
The Task Generation module 70 (
If the Contextual Task Recommender 65 receives the event (i.e., a new device or new content event) before the Task Generation module 70, the Contextual Task Recommender 65 queries the task before it is generated (this is handled by the third case below wherein the Contextual Task Recommender 65 is triggered by new task available event).
The CTR 65 directly receives only new content/device event and indirectly processes a new task event. A task is generated when the Task Generation module 70 receives new device/new content event. The lifecycle of the CTR 65 is triggered by these events. A situation is possible where the CTR 65 may receive these events and query the Task Generation module 70 before the Task Generation module 70 has finished generating the tasks from these very same events. In this case, queries made by the CTR 65 will fail. This situation is handled by a third trigger condition where the CTR 65 tries to find tasks for recommendation when new tasks become available.
In the third case where a new task becomes available, where the Contextual Task Recommender 65 queries the list of available tasks just before the task is generated, routines that correspond to the first and second cases above are executed based on whatever event caused the generation of the new task (i.e., new device available or new content available).
Referring now to the example flowchart in
In one embodiment, the client program, upon receiving the event, composes a pseudo-sentence from the various parts that make-up the task (step 246) (e.g., “Play Movie on TV”; an example of using content information in composing the sentence would be: “Play Lord of the Rings on the TV”). If content-id is part of the event, the client program retrieves content related information and includes it in the sentence. The sentence is in natural language and can be easily understood by the user. This sentence is displayed to the user using e.g. a pop-up window that stays on the screen for a few seconds. The user can execute that task by selecting an “OK” button in the pop-up window.
The Contextual Task Recommender 65 also inspects the user's current state and suggests possible courses of action to the client program (step 250). For example, if the user is in the process of composing a task, the Contextual Task Recommender 65 includes this information in the event that it sends out and the client program utilizes this information to delay the display of the task to the user till he/she finishes his/her current activity. When the Contextual Task Recommender 65 finds more than one matching task, it recommends the highest ranked task to the user that is most relevant to the user.
Alternatively, upon receiving the contextual event, the client program can take a variety of actions such as, updating the priority of the suggested task among the list of all tasks known to the user, execute the task directly, etc. (step 248).
When a device comes online, it presents its device description and task description to Context Agent (CA) module 62. The CA 62 packages a pointer to the device description and task description into an event. The CA 62 also encloses the name and location of the device in the event, and sends these events to the HTM 70 which are received by the HTM 70 (step 260). Device description comprises device properties (e.g., name to be displayed to the user), device functionalities (e.g., if the device can render audio/video), device attributes (e.g., the screen size of the device) and device grounding information (how to invoke each functionality). Task description comprises information that informs the HTM 70 about the functionalities required to achieve a particular task. For example, a task description specifies that “Play Movie” requires a device with audio rendering capabilities and video rendering capabilities. When the HTM 70 receives these events, it extracts information from the task description and attempts to find devices that offer the functionality required by the task (step 262). The HTM 70 then creates a task for each unique combination of device (step 264). A task comprises subject, verb and information of the device that realizes the task. Device description also contains the list of MIME-types the device can handle. The HTM 70 receives the list of available MIME-types from a Content Manager (CM) module 66 (
Accordingly, the present invention provides a system and method in a network of devices, which ascertains the user's context to suggest the most preferred task for the user to perform. User's context includes his/her location, the content he/she is interested in, the devices which are being used by him/her and optionally the content and devices that the user is allowed to use. Using this context, the system suggests tasks to the user that are appropriate to that context. The determination of context and the suggestion of tasks are performed by keeping track of the content and the devices available to the user at any given time.
The suggestion of tasks is performed in accordance with certain policies. For example, the user can control the behavior of the system by changing the rules in the policy. Tasks are in the form of simple sentences that can be easily understood by the user. If, based on certain context, more than one task is possible, the system suggests the task most relevant to the user.
The present invention has been described in considerable detail with reference to certain preferred versions thereof; however, other versions are possible. Therefore, the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein.
Priority is claimed from U.S. provisional patent application No. 60/643,051 filed Jan. 10 2005, which is incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
5530861 | Diamant et al. | Jun 1996 | A |
5544321 | Theimer et al. | Aug 1996 | A |
5555376 | Theimer et al. | Sep 1996 | A |
5611050 | Theimer et al. | Mar 1997 | A |
5812865 | Theimer et al. | Sep 1998 | A |
5910799 | Carpenter et al. | Jun 1999 | A |
6169991 | Tsukahara | Jan 2001 | B1 |
6256019 | Allport | Jul 2001 | B1 |
6389288 | Kuwahara et al. | May 2002 | B1 |
6563430 | Kemink et al. | May 2003 | B1 |
6792323 | Krzyzanowski et al. | Sep 2004 | B2 |
6931630 | Cotner et al. | Aug 2005 | B1 |
6954737 | Kalantar et al. | Oct 2005 | B2 |
6957075 | Iverson | Oct 2005 | B1 |
7024256 | Krzyzanowski et al. | Apr 2006 | B2 |
7046263 | Abbott et al. | May 2006 | B1 |
7064675 | Zigmond et al. | Jun 2006 | B2 |
7076255 | Parupudi et al. | Jul 2006 | B2 |
7170422 | Nelson et al. | Jan 2007 | B2 |
7184848 | Krzyzanowski et al. | Feb 2007 | B2 |
7206559 | Meade, II | Apr 2007 | B2 |
7307746 | Inoue | Dec 2007 | B2 |
7336942 | Wang | Feb 2008 | B2 |
7346663 | Abbott et al. | Mar 2008 | B2 |
7493294 | Flinn et al. | Feb 2009 | B2 |
7522549 | Karaoguz et al. | Apr 2009 | B2 |
7533079 | Naito et al. | May 2009 | B2 |
7613285 | Hay et al. | Nov 2009 | B2 |
7681203 | Mandato et al. | Mar 2010 | B2 |
7707267 | Lisitsa et al. | Apr 2010 | B2 |
20010032132 | Moran | Oct 2001 | A1 |
20020119788 | Parupudi et al. | Aug 2002 | A1 |
20020138327 | Mello et al. | Sep 2002 | A1 |
20030046401 | Abbott et al. | Mar 2003 | A1 |
20030073412 | Meade, II | Apr 2003 | A1 |
20030088534 | Kalantar et al. | May 2003 | A1 |
20040068507 | Inoue | Apr 2004 | A1 |
20040100505 | Cazier | May 2004 | A1 |
20040163073 | Krzyzanowski et al. | Aug 2004 | A1 |
20040176118 | Strittmatter et al. | Sep 2004 | A1 |
20040187152 | Francis et al. | Sep 2004 | A1 |
20040230636 | Masuoka et al. | Nov 2004 | A1 |
20050035846 | Zigmond et al. | Feb 2005 | A1 |
20050055472 | Krzyzanowski et al. | Mar 2005 | A1 |
20050108354 | Lisitsa et al. | May 2005 | A1 |
20050114493 | Mandato et al. | May 2005 | A1 |
20050164725 | Naito et al. | Jul 2005 | A1 |
20050232242 | Karaoguz et al. | Oct 2005 | A1 |
20050246726 | Labrou et al. | Nov 2005 | A1 |
20050267770 | Banavar et al. | Dec 2005 | A1 |
20050283532 | Kim et al. | Dec 2005 | A1 |
20050288035 | Wang | Dec 2005 | A1 |
20060064693 | Messer et al. | Mar 2006 | A1 |
20060064694 | Messer et al. | Mar 2006 | A1 |
20060069602 | Messer et al. | Mar 2006 | A1 |
20060147001 | Ha et al. | Jul 2006 | A1 |
20060149905 | Park et al. | Jul 2006 | A1 |
20060156252 | Sheshagiri et al. | Jul 2006 | A1 |
20060156307 | Kunjithapatham et al. | Jul 2006 | A1 |
20070233287 | Sheshagiri et al. | Oct 2007 | A1 |
20070266384 | Labrou et al. | Nov 2007 | A1 |
Number | Date | Country |
---|---|---|
1168124 | Jan 2002 | EP |
1458140 | Sep 2004 | EP |
2 852 173 | Sep 2004 | FR |
2000-266551 | Sep 2000 | JP |
2002-049556 | Feb 2002 | JP |
2002-063033 | Feb 2002 | JP |
2002-533802 | Oct 2002 | JP |
2004-266453 | Sep 2004 | JP |
2001-0041425 | May 2001 | KR |
2002-0022049 | Mar 2002 | KR |
1020050046580 | May 2005 | KR |
1020060068518 | Jun 2006 | KR |
00-38039 | Jun 2000 | WO |
0039964 | Jul 2000 | WO |
WO 0039964 | Jul 2000 | WO |
01-69380 | Sep 2001 | WO |
WO 2004081713 | Sep 2004 | WO |
Number | Date | Country | |
---|---|---|---|
20060156252 A1 | Jul 2006 | US |
Number | Date | Country | |
---|---|---|---|
60643051 | Jan 2005 | US |