生成和处理代表待执行任务的任务项目的制作方法

文档序号:18399555发布日期:2019-08-09 23:44阅读:171来源:国知局
生成和处理代表待执行任务的任务项目的制作方法

本发明涉及电子提醒,并且更具体地涉及智能生成、组织、触发和递送电子待办事项(to-do)列表中的提醒和任务。



背景技术:

人们已经设计用于向他们自己提醒某些任务或者事件的许多方式。许多人已经并且仍然在物理介质、诸如便条和日历上做记录。随着电子设备的普及,许多人已经转向计算机来帮助管理他们的待办事项列表并且保持即将到来的事件的记录。许多提醒和待办事项应用可用于桌面型计算机以及手持设备、诸如膝上型计算机、平板计算机和“智能”电话。

然而,向提醒应用的用户提供的通知的及时性和准确性几乎完全依赖于从用户接收的输入。例如,如果用户在提醒应用中录入用于重要事件的错误日期,则该用户可能直至在事件发生之后才接收到该事件的通知。作为另一示例,如果用户在待办事项应用中提供对任务的通用描述(例如,“向他发送电子邮件”),则在该用户稍后读取该描述时,该用户可能不记得“他”是谁和/或电子邮件的内容应当是什么。换而言之,在提及提醒和待办事项应用时,“垃圾入垃圾出”的谚语可适用。

在本节中描述的方式是可以探求的方式、但是未必是先前已经被设想或者探求的方式。因此,除非另有明示,不应认为在本节中描述的方式中的任何方式仅因为它们被包括在本节中而限定为现有技术。

附图说明

在附图中:

图1是描绘根据本发明的实施例的用于创建和处理任务项目的系统的框图;

图2是描绘根据本发明的实施例的用于基于用户输入的上下文(context)生成任务项目的过程的流程图;

图3是描绘根据本发明的实施例的用于确定用以在对任务安排的时间之前向用户提供提醒的时间的过程的流程图;

图4是根据本发明的实施例的行进提醒的视图。

图5-图15描绘根据本发明的实施例的各种类型的列表的视图;以及

图16是图示可以在其上实施本发明的实施例的计算机系统的框图。

图17-图24是根据一些实施例的电子设备的功能框图。

具体实施方式

在以下描述中,出于说明的目的而阐述许多具体细节以便提供对本发明的透彻理解。然而,将清楚的是,在没有这些具体细节的情况下仍然可以实现本发明。在其它实例中,以框图形式示出熟知的结构和设备,以免不必要地模糊本发明。

一般概述

以下提供用于辅助用户管理他的/她的任务的多种技术。在计算系统中将任务表示为任务项目。具体而言,以下具体描述用于生成任务项目、组织任务项目、基于对应任务项目触发任务通知以及消耗(consuming)任务项目的方式。

关于生成任务项目,基于来自用户的输入来生成任务项目。该输入(语音或者文本)包括关于任务的一个或者多个细节,而输入的上下文用来确定关于任务的一个或者多个其它细节。该一个或多个其它细节不被反映在输入中。上下文可以包括用户的设备上存储的数据。例如,用户提供以下语音输入:“今天5:00pm呼叫乔治”。该用户可以具有联系人列表,该联系人列表包括关于以乔治为名字的多个人的信息。然而,基于该输入的上下文、诸如来自与特定乔治关联的电话号码的新近语音消息,可以确定用户打算呼叫哪个乔治。以该方式,用户不必在提供关于任务的输入时明确任务的每个细节。

关于触发任务项目的通知,设备的一个或者多个特性可以用来确定是否触发通知。因此,时间不是是否应当向用户提供通知的唯一因素(如果有)。这样的特性的示例可以包括设备位于何处、设备正在显示或者处理什么和设备的特定移动。例如,设备在汽车中或者在工作的事实可以触发任务的通知的生成。作为另一示例,如果设备当前正在显示web内容,则可以认为设备的用户“在线”,该状态可以触发将向用户提供的任务的通知。

关于“消耗”任务项目,取代简单地提供任务的提醒,使得任务自动化,从而无需用户执行为了执行该任务而通常需要的步骤。例如,用户可能想要在特定时间呼叫特定的人。当该特定时间等于当前时间时,在用户不必指定该人的电话号码的情况下可以建立呼叫以准备好发出,而不是关于该呼叫简单地向用户提醒。

关于组织任务项目,可以将任务项目自动或者手动地组织成多个列表。每个列表对应于任务项目的不同属性、诸如任务的类型、用来触发任务的通知的标准的类型和任务将被执行的位置。

任务项目

同样,“任务项目”是电子数据项目,该电子数据项目包含关于是由用户还是自动由过程执行任务的一个或者多个细节。基于来自用户的输入来生成任务项目。任务项目可以是两种类型之一:与提醒关联的任务(“提醒任务”)和不与提醒关联的任务(“非提醒任务”)。提醒任务与诸如生成并且向用户提供通知这样的动作关联,而非提醒任务不与任何动作关联。非提醒任务可以与“完成截止”日期或者时间关联。然而,完成截止日期或者时间不触发通知的创建或者其它动作。换而言之,提醒任务与在被满足时触发动作的一个或者多个触发标准关联,而非提醒任务不是。因此,“任务项目”可以与或者可以不与在被满足时触发动作的一个或者多个触发标准关联。

系统概述

图1是描绘根据本发明的实施例的用于创建任务项目并且处理任务项目的系统100的框图。系统100包括设备110、网络120和云130。

设备110是能够从用户接收输入并且显示关于任务的信息的任何计算设备。设备110的非限制性示例包括桌面型计算机和手持设备、诸如膝上型计算机、平板计算机和“智能”电话。在所示实施例中,设备110包括任务管理器112。任务管理器112处理提醒类型或者非提醒类型二者的任务项目。可以在软件、硬件或者软件和硬件的任何组合中实施任务管理器112。

设备110包括用于与其它设备共享信息的通信技术(例如,无线技术)。设备110可以包括多种集成用户接口单元或者可以通过设备的一个或者多个通信端口或者数据链路耦合到用户接口单元。用户接口单元的非限制性示例包括语音输入单元(例如,麦克风)、物理输入单元(例如,键盘、鼠标、跟踪球、旋转转盘或者轮、触板或者触屏)和运动传感器(例如,加速度计、磁力计或者陀螺仪)。可以将这些用户接口单元中的任何用户接口单元实施为使用有线或者无线通信技术与设备110通信以提供用户输入的外部单元。有线通信技术的示例包括通用串行总线(usb)接口、火线(firewire)接口等。无线通信技术的示例包括蓝牙、wi-fi和wimax、红外线。通过这些用户接口单元,设备110可以从用户接收物理或者语音输入。

设备110包括用于向用户呈现可视和音频信息的一个或者多个输出单元。输出单元的非限制性示例包括用于显示可视数据的显示单元和用于播放音频的扬声器。

云130由一个或者多个计算设备实施。云130托管多个服务、诸如nlp(自然语言处理)服务132和一个或者多个其它服务134a-n。nlp服务132使用用户可以谈论的现实世界事物的一个或者多个模型以便清楚用户正在试图说什么。例如,nlp服务132可以基于模型和上下文确定用户可能在该用户使用诸如“他”、“那儿”或者“那个”的词语时指代的是什么。在美国专利申请序列号12/987,982中描述了以上引用的nlp服务132可以如何操作的示例。

nlp服务132可以采用许多api以与一个或者多个其它服务134a-n以及可选地与在云130中托管的其它服务通信并且发起这些服务所执行的动作。例如,响应于从设备110发送的语音数据,其中语音数据反映用户命令“今晚7pm在圣何塞的maribella预订两个座位”,nlp服务132向由maribella餐厅提供的在线预订服务发出api呼叫以发起在该餐厅、在7pm的两个预订的创建。因此,nlp服务器132允许将被自动执行的许多操作而无需设备110的用户人工输入文本数据并且与许多应用交互。

经由网络120可以进行在设备110与在云130中托管的服务之间的通信。网络120可以由提供在各种计算设备之间的数据交换的任何介质或者机制实施。这样的网络的示例包括而不限于下述网络,诸如局域网(lan)、广域网(wan)、以太网或者因特网或者一个或者多个陆地、卫星或者无线链路。该网络可以包括诸如所描述的那些网络的组合。非限制性地,该网络可以根据传输控制协议(tcp)、用户数据报协议(udp)和/或因特网协议(ip)来传输数据。

以下描述包括其中设备110和云130二者都参与生成任务项目、组织任务项目、触发任务项目的通知以及消耗任务项目的多个示例。替代地,这里描述的技术中的一种或者多种技术可以完全实施于设备110上(使网络120和云130非必需)、完全实施于云130中或者使用设备110和云130的某一组合来实施。

任务项目的处理

可以基于在设备110处接收的输入而在设备110上或者在云130中创建任务项目。虽然未描绘,但是任务项目可以被存储于设备110上或者存储于云130中或者被同步到二者。如果任务项目被存储于云130中,则任务管理器112可以例如响应于来自用户的输入或者与一个或者多个任务项目关联的一个或者多个触发标准被满足而取回该任务项目。

在其中任务项目被创建并且被存储在云130中的场景中,任务管理器112可以主要是显示关于任务的信息的一个或者多个用户接口的集合。因此,云130中的任务服务(未示出)将负责维护任务项目并且在触发事件发生时触发任何通知。

可选地,任务管理器112创建并且在设备110上存储任务项目。在该场景中,任务管理器112可以完全负责维护任务项目并且在触发事件发生时生成任何通知。该场景的一个优点是设备110可以在设备110不能与在云130中托管的任何服务通信时在“离线”模式中操作。

另外,在该场景中,设备110可以包括如nlp服务132这样的服务,该服务可以是任务管理器112的一部分或者可以与任务管理112分离地执行。这样的服务充当用于允许用户快速和容易地创建任务的对话接口。这样的服务可以由在后台中连续运行的过程实施,而无需设备110的用户提供输入来使该服务执行。因此,无论设备110何时启动(或者重启),服务都自动开始。

可选地,为了创建任务项目所需要的信息可以由(即,在云130中托管的)nlp服务132来识别。设备110可以包括在后台中连续运行、识别来自用户的(例如,语音或者文本)输入并且通过网络120向nlp服务132发送该输入的用户输入接口。一旦nlp服务132识别到输入中的任务细节,nlp服务132可以将任务信息(例如,任务的描述和用于完成任务的时间)(a)通过网络120向基于该信息创建和存储任务项目的任务管理器112发送或者(b)向云130中的任务服务发送以基于该信息创建任务项目。

这里提供的示例中的多数示例涉及从设备110接收输入数据、识别在输入数据中反映的(关于任务的)细节并且向任务管理器112提供那些细节的nlp服务132。然而,本发明的实施例不限于该场景。这样的示例可以可选地仅涉及设备110或者可以涉及仅作为输入和显示设备的设备110,其中nlp服务132和在云130中的任务服务提供主要功能。

i.基于上下文生成任务项目

根据本发明的实施例,基于输入和该输入的上下文生成任务项目。输入的“上下文”指在设备110处当前或者新近(相对于来自用户的发起任务项目的生成的输入)显示或者处理的数据。因此,上下文数据不被反映在来自用户的输入中。例如,设备110的用户可以提供以下语音输入:“在我回家时向他发送关于项目的电子邮件”。代词“他”是含糊的,因为仅根据该输入并不清楚“他”是指谁。然而,该语音输入的上下文可以是设备110当前显示(或者刚才新近显示)来自姓名为杰克·鲍尔的人的电子邮件,其中电子邮件包括对于关于名称为“小兔子”的项目的状态更新的请求。基于该语音输入和上下文,任务管理器112(或者在云130中的任务服务)创建任务项目,该任务项目包括描述“向杰克·鲍尔发送关于项目小兔子的电子邮件”并且包括设备110的触发标准,该设备正在用户的家里或者家附近的地理位置处。当设备110在用户的家里或者家附近时,任务管理器112使得通知被显示于设备110上,其中该通知包括来自任务项目的描述。

图2是描绘根据本发明的实施例的用于基于用户的输入的上下文生成任务项目的过程200的流程图。在步骤210,从用户接收明确地指定任务的一个或者多个第一属性的输入。该输入可以是文本输入或者语音输入。文本输入可以来自设备110的用户,该用户按压设备110上的物理键或者按压设备110的包括图形键盘的触屏。附加地或者可选地,设备110包括从用户接受语音输入的麦克风,设备110将语音输入转换成语音数据。设备110可以向nlp服务132发送输入数据(语音数据或者文本数据),该nlp服务分析该输入数据以识别任务的一个或者多个第一属性。替代地,如先前所注意到的,设备110可以包括用于分析输入数据以识别任务的一个或者多个第一属性的功能。(虽然这里的示例中的许多示例引用自然语言处理,但是自然语言处理不是必需的。)

在步骤220,基于输入数据针对任务生成任务项目。在步骤230,基于与输入分离的上下文数据确定任务的一个或者多个第二属性。虽然将步骤230描绘为在步骤220之后发生,但是步骤230可以在步骤220之前发生。

在步骤240,与任务项目关联地存储一个或者多个第一属性和一个或者多个第二属性。

过程200的步骤可以由一个或者多个设备执行。例如,可以在设备110处对步骤210中的输入进行处理以生成任务项目。在该场景中,任务管理器112(或者在设备110上运行的另一过程)识别与输入关联的上下文数据以针对该任务确定未在输入中被识别的一个或者多个第二属性。任务管理器112然后在任务项目中或者与任务项目关联地存储一个或者多个第二属性。

可选地,在另一场景中,设备110通过网络120向nlp服务132发送用户输入。nlp服务132接受与输入关联的上下文数据作为输入以针对该任务确定未在输入中被识别的一个或者多个第二属性。可以在发起任务项目的生成的输入之前已经向nlp服务132发送了上下文数据(在步骤220中)。nlp服务132向任务管理器112(或者在云130中的任务服务)发送一个或者多个第二属性。任务管理器112在新生成的任务项目中或者与该新生成的任务项目关联地存储一个或者多个第二属性。

某些词语或者短语可以用来提示nlp服务132与管理器112通信。例如,以“提醒我…”和“我需要…”开始的用户命令由nlp服务132使用以用来确定与任务管理器112通信。响应于检测到那些用户命令之一,nlp服务132分析(来自设备110的)输入数据并且可选地分析用于某些类型的任务细节、诸如位置、时间、描述和/或动作的上下文数据。nlp服务132然后确定与任务管理器112通信并且将该任务细节作为通信的一部分向任务管理器112发送。

上下文数据的来源

与发起任务项目的生成的用户输入关联的上下文数据可以来自许多来源之一。上下文数据的非限制性示例包括在设备110上显示或者曾经显示的数据(“显示数据”)、在设备110上或者与设备110关联地存储的数据(“个性化数据”)、由设备110处理或者曾经处理的数据(“过程数据”)、设备110的用户先前提供的数据(“输入数据”)、指示设备110的位置的数据(“位置数据”)。

以下是显示数据或者在设备110上显示或者曾经显示的数据的示例。设备110显示地图,该地图包括与地图上的特定位置关联的标记。设备110的用户然后在地图被显示时或者在地图被显示之后不久说“我需要今天5点前到那儿”。nlp服务132(或者在设备110上的语音分析器)分析反映该语音输入的语音数据。nlp服务132分析当前被显示于设备110上的数据以确定“那儿”是指什么。nlp服务132识别该标记和关联位置并且用该位置替代“那儿”。nlp服务132向任务管理器112发送任务数据,该任务数据指示5pm作为任务的完成时间以及指定的位置作为任务的位置。任务管理器112基于该任务数据生成任务项目。

作为显示数据的另一示例,设备110显示来自特定发送者并且包括主题行的电子邮件。设备110的用户然后说“我需要在两小时后关于该主题向他发电子邮件”。设备110向nlp服务132发送反映该输入的语音数据和被显示的内容的图像。作为响应,nlp服务132识别该电子邮件的发送者的电子邮件地址和该电子邮件的主题。nlp服务132向任务管理器112发送任务数据,该任务数据指示从当前时间起的两小时时间作为任务的完成时间。

以下是个性化数据或者在设备110上或者与设备110关联地存储的数据的示例。设备110的用户说“我将明天中午12点与蕾切尔共进午餐”。设备110向nlp服务132发送反映该输入的语音数据,该nlp服务识别语音数据中的“蕾切尔”。nlp服务132在(被存储于设备110上或者存储于云130中的)联系人数据或者“地址簿”中查找“蕾切尔”并且确定蕾切尔的姓氏是古德温。nlp服务132然后使“蕾切尔·古德温”与针对任务生成的任务项目关联。除了被存储于设备110上之外或者替代被存储于设备110上,个性化数据还可以被存储于云130中、即远离设备110。

以下是过程数据或者由设备110新近处理过的数据的示例。例如,设备110的用户使用过设备110作为电话来与朋友通信。设备110保持用户新近与谁通过话的踪迹。在结束呼叫之后,用户说“提醒我在30分钟后回呼她”。nlp服务132除了分析该语音输入之外还分析如下数据,该数据指示谁新近与设备110建立过电话呼叫(例如,最后五个电话呼叫)。nlp服务132确定与设备110最新近建立的电话呼叫的电话号码。nlp服务132然后基于联系人数据确定该电话号码与特定个人关联。nlp服务132向任务管理器112发送任务数据,该任务数据指示呼叫任务、从当前时间起的30分钟时间作为任务的完成时间、特定个人的姓名并且可选地特定个人的电话号码。任务管理器112基于该任务项目生成任务项目。

以下是输入数据或者由设备110的用户新近(例如,最后5分钟)提供过的数据的示例。来自用户的输入可以是文本输入或者语音输入。设备110或者nlp服务132保持新近录入的输入的踪迹并且可以使用该输入来确定在当前输入中反映的某些术语的标识。例如,设备110的用户说“提醒我今晚7点在那儿与他会面”。nlp服务132接收反映该语音输入的语音数据并且识别术语“他”和“那儿”。虽然并不清楚“他”是谁并且“那儿”是哪儿,但是nlp服务132访问从用户新近接收的输入。这样的新近接收的输入反映姓名“乔治·里德”(识别为个人的姓名)和“星巴克”(识别为地点)。作为响应,nlp服务131使得任务项目被生成,其中该任务是“在星巴克与乔治·里德会面”,其中时间是当天的7pm。

以下是位置数据或者指示设备110的当前或者以往位置的数据的示例。设备110的用户说“提醒我下星期四在这里与朱利安会面共进午餐”。设备110向nlp服务132发送反映该输入的语音数据。nlp服务132识别术语“这里”并且作为响应,确定设备110当前位于何处。可以用许多方式确定当前位置。例如,设备110可以向nlp服务132提供地理位置、诸如经度和纬度坐标。nlp服务132然后可以基于该坐标确定位于那些坐标的地点或者设施的名称。nlp服务132使得地点或者设施的名称与用于在指示的日期与朱利安会面共进午餐的任务的任务项目关联。

可选地,用户可以说“我需要明天在我上星期四中午所在的相同地点与乔希·彼得会面”。设备110向nlp服务312发送反映该输入的语音数据。nlp服务识别短语“在我上星期四中午所在的相同地点”并且作为响应,确定设备110上星期四中午位于何处。nlp服务132访问(被存储于云130中或者被存储于设备110上并且发送到nlp服务132的)位置历史数据并且确定设备110上星期四中午位于何处。位置历史可以指示地点的名称或者可以由地理坐标构成。如果是地理坐标,则nlp服务132确定位于那些坐标的地点或者设施的名称。nlp服务132使得该名称与用于在指示的日期与乔希·彼得会面的任务的任务项目关联。

关于设备110发生的事件也可以用来创建任务项目。这样的事件可以落入以上描述的一个或者多个类别(或者类型)的上下文数据中,诸如显示数据、呈现数据和过程数据。例如,设备110检测传入呼叫并且通过使得电话号码或者关于呼叫或者呼叫者的其它标识信息显示于设备110的屏幕上来向用户通知该呼叫。除了该信息之外,该显示还可以包括三个可选择选项:“应答”、“忽略”和“稍后回呼”。如果用户选择“稍后回呼”,则创建任务项目,其中该任务项目标识呼叫者并且可选地标识呼叫的时间和/或用于向呼叫者发出呼叫的时间。而且,可以将该任务项目自动分类为任务类型“待呼叫”。

这里的关于生成任务项目的示例中的许多示例包括用户提供语音或者文本输入,该语音或者文本输入包括关于任务的细节。可以如何生成任务项目的另一非限制性示例是用户选择(或者醒目显示)被显示在设备110的屏幕上的文本。所选择的文本被认为是上下文数据。在文本被选择之后,可以向用户呈现一个或者多个选项,这些选项之一是“提醒”选项,其在被选择时使得任务项目被生成。任务管理器112基于在所选择的文本中反映的信息来生成任务项目。也可以从其它上下文数据、诸如用于触发任务的通知的时间或者事件来确定任务项目的细节。

虚拟对话

在一些情形中,nlp服务132不能基于从设备110接收的输入和与该输入关联的上下文来确定关于任务的一个或者多个细节。因此,在一个实施例中,nlp服务132提示设备110的用户进一步输入以确定一个或者多个细节。一个或者多个细节可以涉及任务项目的任何属性、诸如任务的描述、任务的位置、提醒(如果有)的位置或者任务的时间。

例如,nlp服务132从设备110接收语音数据,该语音数据反映用户的用于“提醒我在7点呼叫斯蒂芬”的命令。nlp服务132可以访问关于用户的、具有名字斯蒂芬的许多联系人的信息(例如,地址簿)。另外,在地址簿中没有信息可以用来明确将呼叫斯蒂芬联系人中的哪个联系人。因此,nlp服务132向设备110发送将由设备110显示(或者可听地播放)的以下消息:“你指斯蒂芬·安德森、斯蒂芬·汉森或者斯蒂芬·乔布斯吗?”。用户然后向设备110提供指示三个斯蒂芬联系人之一的语音或者文本输入。作为响应,设备110通过网络120向nlp服务132发送对应语音或者文本数据。

作为另一示例,nlp服务132从设备110接收语音数据,该语音数据反映用户的用于“我需要在全食超市(wholefoods)挑选面包”的命令。作为响应,nlp服务132执行对与(a)设备110的当前位置或者(b)用户的家最近的全食超市商店的查找。可以在设备110的当前位置附近和在用户的家附近存在多个全食超市商店。因此,nlp服务132向设备110发送将由设备110显示的以下消息:“哪个全食超市?在阿尔马登路、切斯特高速路或者格林街上的那个吗?”用户然后向设备110提供指示三个全食超市商店之一的语音或者文本输入。作为响应,设备110通过网络120向nlp服务132发送对应语音或者文本数据。

作为另一示例,nlp服务132从设备110接收语音数据,该语音数据反映用户的用于“提醒我在8点前向杰瑞发文本消息”的命令。作为响应,nlp服务132基于该语音数据和该输入的上下文,确定杰瑞是在用户的联系人列表(或者地址簿)中指示的杰瑞·沃尔。然而,并不清楚用户是打算以8am还是8pm作为用于向杰瑞发送sms消息的时间。因此,nlp服务132向设备110发送将由设备110显示的以下消息:“你想要在8am或者8pm向杰瑞·沃尔发文本消息吗?”用户然后向设备110提供选择两个时间之一的语音或者文本输入。作为响应,设备110通过网络120向nlp服务132发送对应语音或者文本数据。

任务项目的自动分类

在实施例中,nlp服务132基于来自设备110的用户的输入来确定用于与任务项目关联的一个或者多个类别。该一个或者多个类别可以是可以实质上无限的许多不同类别之一。任务项目可以与之关联的类别的非限制性示例包括待购物品、假期待做事情、工作中待做事情和在驾车时待做事情。每个类别可以与子类别关联。例如,可以将“购物类别”划分成指示在杂货店待购项目的杂货类别、指示待购书籍的书籍类别和指示待购歌曲的音乐类别。

例如,用户可以向设备110提供以下语音输入:“提醒我买牛奶”。设备110向nlp服务132发送反映该输入的语音数据。nlp服务132确定应当创建任务项目并且“买牛奶”应当是与该任务项目关联的描述。nlp服务132也可以确定牛奶是杂货项目并且该任务项目应当与杂货类别和/或购物类别关联。因此,nlp服务132可以向任务管理器112发送指示(由nlp服务132、由云130中的任务服务或者由任务管理器112创建的)任务项目应当与之关联的一个或者多个类别的类别数据。

如下文将描述的那样,与每个任务项目关联的一个或者多个类别可以用来组织属于相同类别的任务项目并且在设备110上显示该相同类别的任务项目。这将允许设备110的用户除了按完成时间、按创建时间、按触发类型(下文描述)、按位置、按类型(例如,提醒类型相对非提醒类型)或者按某一其它标准之外或者替代这些标准,还按类别查看任务项目。

ii.触发任务项目的通知

如先前所言,任务项目可以与在被满足时使得通知被呈现给设备110的用户或者某一其它动作被执行的一个或者多个触发标准(或者触发器(trigger))关联。在任务项目的一个或者多个触发标准被满足时,“通知”(或者其它动作)被触发。触发标准的非限制性示例包括时间、位置、相对行进时间、上下文触发器和外来触发器,以下更具体描述这些示例中的每个示例。

时间触发器

时间触发器的时间可以是绝对时间、相对时间、重现时间或者象征性绝限。绝对时间的示例是2011年6月6日、太平洋时间9am。相对时间的示例是“在爱国者队-喷气机队足球赛之前的10分钟”。重现时间的示例是“在每星期四的10am”。象征性绝限的示例是“工作日结束”。

位置触发器

根据本发明的实施例,设备110的位置是与任务项目关联的触发标准。这样的触发标准这里被称为“位置触发器”。可以用许多方式之一确定设备110的位置。例如,可以基于wi-fi定位、小区定位和/或gps(全球定位系统)定位来自动确定设备110的位置。设备110可以用或者不用来自云130中的服务的输入来确定它的当前位置。

在一个实施例中,用户可以提供指示将与某个地理位置关联的标签的输入。例如,设备110的用户可以说出以下句子:“我在家里”或者“我在全食超市”。nlp服务器132然后可以将词语“家”或者短语“全食超市”与如基于先前提到的三种定位方法之一确定的设备110的当前位置关联。词语与位置的该关联可以稍后被用来确定“家”或者“全食超市”位于何处。

位置触发器可以与特定地理位置或者区域关联。替代地,位置触发器可以与不限于特定地理位置或者区域的地点关联。例如,任务项目的位置触发器可以是“在公路上”或者“在驾车时”。设备110(或者在设备110上运行的过程)确定设备110的当前位置在高速公路或者另一繁忙公路上。因此,无论设备110正在移动的速度如何或者设备110是否与将指示用户正在行进的另一设备配对都可以进行该确定。基于该确定,任务管理器112分析一个或者多个任务项目以确定任何任务项目是与“在公路上”的位置触发器还是与“在驾车时”的位置触发器关联。

作为另一示例,任务项目的位置触发器可以是用户的汽车。具体而言,用户可以已经提供以下语音命令:“提醒我在驾车时呼叫我的母亲”。nlp服务132分析反映该命令的语音数据并且确定“在驾车时”指用户的汽车。用户的汽车可以具有用于允许设备110与用户的汽车通信的有蓝牙能力的部件。在设备110来到由用户的汽车中的有蓝牙能力的部件传播的蓝牙信号的范围内时,设备110确定设备110位于用户的汽车中(或者至少在该汽车附近)。响应于该确定,任务管理器112触发任务项目的位置触发器。任务管理器112使得提醒消息被显示于设备110上,其中该提醒消息通知用户来呼叫他的母亲。用户然后可以提供单个叩击或者语音响应,该单个叩击或者语音响应使得在设备110上执行的电话应用向与用户的母亲关联的电话号码发起呼叫。

尽管与另一有蓝牙能力的设备建立连接(或者“配对”)是可以用来确定设备110的位置的配对的一个示例,但是其它类型的配对是可能的。例如,设备110可以在夜晚和上午数小时期间检测某些网络数据。该网络数据指示设备110可以连接到的一个或者多个网络。该网络数据可以包括一个或者多个网络的名称或者一个或者多个路由器的mac地址。设备110然后可以确定无论何时检测到该网络数据都认为设备110在用户的家里。因此,实际配对不是必需的,因为配对必需在设备110与另一设备、诸如路由器之间建立连接。作为另一示例,设备110可以检测火车、地铁或者公共汽车上的wi-fi信号。该wi-fi信号可以指示与wi-fi信号对应的运输类型。因此,设备110可以基于wi-fi信号检测它的位置是“在火车上”、“在地铁中”或者“在公共汽车上”。如果任务项目的触发标准指示这些位置中的一个或者多个位置,则可以触发与任务项目关联的动作。另外,也可以认为这样的“面向中转的”位置与特定上下文(以下更具体描述)、诸如“在中转中”或者“在行进中”关联。因此,任务管理器112检测到这样的上下文可以使得与某些任务项目关联的动作被执行。

可以将前述位置触发器的示例分类为诸如在用于“提醒我在我到达y时做x”的用户输入中发现的“到达触发器”。另一类型的位置触发器是“离开触发器”,在用于“提醒我在离开工作地时做x”或者“在我离开这里时…”的用户命令中发现该类型的示例。在一个实施例中,在离开触发器的场景中,在特定离开触发器“开火”之前需要从当前位置和离开的位置的的最小距离。这样的最小距离可以有助于避免在有假启动时执行对应动作。

此外,位置触发器可以是触发任务项目的动作的多个条件之一。包括多个条件的用户命令的示例包括“提醒我当我到家时或者在最晚8pm做x”、“提醒我在8pm之前或者在我离开之前中最早的时间做x”和“提醒我在8pm之前或者当我在驾车时中最早的时间做x”。

行进时间触发器

在一个实施例中,设备110的位置和与任务项目关联的时间被用来向设备110的用户提供通知。因此,尽管时间可以是与任务项目关联的一个或者多个触发标准之一,但是设备110的位置可能不是、至少明示地如此。

图3是描绘根据本发明的实施例的用于确定用以在针对任务安排的时间之前向用户提供提醒的时间的过程300的流程图。过程300可以由在设备110上运行或者在云130中的一个或者多个过程执行。然而,为了易于说明,过程300中的所有步骤由任务管理器112执行。

在步骤310,任务管理器112确定设备110的当前位置。在步骤320,任务管理器112确定与任务项目关联(或者由任务项目标识)的目的地的位置(或者“目的地位置”)。在步骤320,基于在两个位置之间的距离,任务管理器112确定“行进时间”或者设备110的用户向目的地位置行进可能花费的时间。在步骤330,任务管理器112确定“差分时间”或者当前时间和与任务项目关联的时间触发标准之间的差。在步骤340,如果行进时间与差分时间相同或者与差分时间接近,则任务管理器112向用户提供通知。该通知充当用于用户开始(如果他/她尚未这样做)向目的地行进的提醒。

例如,任务项目可以是用于2pm在特定餐厅与休会面的提醒。任务管理器112确定设备110的位置和特定餐厅的位置。可以通过发起例如因特网搜索并且识别与设备110的位置最近的、具有相同名称的餐厅来确定特定餐厅的位置。可选地,特定餐厅的地址可以已经与任务项目关联地被存储。基于在设备110的位置与特定餐厅之间的距离,任务管理器112确定设备110的用户向特定餐厅行进将需要多久(或者“行进时间”)。当行进时间与当前时间和时间触发器(即2pm)之间的差相同或者接近(例如,在10分钟内)时,任务管理器112使得该消息被显示于设备110上,该消息指示用户应当不久离开以在2pm到达该特定餐厅。

在一个实施例中,何时前往目的地的时间基于设备110的当前位置而改变。例如,当设备110的当前位置在位置a并且目的地在位置b时,任务管理器112确定用户应当在安排的任务的时间之前的50分钟开始行进。然而,响应于检测到设备110的当前位置现在在位置c,任务管理器112确定用户应当在安排的任务的时间之前的20分钟开始行进。例如,设备110的用户可以在当天开始时在家里,并且任务管理器112确定从用户的家向夜晚的晚宴事件的位置行进将需要40分钟。当天晚些时候,设备110的用户向与晚宴事件的位置更近的工作地行进。响应于设备110处于不同的位置,任务管理器112确定从用户的工作地向晚宴事件的位置行进将需要20分钟。

在一个实施例中,何时前往目的地的时间基于当前交通信息而改变。例如,在2:30pm,任务管理器112确定设备110的用户应当何时前往餐厅的时间是5:00pm。然而,由于在用户可以取道到达餐厅的高速路上的汽车事故,交通明显减缓。任务管理器112在3:30pm确定用户应当何时前往餐厅的时间是4:00pm。

图4是根据本发明的实施例的行进提醒的视图400。视图400由设备110显示。视图400的行进提醒包含六个数据项目。该六个数据项目包括:(1)对应任务(“接克洛伊”)的描述410;(2)何时完成任务的时间420(“今天5:00pm”);(3)当设备110的用户应当开始向目的地行进时执行的动作430;(4)指示用户想要被提醒用户应当何时行进以按时到达目的地的提醒时间440;(5)指示用户应当何时开始行进以按时到达目的地的开始时间450;以及(6)指示目的地的名称和目的地的地址的位置460。设备110显示的另一行进提醒可以包含更多或者更少数据项目。

可以响应于任务管理器112确定(在行进提醒的顶部指示的)当前时间与开始时间450指示的时间相等而触发(或者执行)与动作430关联的动作。在所示示例中,动作430是与地图有关的动作,其中任务管理器112使地图在开始时间450被生成并且被向设备110的用户显示。该地图包括位置460的地址的指示、用户的当前位置的指示或者二者。取代自动地使得地图在开始时间450被显示,任务管理器112可以先使得消息被显示于设备110上,其中该消息包括用于生成地图的选项。如果用户选择该选项(例如通过语音输入或者在屏幕上叩击),则任务管理器112使得地图被生成和显示。

提醒设置可以处于“开”或者“关”模式中。在图4中,提醒时间440在“开”模式中。如果提醒时间440在“关”模式中,则视图440的行进提醒可以不包括提醒时间440或者开始时间450。

如先前所示,任务管理器112可以响应于设备110的位置改变而改变开始时间450。因此,尽管开始时间450可以当设备110在上午位于用户的家里时指示“今天3:30pm”,但是开始时间450可以当设备110在下午位于用户的工作办公室中时指示“今天4:20pm”。

在一个实施例中,任务管理器112响应于设备110的位置显著改变来检查计算的开始时间450的改变。可以将位置的显著改变确定为已经计算的其它事件的结果。例如,设备110可以在它在小区塔之间转换时已经处理事件,并且这些事件可以触发重新计算位置的改变并且因此重新计算更新的开始时间450的改变。指示位置潜在显著改变的事件的其它非限制性示例是检测到的wi-fi签名的改变、为某个其它应用(诸如地图或者导航)计算准确gps位置、动力循环事件、开启或者关断设备上的无线电、基于加速度计信号的警告和接收到包含位置信息的文本消息或者推送通知。

在一个实施例中,任务管理器112组合用于检测显著事件改变的策略。例如,在低功率/低分辨率模式中,任务管理器112仅每n分钟或者仅在某个周期性计算出现、诸如检查传入数据时检查显著位置改变。在高功率/高分辨率模式中,任务管理器112使用小区塔定位和/或gps。组合策略可以默认运行低功率解决方案、然后在估计的开始时间很快来临时或者在其它事件发生(例如,wifi改变或者检测到蓝牙签名)时调用高功率解决方案。

在一个实施例中,行进提醒或者在行进提醒中的开始时间项目可以与一个或者多个运输模式关联。运输模式的非限制性示例包括驾驶汽车、乘坐公共汽车、骑自行车和步行。默认运输模式可以是驾驶汽车。例如,任务管理器112可以提供用于用户在“汽车”模式、“公共汽车”模式、“自行车”模式、“步行”模式或者同时多个模式中查看开始时间450的选项。根据为开始时间450选择的当前模式,开始时间可以广泛变化。例如,在图4中,尽管开始时间450指示用于汽车模式的“今天4:20pm”,但是开始时间450可以指示用于公共汽车模式的“今天3:15pm”、用于自行车模式的“今天3:45pm”和用于步行模式的“今天11:30am”。

在一个有关实施例中,任务项目与位置和日期/时间二者关联,并且任务的通知可以由用户(或者实际上用户的设备)处于该位置或者由该日期/时间触发。例如,如果用户的设备处于该位置(在该日期或者无论日期如何),则通知被触发。如果用户在该日期指示的日子尚未到达该位置(或者在该时间之前尚未到达指示的位置),则该时间被用作为用于触发通知的“最后手段”。

上下文触发器

如先前描述的那样,时间和位置是触发与任务项目关联的触发标准的类型的示例。与任务项目关联的另一类型的触发标准是上下文。“上下文触发器”指设备110的一个或者多个特性而不是简单地是设备110的位置。因此,如同上下文触发器,行进触发器和行进时间触发器也指设备110的一个或者多个特性。

可以将上下文触发器分类成两个类型之一:面向数据的上下文触发器和面向空间的上下文触发器。面向数据的上下文触发器的非限制性示例包括设备110正在它的屏幕上显示的数据的种类或者类型(例如,视频)、当前在设备110上运行的特定应用或者应用的类型(例如,发文本消息应用或者音乐应用)、设备110正在从用户接收的输入的类型(例如,语音或者数据)和可用于设备110的网络连接的类型(例如,wi-fi或者蜂窝网络)。

例如,设备110接收的用户命令可以是“提醒我在我下次打电话时呼叫我的妈妈”。假设短语“打电话”意味着,当用户正在使用设备110作为电话时将向用户发送提醒以通知用户来呼叫他的/她的妈妈。

作为另一示例,设备110接收的用户命令可以是“我需要当我正在因特网冲浪时向鲍勃发电子邮件”。假设短语“因特网冲浪”意味着,当用户正在与设备110上的web浏览器交互时设备110的(或者用户的)上下文是“在线时”。响应于确定设备的或者用户的上下文,将向用户发送提醒以通知用户向鲍勃发电子邮件。此外,还可以对于与“在线时”的上下文触发器关联的任何其它任务项目向用户提供另一提醒。

作为另一示例,设备110接收的用户命令可以是“当我正与我的姐妹萨拉谈话时向妈妈发文本消息”。假设短语“当我正在与我的姐妹萨拉谈话时”意味着,当用户正在使用设备110作为电话并且与萨拉建立了电话呼叫时将向用户发送提醒以提醒用户向用户的妈妈发送文本(或者sms)消息。

作为另一示例,设备110接收的用户命令可以是“当我具有wi-fi连接时提醒我向简·史密斯发电子邮件”。响应于设备110检测到无需密码或者需要可由设备110访问的密码的wifi信号,任务管理器112使得通知被显示于设备110的屏幕上,其中通知指示简将向简·史密斯发电子邮件。

面向空间的上下文触发器的非限制性示例包括设备110正在移动的速度(例如,在30mph以上指示驾车或者少于3mph指示步行)、设备110正在移动的方向(绝对或者相对)、和设备110的移动的集合(例如,在水平方向上连续移动之时的短的竖直移动)。换而言之,设备110可以被配置用于检测设备110正在如何通过空间移动。

例如,设备110(或者实际上为在设备110上运行的过程)基于检测到它的位置在一段时间内改变而确定设备110正在以60mph移动。基于该信息,设备110确定设备的上下文是“在驾车之时”或者“在公路上”。任务管理器112分析一个或者多个任务项目以确定任何任务项目是否与“在驾车之时”或者“在公路上”的上下文触发器关联。如果任务项目与“在驾车之时”或者“在公路上”的上下文触发器关联,则执行与该任务项目关联的动作(例如,显示通知)。

作为另一示例,设备110基于检测到它的位置在一段时间内改变而确定设备110正在一段时间(例如,5分钟)内朝向他的家移动。基于该信息,设备110确定上下文是“在我的回家路上”。任务管理器112分析一个或者多个任务项目以确定任何任务项目是否与“在我的回家路上”的上下文触发器关联。如果任务项目与“在我的回家路上”的上下文关联,则执行与该任务项目关联的动作(例如,显示通知)。

作为另一示例,设备110包括检测某些相应移动的加速度计。设备110可以基于在一段时间内的这些重复移动来确定设备110的用户可能正以慢速度跑步。基于该确定,设备110确定上下文是“在慢跑之时”。任务管理器112分析一个或者多个任务项目以确定任何任务项目是否与“在慢跑之时”或者“在步行之时”的上下文触发器关联。如果任务项目与“在慢跑之时”或者“在步行之时”的上下文触发器关联,则执行与该任务项目关联的动作(例如,显示通知)。

作为另一示例,设备110可以检测它在一段时间(例如,3小时)内没有移动过。设备110的用户可能有兴趣被警告,并且设备110的无移动可以指示用户在睡眠。因此,用户可以发出命令“如果电话3小时未移动则警告我”。

除了面向数据和面向空间的触发器之外,其它种类的触发器也可以基于设备110上的任何传感器。设备110可以包括多个传感器、诸如温度传感器和光传感器。例如,设备110可以包括用于检测设备110的外界温度或者内部温度的温度计。因此,设备110的用户可以发出命令“在达到100度时提醒我来呼叫哈罗德”。

外来触发器

可以与任务项目关联的另一类型的触发标准是外来标准。“外来触发器”是依赖于在设备110和设备110的用户以外并且与设备110和该用户分离存在的一个或者多个因素的触发标准。这样的因素可以被视为关于除了设备110之外的设备或者关于在除了设备110之外的一个或者多个设备上存储的数据而发生的“事件”。外来触发器的非限制性示例包括社交位置、社交邻近、常备(standing)查询和本地事件。

社交位置触发器的示例是当设备110的用户的朋友或者同事到达或者离开某个位置时。例如,发起了对任务项目的创建的用户命令可以已经是“如果萨拉离开购物中心则通知我”。因此,萨拉(或者萨拉的移动设备)的位置是在关闭该类型的外来触发器时的重要因素。具体而言,任务管理器112确定萨拉的设备的当前位置。萨拉的设备的当前位置可以由萨拉的设备和设备110二者预订的云服务(例如,在云130中)提供。设备110从该云服务接收关于萨拉的设备的位置的更新。任务管理器112使用该位置信息来确定是否应当激活社交位置触发器。相似用户命令是“当我的女儿到家时提醒我”。

社交邻近触发器的示例是当设备110的用户的朋友或者同事在用户(或者设备110)的某个距离内时。例如,发起了对任务项目的创建的用户命令可以已经是“当乔治在我的100英尺内时提醒我呼叫他”。因此,乔治(或者乔治的移动设备)的位置是在关闭该外来触发器时的重要因素。具体而言,任务管理器112或者在设备110上运行的另一过程将设备110的当前位置与乔治的设备的当前位置进行比较以确定分离两个设备的距离。可选地,乔治的设备可以向乔治的设备和设备110二者预订的云服务发送它的位置。设备110从该云服务接收关于乔治的设备与设备110之间的距离的更新。任务管理器112使用该距离信息来确定是否应当激活社交邻近触发器。

常备查询触发器的示例是当网页提到特定术语或者短语、诸如公司名称时。为了对此进行检测,生成并且连续发出(例如,一天一次)常备查询。例如,发起了对任务项目的创建的用户命令可以已经是“当cnn.com提到berkmanindustries时告诉我”。任务管理器112或者在设备110上运行的另一过程(例如,向搜索引擎)发出搜索查询并且接收结果。当任务管理器112确定该结果包括来自cnn.com的、包括名称“berkmanindustries”的网页时,任务管理器112向设备110的用户提供通知。

本地事件触发器的示例是当某个本地事件发生时。为了对此进行检测,任务管理器112从在线服务接收数据。任务管理器112(或者在云130中的任务服务)可以(经由一个或者多个通信协议)定期地向在线服务发送请求。可选地,任务管理器112可以向在线服务预订以接收关于某些事件的信息。例如,发起了对任务项目的创建的用户命令可以已经是“当甲壳虫门票在海岸线销售时告诉我”。作为响应,任务管理器112、在设备110上运行的另一过程或者nlp服务132向在线票务服务发送预订请求以在用于在海岸线剧院表演的甲壳虫门票变得可供购买时接收通知。当任务管理器112确定甲壳虫门票可供购买时,任务管理器112向设备110的用户提供通知。

作为另一示例,用户可能有兴趣知道海浪何时上涨。因此,用户可以发出命令“在海浪上涨之前的一小时提醒我”。任务服务112(或者在云130中的任务服务)可以规律地发出冲浪地点的查询或者可能预订来自冲浪地点的警告。

基于前文,外来触发器的类型和示例实质上无限。只要任务管理器111(或者在云130中的任务服务)可以关于与设备110分离发生的事件进行确定,则该事件可以用来触发对与任务项目关联的动作的执行。

iii.消耗任务项目(活动载荷)

当执行与任务项目关联的动作时任务项目被“消耗”。这样的动作可以是被显示(或者如果通知是音频通知则被播放)在设备110上的通知。除了向设备110的用户提供通知之外或者替代向该用户提供通知,其它可能动作还包括发起电话呼叫或者搜索查询、发送http请求(其包括统一资源定位符(url))、发送电子邮件或者文本(sms)消息、使得应用运行以及使得代表用户来进行购物。可以与任务项目关联的这样的动作被称为“活动载荷(payload)”。对活动载荷的处理使得某一动作由任务管理器112或者由在设备110本地或者远离设备110的另一过程执行。换而言之,取代向用户简单地通知与任务项目关联的任务,任务管理器112(或者在云130中的服务)可以使得任务项目的动作部分自动化。

如以上暗示的,使得动作被执行可以涉及任务管理器112使得另一应用或者过程执行该动作。可以如在以下示例中所示,在具有或者没有进一步输入的情况下,执行对该另一应用(例如,经由该另一应用的api)的调用或者调取。

“其它”应用的类型可以大量变化。可以在设备110上可用的应用的非限制性示例包括电话应用、电子邮件应用、web浏览器、音乐播发器应用、媒体播发器应用、音乐下载应用、图像处理应用、地理定位应用、联系人应用、sms应用、视频游戏应用和文本处理应用。

例如,设备110的用户大声说“今天下午提醒我回呼她”。该语音输入被转换成设备110通过网络120(与上下文数据一起)向nlp服务132发送的语音数据。nlp服务132分析该语音数据和上下文数据以确定“她”指玛丽琳·梅洛。nlp服务132确定“下午”是2pm(基于上下文数据、预定义设置或者先前历史)并且基于包括用于玛丽琳·梅洛的一个或者多个电话号码的、与该用户关联的联系人列表(或者地址簿)确定用于玛丽琳·梅洛的电话号码。联系人列表可以被存储于设备110上或者存储于云130中。nlp132向任务管理器112(或者向在云130中的任务服务)发送用来生成任务项目的提醒数据。提醒数据包括日期“今天”、时间2pm和用于使用特定电话号码来呼叫玛丽琳·梅洛的指令。当任务管理器112确定当前时间是2pm时,任务管理器112可以使得消息被显示,该消息提示用户呼叫玛丽琳·梅洛。该消息可以包括“稍后”按钮和“现在呼叫”按钮。如果用户选择“稍后”按钮,则任务管理器112将在下午晚些时候(例如,在1小时后)再次发送该消息。如果用户选择“现在呼叫”按钮,则任务管理器112向玛丽琳·梅洛发起呼叫。该发起可以涉及任务管理器112向在设备110上运行的电话应用(未示出)进行api调用并且传递该电话号码作为api调用的变元。电话应用然后使用该电话号码来呼叫与该电话号码关联的设备。

作为另一示例,设备110的用户大声说“在5点钟向林赛发文本消息我爱她”。该语音输入被转换成设备110通过网络120向nlp服务132发送的语音数据。nlp服务132分析该语音数据以确定林赛的蜂窝电话号码是必需的并且“5点钟”指当天的5pm。任务管理器112(或者在云130中的任务服务)创建包括以下数据项目的任务项目:(1)今天5pm的完成时间、(2)发送文本(或者sms)消息的动作、(3)林赛的蜂窝电话的号码、和(4)将作为文本消息的一部分的文本串“我爱你”。响应于确定当前时间是5pm,任务管理器112分析该任务项目以确定需要执行的动作。任务管理器112然后使得包括与该任务项目关联的文本串的文本消息被发送到林赛的蜂窝电话。该步骤可以包括任务管理器112调取在设备110上运行的发文本消息应用(未示出)的api调用,其中文本串(“我爱你”)是api调用的变元。

作为另一示例,设备110的用户大声说“当我离开办公室时向我示出如何到达圣何塞的雷切尔餐厅的指引”。该语音输入被转换成设备110通过网络120向nlp服务132发送的语音数据。nlp服务132分析该语音数据以确定林赛的蜂窝电话号码是必需的并且“5点钟”指当天的5pm。任务管理器112(或者在云130中的任务服务)创建包括以下数据项目的任务项目:(1)离开用户的办公室的位置触发器、和(2)显示关于如何从用户的办公室到达雷切尔餐厅的指令的动作(和可选地,地图)。响应于确定设备110的用户已经离开他的/她的办公室,任务管理器112分析该任务项目以确定需要执行的动作。任务管理器112然后使得(在没有来自用户的进一步输入的情况下)行进指引请求被发送到行进指引服务。行进指引请求包括餐厅的名称、餐厅的任何地址信息或者二者。可以在设备110上或者在另一设备(未示出)上托管该行进指引服务。

作为另一示例,设备110的用户大声说“在公牛队-步行者队比赛开始之前30分钟在圣何塞的披萨天堂订购送货到家的仅奶酪披萨”。该语音输入被转换成设备110通过网络120向nlp服务132发送的语音数据。nlp服务132分析该语音数据以确定公牛队-步行者队比赛在本地时间6pm开始;因此,时间触发器是本地时间5:30pm。nlp服务132还确定圣何塞的披萨天堂允许在线订购。任务管理器112(或者在云130中的任务服务)创建包括以下数据项目的任务项目:(1)5:30pm的时间触发器和(2)从披萨天堂订购仅奶酪披萨并且以送货到家作为选项的动作。响应于确定当前时间是5:30pm,任务管理器112(或者在云13中的任务服务)分析该任务项目以确定需要执行的动作。任务管理器112然后使得披萨订购请求被发送到披萨天堂的在线订购服务。披萨订购请求包括仅奶酪类型的披萨、送货到家的送货选项和用户的家庭地址。披萨订购请求可以具有针对在线订购服务的api调用的形式,其中api调用的变元包括仅奶酪配料、送货到家的指示和用户的家庭地址。可选地,在使得所需披萨订单被发送之前,任务管理器112可以制定在设备110上显示(或者由设备110播放)的消息,其中该消息向用户通知该任务。如果用户提供肯定输入,则任务管理器112使得披萨请求订单被发送。如果用户提供否定输入,则没有披萨请求订单被发送。

作为另一示例,设备110的用户大声说“明天3pm在潘多拉上播放我的经典台”。时间“明天3pm”与用户的安排的考试结束重合。该语音输入被转换成设备110通过网络120向nlp服务132发送的语音数据。nlp服务132分析该语音数据以确定将要执行既定动作的日期和时间。任务管理器112(或者在云130中的服务)创建包括以下数据项目的任务项目:(1)标识接下来的日子的日期的3pm的时间触发器和(2)播放用户的潘多拉音乐应用的经典“台”的动作,其中该经典台由用户建立并且与用户的潘多拉账户关联。响应于确定当前时间是在正确日期的3pm,任务管理器112(或者在云13中的任务服务)分析该任务项目以确定需要执行的动作。任务管理器112然后使得潘多拉音乐应用(未示出)开始在设备110上运行并且“播放”用户的经典台。任务管理器112可以通过调取针对潘多拉音乐应用的api调用来使得经典台播放,其中api调用的变元包括经典台的指示。

自动化的任务完成

在一个实施例中,任务管理器112(或者在云130中的服务)响应于检测到任务项目被消耗而将该任务项目“标记”为完成。换而言之,任务项目可以与完成或者未完成状态关联。任务管理器112可以提供用于用户查看由任务管理器112管理的任务项目的接口并且确定任务项目是否完成。任务管理器112可以提供用于设备110的用户查看所有完成的任务项目的选项。可以基于任务项目被何时创建、消耗(或者完成)或者某一其它标准来对完成的任务项目排序。

附加地或者可选地,从存储装置删除被消耗的任务项目。例如,任务管理器112从设备110上的存储装置删除已经被消耗的任何任务项目。删除任务项目可以在已经完成对应任务之后的某个时间段(例如,1个月)发生以允许设备110的用户回顾新近消耗的任务项目。如果在云130中的任务服务管理存储于云130中的任务项目,则该任务服务可以删除消耗的任务项目。

延迟的任务解释

在一个实施例中,在任务项目被创建时,仅对应任务的一些细节可能是已知的并且与任务项目关联地被存储。可以稍后自动地或者经由人工过程确定关于描述、地址(如果有)、触发器和/或动作的其它细节。

例如,设备110向nlp服务132发送反映用于“在5点呼叫萨拉”的用户命令的语音数据。nlp服务132确定当天的5pm是时间触发器并且使得任务管理器112(或者在云130中的任务服务)创建具有该时间触发器的任务项目。然而,与任务项目关联的动作项目是“呼叫萨拉”而没有电话号码的任何指示。nlp服务132尚未确定萨拉是谁并且因此尚未确定使用什么电话号码来呼叫她。替代地,稍后确定那些细节;例如,在当前时间是5pm并且动作被触发时或者在触发器激活之前的某一时间。在5pm,任务管理器112向nlp服务132或者另一服务发送动作项目“呼叫萨拉”(以文本形式或音频形式)以识别关于特定萨拉(如果有许多)的信息并且确定萨拉的电话号码。在萨拉的电话号码被确定时,任务管理器112(或者另一过程)使得设备110上的电话应用使用该电话号码来发起呼叫。在该示例中,延迟对(a)个人的身份和(b)用于该个人的电话号码的明确直至在任务项目被生成之后。

作为另一示例,设备110向nlp服务132发送反映用于“第二天上午检查圣何塞的天气”的用户命令的语音数据。nlp服务132确定第二天的7am是时间触发器并且使得任务管理器112(或者在云130中的任务服务)创建具有该时间触发器的任务项目。然而,与该任务项目关联的动作项目是“检查圣何塞的天气”而没有如何执行动作的任何指示。nlp服务132尚未解释用户命令的该部分以确定将如何检查圣何塞的天气。替代地,稍后确定那些细节;例如,在当前时间是第二天的7am并且动作被触发时或者在触发器激活之前的某一时间。在第二天的7am,任务管理器112向nlp服务132或者另一服务发送动作项目“检查圣何塞的天气”(以文本形式或者音频形式)以识别将如何检查圣何塞的天气。作为响应,nlp服务132或者另一服务获取关于圣何塞的天气的信息并且向设备110提供该信息以被显示。在该示例中,对将如何执行动作的确定被延迟直至任务项目被生成。

对警告的响应

如先前暗示的那样,对于不仅是通知的、与动作关联的任务项目,替代执行该动作,先向设备110的用户警告任务并且允许用户用肯定或者否定响应做出响应。例如,任务项目的动作是关于项目knuckles而向简·史密斯发电子邮件。任务管理器112使得消息被显示于设备110上,该消息指示设备110的用户应当向简·史密斯发电子邮件。用户可以按压指示肯定响应的物理或者图形按钮。可选地,用户可以说出指示肯定响应的命令“完成它”或者“是”。响应于该输入(经由设备110的触屏、键盘选择或者语音输入),任务管理器112使得设备110上的电子邮件应用编写具有引用项目knuckles的主题行、地址为简·史密斯的电子邮件消息。可选地,用户可以决定稍后被提醒用于向简·史密斯发电子邮件的任务。因此,响应于该通知,用户提供输入(经由设备110),该输入指示他/她想要稍后某一时间、诸如在一小时后或者第二天向简·史密斯发电子邮件。这样的输入可以是用户说出“稍后提醒我”或者简单地说“稍后”。

在一个实施例中,当动作是对通信、诸如电子邮件消息的行为做出响应时,任务管理器112在任务创建的时间存储该通信的上下文并且在执行该动作的时间取回该上下文。在各种实施例中,通信的上下文可能是上下文的统一资源标识符或者对上下文的其它引用或者上下文的数据的副本。例如,任务管理器112存储对将被回复的电子邮件消息的引用或者该电子邮件消息的副本。当动作被执行时,可以重建电子邮件消息的内容,好像用户在初始读取它时已经执行了回复一样。可以用该方式存储和取回的上下文数据的其它示例包括而不限于文本消息、文档、网页、语音邮件消息、照片、音频记录和视频。

作为另一示例,任务项目的动作是呼叫乔治·伯特。响应于确定触发该动作以进行呼叫,任务管理器112提供下述指示,该指示指明提醒可用于设备110的用户。该指示可以是设备110蜂鸣/振动、生成可听噪声和/或显示通知消息。在未持有设备110时,用户大声说“读取它”。响应于任务管理器112(或者另一过程)处理该输入,设备110播放以下语句的可听版本:“提醒…呼叫乔治·伯特”。该可听版本可以基于来自用户的原始输入的回放或者可以反映计算机生成的声音。如果用户决定呼叫乔治·伯特,则用户可以简单地说“好的”或者“完成它”,这使得设备110上的电话应用呼叫乔治·伯特。如果用户决定不呼叫乔治·伯特,则用户可以说“忽略”或者“以后提醒我”。

iv.使用列表来组织任务项目

根据本发明的实施例,任务项目可以与一个或者多个列表关联。列表是与相同类别关联(或者属于相同类别)的一个或者多个任务项目的集合。列表是设备110的用户可以用有组织的方式查看任务项目的方式。不同列表允许用户智能和直观地浏览他/她想要执行(或者已经代表他/她执行)的任务。图6-图14描绘根据本发明的实施例的各种类型的列表的视图。

在新任务项目被创建时,任务管理器112(或者在云130中的服务)识别与该新任务项目关联的一个或者多个属性并且向一个或者多个列表指配该新任务项目。例如,如果新任务项目包括动作“呼叫”,则任务管理器112(或者其它过程)向待呼叫列表添加该新任务项目。类似地,如果新任务项目包括某个上下文和特定位置,则任务管理器112可以识别该上下文和/或特定位置并且向位置列表和/或上下文列表添加该新任务项目。可选地,用户可以手动识别新任务项目将被添加到的、以下具体描述的列表中的一个或者多个列表。

所有列表视图

图5a描绘根据本发明的实施例的设备110的所有列表视图500。所有列表视图500不包含关于任何特定任务项目的信息。替代地,所有列表视图500包括对任务管理器112(或者在云130中的任务服务)维护的多个列表的引用:今天列表510、所有待办事项列表520、附近列表530、在汽车中列表540、待呼叫列表550、待发电子邮件列表560、杂货列表570、待购列表580和已完成列表590。如先前所言,任务项目可以与多个列表关联(或者属于多个列表)。例如,其描述为购买牛奶并且其时间触发器为今天的任务项目可以属于今天列表510、所有待办事项列表520、杂货列表570和待购列表580。

可以将列表表征为三个类型之一:内置或者预定义列表、智能列表或者定制列表。今天列表510、所有待办事项列表520和已完成列表590是内置或者预定义列表的示例。

智能列表基于任务项目可能具有的不同特性或者属性、诸如动作(例如,呼叫、发电子邮件、发文本消息、警告)、位置和/或其中该动作将被执行的上下文。智能列表的示例包括按动作列表、按位置列表和按上下文列表。在汽车中列表540、待呼叫列表550和待发电子邮件列表560是按动作列表的示例。按动作列表的其它示例可能包括待发文本消息列表、待查找列表和待拜访列表。

定制列表的示例包括基于由nlp服务132标识的类别的列表和由用户创建的列表。杂货列表570和待购列表580是定制列表的示例。定制列表的另一示例是包括用户的最喜欢的酒的列表的酒列表(未示出)。

返回图5a中描绘的列表,属于今天列表510的任务项目与触发标准关联,该触发标准指示对应任务必须或者应当被执行的、当天中的时间。所有任务项目属于所有待办事项列表520。属于附近列表530的任务项目与被视为在距设备110的当前位置的某个距离(例如,1英里)内的位置关联。属于在汽车中列表540的任务项目与将在汽车中或者在行进之时执行的任务关联。属于待办事项列表550的任务项目与用于呼叫个人或者实体的动作关联。属于待发电子邮件列表560的任务项目与用于向个人或者实体发电子邮件的动作关联。属于杂货列表570的任务项目与待购杂货项目(例如,牛奶、鸡蛋、水果)关联。属于待购列表580的任务项目与待购项目、诸如衣物、书籍、歌曲或者杂货关联。属于已完成列表590的任务项目被视为完成,这可以指示已经执行了对应任务或者至少已经执行了与每个任务项目关联的动作(例如,警告或者通知)。

所有列表视图500还包括在被选择时允许设备110的用户创建另一定制列表、从而可以向它添加当前和/或将来任务项目的“+”图像。

图5b描绘图5a中描绘的列表中的一些列表、但是具有用于允许设备110的用户搜寻特定任务项目的搜索字段502。可以例如基于任务项目的关联创建日期、完成日期(如果已知)、完成状态、上下文触发器(如果有)、位置(如果有)和/或动作类型(例如,仅通知、呼叫、发电子邮件或者购物)搜寻任务项目。

今天列表

图6描绘设备110例如响应于用户对今天列表510的选择而显示的今天列表的视图600。视图600包括被划分成两个分节的任务列表:用于与特定时间关联的任务项目的分节610和用于不与特定时间关联的任务项目的分节620。在分节610中的任务项目中的每个任务项目与行进时间提醒关联。在分节610中的第三任务项目和在分节620中的第二至第四任务项目与比仅提醒或者警告更多的动作关联。

例如,在分节610中的第三任务项目是在5:00pm“接克洛伊”。在该描述的右侧的图标是校园的图像,指示与该任务项目关联的动作是生成用于帮助指导设备110的用户前往既定目的地的行进指引,该目的地在该示例中是松林学校。

作为另一示例,在分节620中的第二任务项目是“呼叫约翰·阿普尔西德”。在该描述的右侧的图标是电话的图像,指示与该任务项目关联的动作是呼叫约翰·阿普尔西德。与电话图像相邻的图像是汽车的图像,指示设备110的用户将在该用户在汽车中时或者在用户正在行进之时呼叫约翰·阿普尔西德。

作为另一示例,在分节620中的最后任务项目是“回复帕布鲁·马克”。在该描述的右侧的图标是信封的图像,指示与该任务项目关联的动作是向帕布鲁·马克发送电子邮件。视图600还指示该任务项目过期或者实际上用于向帕布鲁·马克发电子邮件的原先安排的时间已经经过。

单任务项目视图

图7描绘设备110显示的并且包括关于特定任务项目的细节的视图700。可以已经基于用户选择图6的视图600中的分节620中的第二个任务项目来生成视图700。显示的任务项目包含四个数据项目:描述项目710、动作项目720、提醒项目730和列表指配项目740。

描述项目710包含任务的高级描述(“呼叫约翰·阿普尔西德”)并且包括关于主题的细节(“讨论杏仁交易”)。对描述项目710的选择可以允许设备110的用户编辑该描述。

动作项目720包含对动作的描述(“呼叫”)并且包括将使用约翰·阿普尔西德的哪个电话(“移动”)。对动作项目720的选择可以允许设备110的用户查看与约翰·阿普尔西德关联的电话号码和/或提供其它联系选项、诸如与约翰·阿普尔西德关联的另一电话号码、约翰·阿普尔西德的电子邮件地址等。另外,对动作项目720中的电话图标的选择可以使得任务管理器112恰在那时向约翰·阿普尔西德发起呼叫电话,而不是等待与任务项目关联的一个或者多个触发标准被满足。

提醒项目730指示当被检测到时将使得动作被执行的触发器的类型(“在汽车中时”)或者至少关于任务的警告。对提醒项目730的选择可以允许用户改变提醒的类型。

列表指配项目740指示任务项目所属的列表,该列表在该示例中是“难攻克的项目”列表。该列表是定制的列表的示例。对列表指配项目740的选择可以使得设备110显示属于“难攻克的项目”列表的多个任务项目。

所有待办事项列表

图8描绘设备110显示的并且包括关于多个任务项目的信息的所有待办事项列表的视图800。在该示例中,按日期对多个任务项目排序。可以已经基于用户选择图8的视图800中的所有待办事项列表820来生成视图800。视图800被划分成两个分节:包含将在一天内完成的任务项目(或者其引用)的分节810和包含将在随后一天内完成的任务项目的分节820。

在视图800中引用的任务项目中的一些任务项目已经被完成。在对应描述的左侧用较浅灰图像示出这样的已完成任务项目。可以通过其它技术、诸如复选标记将已经被完成的任务项目与尚未完成的任务项目区分开。

在图8中描绘的示例中,按对应任务应当被执行的日期(或者“到期日期”)来组织任务项目。然而,可以按设备110的用户将被警告或者提醒对应任务的日期(“警告日期”)、任务项目被创建的日期(“创建日期”)、任务项目被修改的日期(“修改日期”)或者对应任务被执行的日期(“完成日期”)来组织在视图800中引用的任务项目。

附近列表

图9描绘设备110显示的“附近”列表的视图900。可以已经基于用户选择图8的视图800a中的附近列表830来生成视图900。视图900包含关于基于距设备110的当前位置的距离而被排序的多个位置的信息。在列表的顶部指示的位置(“家”)与设备110的当前位置最近,而在列表的底部指示的位置(“松林学校”)距设备110的当前位置最远。

在视图900中指示的每个位置与不同位置列表关联。每个位置列表可以与一个或者多个任务项目关联。例如,“家”位置可以与(可以在用户选择“家”位置时显示的)四个任务项目关联,而“阿瑟顿干洗店”位置可以仅与一个任务项目关联。

由于基于距设备110的当前位置的距离对在视图900中指示的位置排序,所以当设备110的当前位置改变时,可以对位置指示符重新排序,可以从视图900去除一些位置指示符,并且在视图900中当前未显示的其它位置指示符可以在视图900中出现。例如,如果设备110当前位于视图900中指示的第二位置所标识的全食超市商店旁边的商店中,那么如果设备110显示视图900,则该全食超市位置指示符将在列表的顶部。

如以上所示,视图900包括“家”位置和“工作地”位置。可以用许多方式进行被标注为“家”(或者“工作地”)的位置与特定地址的关联。例如,许多移动设备存储关于移动设备的用户的简档信息。该信息被称为“迷卡(mecard)”。迷卡通常存储用户的家庭地址和用户的工作地址。因此,任务管理器112(或者另一过程)分析存储于设备110上的迷卡以确定用户的家庭地址和工作地址(如果有)。

在一个实施例中,半径与特定位置关联,并且与在该半径指示的距离内的位置关联的任何任务项目被认为与该特定位置关联。例如,与设备110的用户的家关联的半径是2英里。如果任务项目与公园关联并且公园在距家2英里内,则该任务项目和与家关联的其它任务项目一起与“家”列表关联。

位置列表视图

如先前所注意到的,位置列表是智能列表的示例。在一个实施例中,与位置关联(例如,作为一个或者多个触发标准的部分)的任何任务项目自动与位置列表关联,该位置列表关联于与任务项目的位置相同的位置。任务管理器112(或者在云130中的任务服务)可以维护多个位置列表。

图10a描绘设备110显示的位置列表视图1000。可以已经基于用户选择图9的附近视图900中的“家”位置指示符来生成位置列表视图1000。位置列表视图1000包含六个任务项目。与前四个任务项目中的每个任务项目相邻的钟图像指示将在设备110在用户的家里或者附近时或者在指定的日期的至少某一时间生成用于那些任务项目的提醒(或者警告)。不会为后两个任务项目生成提醒或者警告。

位置列表视图1000还包括当被选择时使得任务管理器112与地图应用通信的地图图标1002,该地图应用生成与地图图标关联的位置的地图。在该示例中,将生成用户的家的地图。

图10b描绘设备110显示的位置列表视图1050。可以已经基于用户选择图9的附近视图900中的“全食超市”位置指示符来生成位置列表视图1050。位置列表视图1050包含六个数据项目,这些数据项目中的每个数据项目可以是或者可以不是任务项目。替代地,在位置列表视图1050中的每个数据项目简单地标识在全食超市杂货店待购的杂货项目。杂货项目都不与提醒(但是它们可以)或者完成日期(但是它们可以)关联。

在位置列表视图1050中标识的杂货项目响应于来自设备110的用户的输入而与全食超市杂货列表关联。例如,用户说出以下命令“向我的杂货列表添加杏仁奶”或者“记得在我家附近的全食超市挑选杏仁奶”。设备110向nlp服务132发送反映该命令的语音数据。nlp服务132基于该语音数据确定用户想要购买杏仁奶。nlp服务132可以使得任务管理器112(a)创建用于购买杏仁奶的任务的任务项目并且向全食超市列表添加该任务项目或者(b)简单地向全食超市列表添加“杏仁奶”。

位置列表视图1050还包括当被选择时使得任务管理器112与地图应用通信的地图图标1052,该地图应用生成与地图图标关联的位置的地图。在该示例中,将生成由显示的地址标识的全食超市商店的地图。

智能列表

如先前所注意到的,按位置列表、按动作列表和按上下文列表是智能列表的示例。图11a描绘按上下文列表的视图1100;具体为在汽车中列表。图11b和图11d描绘不同的按动作列表的视图;具体为待呼叫列表和待发电子邮件列表。

视图1100包含与将在特定上下文、即“在汽车中”的上下文中执行的任务关联的任务项目。在汽车中列表中的任务项目可以与不同动作、诸如呼叫和获得指引关联。

对照而言,图11b中描绘的视图1110包含与相同动作关联的任务项目,该动作在该示例中是呼叫个人或者实体。在视图1110中的前三个任务项目具有电话图标,这指示用于在对应任务中指示的个人的电话号码为任务管理器112所知。然而,在视图1110中的最后任务项目不与电话图标关联,这指示用于“鲍勃”的电话号码不为任务管理器112肯定地已知,可能是因为在用户的联系人列表中的许多联系人可以具有名字鲍勃。选择视图1110中的“呼叫鲍勃”任务项目使得设备110显示图11c中描绘的视图1120。

视图1120指示在“呼叫鲍勃”任务项目中包含(或者与该任务项目关联)的两个数据项目:描述项目和动作项目。该动作项目指示多个联系人称为“鲍勃”。作为结果,动作项目包括被禁用的呼叫按钮,而与视图1110中的其它任务项目关联的呼叫按钮未被禁用。选择该动作项目可以发起用于明确“鲍勃”的身份的过程。例如,选择该任务项目可以使得任务管理器112显示姓名列表,这些姓名中的每个姓名具有名字鲍勃或者罗伯特。以该方式,明确身份或者电话号码可以比创建对应任务项目晚得多地发生。

图11d中描绘的视图1130包括六个任务项目,这些任务项目中的每个任务项目包括发电子邮件的动作。待发电子邮件任务项目的活动载荷变元包括“发往”或者电子邮件地址并且可选地包括用于电子邮件的主题行的主题。

在一个实施例中,从与任务管理器112分离的电子邮件应用创建“电子邮件”任务项目。电子邮件应用可以调取任务管理器112的api调用以创建其动作为发电子邮件的任务项目,其中该动作包括活动载荷,该活动载荷包括电子邮件地址和主题。

定制列表

如先前所注意到的,定制列表是包括内置列表和智能列表的三个主要列表类型之一。以上所示的定制列表的示例包括杂货列表570和待购列表580(图5a中引用的)。图12描绘可能响应于用户选择杂货列表570而生成的视图1200。视图1200包括六个数据项目,每个数据项目引用不同待购杂货项目。这些数据项目中的每个数据项目可以是仅具有描述的任务项目。数据项目可以已经基于来自nlp服务132的输入而与杂货列表关联。例如,nlp服务从设备110接收反映用于“从商店挑选新鲜面包”的用户命令的语音数据。nlp服务132确定设备110的用户打算从杂货商店购买新鲜面包并且将“新鲜面包”与杂货类别关联。作为响应,nlp服务132向任务管理器112发送用于创建任务项目的创建任务项目命令,该任务项目包括描述“新鲜面包”并且与杂货类别关联。作为响应,任务管理器112创建任务项目并且将该任务项目与任务管理器112所维护的杂货列表关联。

图13描绘另一类型的定制列表的视图1300:用户定义列表。该用户定义列表标题为“难攻克的项目”并且包含三个任务项目,这些任务项目中的第一任务项目与动作(即,呼叫)和上下文触发器(例如,“在汽车中”或者“在驾车之时”)关联。设备110的用户可以“手动地”将任务项目与用户定义列表关联。例如,在任务管理器112创建任务项目之后,用户选择该任务项目并且经由在设备110上显示的一个或者多个可选择(例如,菜单)选项来选择特定用户定义列表,这使得任务管理器112将该任务项目与该特定用户定义列表关联。

可选地,nlp服务132可以基于从设备110接收的输入数据(语音或者文本)确定用于与任务项目关联的特定列表。例如,语音数据可以反映用于“我需要为难攻克的项目写提议”的用户命令。nlp服务132确定“写提议”是该任务并且“难攻克的项目”是任务管理器112可以已经或者可以尚未创建的列表的名称。nlp服务132然后向任务管理器112发送描述(“写提议”)和待创建任务项目可以被添加到的可能列表的名称(“难攻克的项目”)。任务管理器112确定是否存在具有与“难攻克的项目”相同或者相似名称的列表。如果是这样,则任务管理器112创建新任务项目并且将该任务项目与该列表关联。如果不是,则任务管理器112创建具有该名称的新列表、创建新任务项目并且将该任务项目与新列表关联。

列表和备注

如先前所注意到的,列表可以包含不是任务的项目。这样的“非任务”可以被称为仅由描述构成的“备注”。图14描绘包含六个备注的最喜欢的酒列表的视图1400,这些备注中的每个备注引用不同的酒。

也如先前所注意到的,nlp服务132可以被配置用于识别列表名称,从而任务管理器112可以容易地向适当列表指配任务和备注。

日历事件

在一个实施例中,在日历应用的上下文中创建的日历事件用来创建由任务管理器112管理的任务项目。日历应用可以是任务管理器112的一部分或者可以是分离地执行的应用。例如,日历应用可能被配置为例如经由一个或者多个api调用向任务管理器112发送新创建的日历事件,该一个或者多个api调用使得任务管理器112基于日历事件的细节、诸如描述、日期、位置(如果有)、持续时间(如果有)和提醒(如果有)创建任务项目。可选地,任务管理器112可以提供允许用户查看日历并且创建与特定日期和时间或者日期集合关联的事件的日历服务。在创建事件时,任务管理器112还创建用于这些事件的任务项目。

图15描绘基于日历事件生成的任务项目的视图1500。任务项目包括四个数据项目:描述(“与伊丽莎白·里德共进午餐”)、开始时间“今天12pm”、持续时间(“1小时”)和提醒(“之前10分钟”)。选择四个数据项目中的任何数据项目可以允许设备110的用户编辑对应数据项目。在一个实施例中,如果对基于日历事件生成的任务项目进行改变,则向日历应用所管理的日历事件“推送”该改变。

在任一场景中,如果日历服务创建和维护的日历事件与位置关联,则基于该日历事件生成的任务项目也可以与该位置关联。在该情况下,任务管理器112可以自动关联任务项目与位置列表、诸如图10a的视图1000中的位置列表。

组合

尽管前文描述包括四种主要方式(生成任务项目、组织任务项目、触发通知和消耗任务项目),但是如在示例中的许多示例中所注意到的,这些方式中的每种方式可以被个别实施或者可以被一起使用。例如,自然语言处理可以用来生成任务项目,但是未使用这里描述的用于处理任务项目的任何方式(即,组织任务项目、触发通知和消耗任务项目)。作为另一示例,自然语言处理可以用来生成任务项目,并且可以使用如这里描述的用于组织任务项目的方式,但是未使用这里描述的用于触发通知或者消耗任务项目的任何方式。作为另一示例,未使用用于生成和组织任务项目以及触发通知的任何方式,但是使用如这里描述的用于消耗任务项目的方式。

硬件概述

根据一个实施例,这里描述的技术可以由一个或者多个专用计算设备实施。专用计算设备可以是硬接线的以用于执行这些技术或者可以包括被持久地编程用于执行这些技术的数字电子设备、诸如一个或者多个专用集成电路(asic)或者现场可编程门阵列(fpga)或者可以包括被编程用于按照固件、存储器、其它存储装置或组合中的程序指令执行这些技术的一个或者多个通用硬件处理器。这样的专用计算设备也可以组合定制硬接线逻辑、asic或者fpga与定制编程以实现这些技术。专用计算设备可以是桌面型计算机系统、便携计算机系统、手持设备、联网设备或者任何并入用于实施这些技术的硬接线和/或程序逻辑的其它设备。

例如,图16是图示可以在其上实施本发明的实施例的计算机系统1600的框图。计算机系统1600包括用于传达信息的总线1602或者其它通信机制,和与总线1602耦合用于处理信息的硬件处理器1604。硬件处理器1604可以例如是通用微处理器。

计算机系统1600还包括耦合到总线1602用于存储信息和将由处理器1604执行的指令的主存储器1606、诸如随机存取存储器(ram)或者其它动态存储设备。主存储器1606也可以用于存储在执行将由处理器1604执行的指令期间的临时变量或者其它中间信息。这样的指令在被存储于可由处理器1604访问的非瞬态存储介质中时,使得计算机系统1600变成被定制用于执行在指令中指定的操作的专用机器。

计算机系统1600还包括耦合到总线1602用于存储静态信息和用于处理器1604的指令的只读存储器(rom)1608或者其它静态存储设备。存储设备1610、诸如磁盘或者光盘被提供和耦合到总线1602以用于存储信息和指令。

计算机系统1600可以经由总线1602耦合到用于向计算机用户显示信息的显示器1612、诸如阴极射线管(crt)。包括字母数字和其它键的输入设备1614耦合到用于向处理器1604传达信息和命令选择的总线1602。另一类型的用户输入设备是用于向处理器1604传达指引信息和命令选择并且用于控制游标在显示器1612上的移动的游标控制1616、诸如鼠标、跟踪球或者游标方向键。该输入设备通常具有在第一轴(例如,x)和第二轴(例如,y)这两个轴中的两个自由度,这允许设备指定平面中的位置。

计算机系统1600可以使用定制的硬接线逻辑、一个或者多个asic或者fpga、固件和/或程序逻辑来实施这里描述的技术,该定制的硬接线逻辑、一个或者多个asic或者fpga、固件和/或程序逻辑与计算机系统组合使得计算机系统1600成为或者将计算机系统1600编程为专用机器。根据一个实施例,计算机系统1600响应于处理器1604运行主存储器1606中包含的一个或者多个指令的一个或者多个序列来执行这里的技术。可以从另一存储介质、诸如存储设备1610向主存储器1606中读取这样的指令。主存储器1606中包含的指令序列的运行使得处理器1604执行这里描述的过程步骤。在可选实施例中,可以取代或者结合软件指令使用硬接线电路装置。

如这里所用术语“存储介质”是指任何存储数据和/或指令的非瞬态介质,该数据和/或指令使得机器以特定方式操作。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质例如包括光盘或者磁盘、诸如存储设备1610。易失性介质包括动态存储器、诸如主存储器1606。存储介质的常见形式例如包括软盘、柔性盘、硬盘、固态驱动、磁带或者任何其它磁数据存储介质、cd-rom、任何其它光数据存储介质、任何具有孔图案的物理介质、ram、prom和eprom、flash-eprom、nvram、任何其它存储器芯片或者盒。

存储介质不同于传输介质、但是可以与传输介质结合地使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴线缆、铜线和光纤,这包括包含总线1602的接线。传输介质也可以采用声或者光波的形式、诸如在无线电波和红外线数据通信期间生成的那些的形式。

各种形式的介质可以参与向处理器1604输送一个或者多个指令的一个或者多个序列用于执行。例如,可以初始地在远程计算机的磁盘或者固态驱动上承载指令。远程计算机可以向它的动态存储器中加载指令并且使用调制解调器通过电话线发送指令。在计算机系统1600本地的调制解调器可以接收电话线上的数据并且使用红外线发送器以将数据转换成红外线信号。红外线检测器可以接收红外线信号中携带的数据,并且适当电路装置可以将数据放置于总线1602上。总线1602向主存储器1606输送数据,处理器1602从主存储器取回指令并且执行指令。主存储器1606接收的指令可以可选地在由处理器1604执行之前或者之后被存储于存储设备1610上。

计算机系统1600还包括耦合到总线1602的通信接口1618。通信接口1618提供与网络链路1620的双向数据通信耦合,该网络链路连接到本地网络1622。例如,通信接口1618可以是综合业务数字网络(isdn)卡、线缆调制解调器、卫星调制解调器或者用于提供与对应类型的电话线的数据通信连接的调制解调器。作为另一示例,通信接口1618可以是用于提供与兼容lan的数据通信连接的局域网(lan)卡。也可以实施无线链路。在任何这样的实现方式中,通信接口1618发送和接收携带数字数据流的电、电磁或者光信号,这些数字数据流代表各种类型的信息。

网络链路1620通常通过一个或者多个网络向其它数据设备提供数据通信。例如,网络链路1620可以通过本地网络1622提供与主机计算机1624或者与因特网服务提供商(isp)1626操作的数据设备的连接。isp1626又通过现在常称为“因特网”1628的全球分组数据通信网络提供数据通信服务。本地网络1622和因特网1628二者使用输送数字数据流的电、电磁或者光信号。通过各种网络的信号和在网络链路1620上并且通过通信接口1618的信号是传输介质的示例形式,这些信号向和从计算机系统1600输送数字数据。

计算机系统1600可以通过网络、网络链路1620和通信接口1618发送消息和接收包括程序代码的数据。在因特网示例中,服务器1630可能通过因特网1628、isp1626、本地网络1622和通信接口1618发送用于应用程序的请求代码。

接收的代码可以在它被接收时由处理器1604执行和/或存储于存储设备1610或者其它非易失性存储装置中以用于以后执行。

根据一些实施例,图17-图24示出根据如上所描述的本发明的原理的电子设备1700-2400的功能框图。设备的功能块可以由硬件、软件或者硬件和软件的组合实施以实现本发明的原理。本领域技术人员理解可以组合图17-图24中描述的功能块或者分离图17-图24中描述的功能块为子块以实施如以上描述的本发明的原理。因此,这里的描述可以支持这里描述的功能块的任何可能组合或者分离或者进一步定义。

如图17中所示,电子设备1700包括输入接收单元,该输入接收单元被配置用于从用户接收明确地指定任务的一个或者多个第一属性的输入。电子设备1700还包括耦合到输入接收单元1702的处理单元1702。在一些实施例中,处理单元1706包括任务项目生成单元1708和属性确定单元1710。

处理单元1706被配置用于基于输入来生成用于任务的任务项目(例如,用任务项目生成单元1708);基于与输入分离的上下文数据确定任务的一个或者多个第二属性(例如,用属性确定单元1710);以及使得多个属性与任务项目关联地被存储,其中多个属性包括一个或者多个第一属性和一个或者多个第二属性。

如图18中所示,电子设备1800包括被配置用于接收输入数据的输入接收单元,该输入数据基于在手持设备处从用户接收的输入并且明确地指定任务的一个或者多个第一属性。电子设备1800还包括被配置用于接收上下文数据的上下文数据接收单元1803,该上下文数据与输入数据分离并且基于被存储于手持设备处的数据。电子设备1800还包括耦合到输入接收单元1802和上下文数据接收单元1803的处理单元1806。在一些实施例中,处理单元1806包括任务项目生成单元1808和属性确定单元1810。

处理单元1806被配置用于基于上下文数据确定任务的未在输入数据中反映的一个或者多个第二属性(例如,用属性确定单元1810);并且使得任务项目基于一个或者多个第一属性和一个或者多个第二属性而被生成(例如,用任务生成单元1808)。

如图19中所示,电子设备1900包括被配置用于确定设备的一个或者多个特性的设备特性监视单元1902。电子设备1900还包括耦合到设备特性监视单元1902的处理单元1906。在一些实施例中,处理单元1906包括触发单元1908和任务动作单元1910。

处理单元1906被配置用于确定设备的一个或者多个特性中的任何特性是否满足与多个任务项目中的任务项目关联的一个或者多个触发标准(例如,用触发单元1908),其中多个任务项目中的每个任务项目与动作和必须在执行动作之前出现的一个或者多个触发标准关联;以及响应于确定设备的一个或者多个特性满足多个任务项目中的特定任务项目的一个或者多个触发标准,执行与该特定任务项目关联的动作(例如,用任务动作单元1910)。

如图20中所示,电子设备2000包括被配置用于分析第一数据的数据分析单元2002,该第一数据指示相对于手持设备远离的事件已经发生。电子设备2000还包括耦合到数据分析单元2002的处理单元2006。在一些实施例中,处理单元2006包括触发单元2008和任务动作单元2010。

处理单元2006被配置用于基于第一数据确定与多个任务项目中的特定任务项目关联的一个或者多个特定触发标准是否被满足(例如,用触发单元2008),其中多个任务项目中的每个任务项目与动作和指示将何时执行动作的一个或者多个触发标准关联;基于第一数据确定一个或者多个特定触发标准被满足(例如,用触发单元2008);以及响应于确定一个或者多个特定触发标准被满足,使得与特定任务项目关联的动作在手持设备处被执行(例如,用任务动作单元2010)。

如图21中所示,电子设备2100包括被配置用于存储包括第一任务项目和第二任务项目的多个任务项目的任务项目存储单元2102,其中多个任务项目中的第一任务项目与第一动作关联,并且其中多个任务项目中的第二任务项目与第二动作关联,该第二动作是与第一动作不同的类型。电子设备2100还包括耦合到任务项目存储单元2102的处理单元2106。在一些实施例中,处理单元2106包括任务动作单元2108。

处理单元2106被配置用于使得多个任务项目被存储于任务项目存储单元中;并且在使地多个任务项目被存储之后:使地与第一任务项目关联的第一动作被执行(例如,用任务动作单元2108),并且使地与第二任务项目关联的第二动作被执行(例如,用任务动作单元2108)。

如图22中所示,电子设备2200包括被配置用于存储多个任务项目的任务项目存储单元2202,其中多个任务项目中的每个任务项目与动作关联。电子设备2200还包括耦合到任务项目存储单元2202的处理单元2206。在一些实施例中,处理单元2206包括任务管理器单元2208。

处理单元2206被配置用于使地多个任务项目被存储于任务项目存储单元中;并且由任务管理器使地与任务管理器分离的应用执行与特定任务项目关联的动作(例如,用任务管理器单元2208)。

如图23中所示,电子设备2300包括被配置用于存储在多个列表中组织的多个任务项目的任务项目存储单元2302。电子设备2300还包括被配置用于接收输入的输入接收单元2303,该输入指示关于新任务的信息。电子设备2300还包括耦合到任务项目存储单元2302和输入接收单元2303的处理单元2306。在一些实施例中,处理单元2306包括任务项目生成单元2308和任务列表单元2310。

处理单元2306被配置用于响应于接收到输入而生成用于新任务的任务项目(例如,用任务项目生成单元2308);确定向多个列表中的哪个列表添加任务项目,其中该输入未指定多个列表中的任何列表(例如,用任务列表单元2310);以及响应于确定向多个列表中的特定列表添加任务项目,存储将该任务项目与特定列表关联的数据(例如,在任务项目存储单元2302中)。

如图24中所示,电子设备2400包括被配置用于存储多个任务项目的任务项目存储单元2402,其中每个任务项目与多个列表中的至少一个列表关联。电子设备2400还包括被配置用于接收输入的输入接收单元2403,该输入指示关于新任务的信息。电子设备2400还包括耦合到任务项目存储单元2402和输入接收单元2403的处理单元2406。在一些实施例中,处理单元2406包括任务项目生成单元2408和任务列表单元2410。

处理单元2406被配置用于在输入被接收之后,基于信息生成用于新任务的任务项目(例如,用任务项目生成单元2408);确定向多个列表中的特定列表添加该任务项目,其中该输入未指定特定列表(例如,用任务列表单元2410);以及响应于确定向特定列表添加该任务项目,存储将该任务项目与特定列表关联的数据(例如,在任务项目存储单元2402中)。

在前文说明书中,已经参照可以随着实施方式变化的许多具体细节描述了本发明的实施例。因而,将在示例性而非限制性意义上看待说明书和附图。本发明的范围的唯一和排他指示以及申请人旨在于使之作为本发明的范围的内容是从本申请产生的权利要求集合的文字和等效范围,其具有这样的权利要求的具体产生形式并且包括任何随后的修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1