数字助理请求的异步处理的制作方法

文档序号:16596037发布日期:2019-01-14 19:39阅读:232来源:国知局
数字助理请求的异步处理的制作方法

本申请要求2016年6月27日提交的题为“asynchronousprocessingofdigitalassistantrequests”的美国专利申请序列号15/193,929的优先权,其全部内容通过引用结合于此。



背景技术:

一些电话和其他设备提供允许用户提交查询并做出其他请求的数字助理功能。例如,用户可以向设备说出语音查询,并且设备可以响应于该查询获得并呈现搜索结果。数字助理功能可以涉及由服务器系统例如执行语音识别的处理。因此,数字助理功能对用户设备和服务器系统之间的无线通信信道的变化敏感,并且当信道上存在等待时间、临时降低数据速率或信道中断时,功能可能受到影响。这可能是由无线电信道条件引起的,例如由干扰或源自于网络的问题引起的。在对用户的设备执行请求的部分处理的情况下,设备的技术限制或设备资源在其他任务上的使用可能妨碍数字助理功能的操作。



技术实现要素:

在一些实现方式中,对数字助理(例如,对话代理)做出的至少一些用户请求可以与用户的请求异步地执行。用户可以向数字助理提交各种类型的请求,其中一些可能不需要执行以立即或与用户的请求同步。服务器系统可以识别适合于异步执行的用户请求,并且将用于执行那些请求的定时与用户与数字助理的对话分离。结果,系统可以避免可能阻止用户向数字助理发出其他请求的延迟。例如,在同步执行的情况下,用户通常需要等待直到最近请求的动作完成之后,用户才能发出新请求。然而,可以通过异步处理来避免这些延迟,因为可以与先前请求的正在处理或计划执行的动作并行地接收和处理新请求。作为示例,当选择第一动作用于异步执行时,数字助理可以提供将要执行第一动作的确认,并且在第一动作完成之前接收并处理来自用户的进一步请求。

服务器系统用于在用户请求的同步和异步动作之间进行选择的技术也可以由一个或多个客户端设备执行,或者由服务器系统和一个或多个客户端设备的组合执行。例如,客户端设备可以评估用户请求以确定是否针对请求同步地或异步地执行特定请求。如下所述,这可以使客户端设备能够处理临时网络中断和其他连接干扰。

为了增强可靠性和可信任性,可以使异步执行受到某些时间限制。通过异步执行,不需要与请求顺序地或紧接在请求之后执行动作,因此可以在用户与数字助理的对话转移到其他主题之后执行。但是,服务器系统可以监视动作的执行,并采取措施确保在合理的时间内执行。例如,可以设置超时时段来执行动作。如果在超时时段内未完成执行,则服务器系统可以重试该动作或通知用户延迟或失败。这些约束可以实现为“软”实时约束,从而可以以一些可允许的延迟量执行动作,但是保证足够快地发生以使得与同步执行的差异对于用户可忽略不计。

作为示例,用户可以请求在第二天的某个时间设置日历约会。数字助理系统可以确定设置约会的动作可以异步执行,例如,因为动作不需要立即处理或输出给用户。然而,数字助理系统可以设置时间约束,诸如从用户请求的时间起5分钟或15分钟,用于在用户的各种设备之间执行动作和同步数据。该约束允许数字助理系统延迟执行的灵活性,例如,用于负载平衡或管理第三方服务器系统的延迟,同时还限制用户的潜在不便,用户可能希望在进行请求之后不久就查看即将到来的约会。

本说明书中描述的主题的一个创新方面体现在包括以下动作的方法中:接收指示对于数字助理的用户请求的数据;确定与用户请求相对应的动作;确定所述动作被分类为要与用户请求异步执行的动作;并且基于确定所述动作被分类为要与用户请求异步执行的动作:(i)发送用于输出的确认消息;(ii)使得动作与用户请求异步执行。

该方面和其他方面的其他实施例包括相应的系统、装置和被配置为执行在计算机存储设备上编码的方法的动作的计算机程序。一个或多个计算机或其他处理设备的系统可以通过安装在系统上的软件、固件、硬件或它们的组合来如此配置,所述软件、固件、硬件或它们的组合在操作中使系统执行动作。一个或多个计算机程序可以通过具有指令来如此配置,所述指令当由数据处理装置执行时使装置执行动作。

这些和其他实现方式可各自任选地包括一个或多个下列特征。

在一些实现方式中,接收指示对数字助理的用户输入的数据包括接收包括语音命令的音频数据;该方法包括执行自动语音识别以确定语音命令的转录;并且确定与用户输入相对应的动作包括基于转录确定动作。

在一些实现方式中,所述用户请求是来自用户的第一用户请求,并且其中使得所述动作与所述用户请求异步地执行包括:在执行第一用户请求所请求的动作之前,从所述用户接收对所述数字助理的一个或多个其他用户请求。

在一些实现方式中,所述用户请求是第一用户请求,并且使得所述动作与所述用户请求异步地执行包括:在执行第一用户请求所请求的动作之前,执行与来自所述用户的对数字助理的一个或多个其他用户请求相对应的动作。

在一些实现方式中,发送用于输出的确认消息包括发送指示将执行所述动作的确认消息。

在一些实现方式中,使用文本到语音系统来生成包括合成语音的音频数据;以及发送确认消息包括发送包括合成语音的所生成的音频数据。

在一些实现方式中,确定所述动作被分类为要与所述用户请求异步执行的动作包括:确定与特定动作类型相对应的所述动作;访问分配数据,该分配数据指示是否分配了与请求同步或异步执行的不同动作类型;以及基于分配数据确定特定动作类型被分配为与请求异步执行。

在一些实现方式中,确定所述动作被分类为要与所述用户请求异步执行的动作包括:识别配置为执行动作的应用或服务器;以及确定对所识别的应用或服务器的请求已经被指定用于异步处理。

在一些实现方式中,使得所述动作与所述用户请求异步地执行包括:存储指示所请求的动作的记录;以及基于存储的记录,向服务器系统发送请求以执行该动作。

在一些实现方式中,使得所述动作与所述用户请求异步地执行包括:基于所识别的动作选择数据存储系统的区域;发送写入请求以在所选择的区域中存储关于动作的数据;响应于写入请求,发出远程过程调用以执行与数据存储系统的所选择的区域相对应的软件;以及使用执行的软件生成对应用服务器执行动作的请求。

在一些实现方式中,使得所述动作与所述用户请求异步地执行包括:向服务器系统发送请求以执行该动作;设置完成操作的超时时段;在超时时段结束之前确定动作已完成;以及存储指示动作的执行的数据。

在一些实现方式中,额外特征包括:接收指示对数字助理的第二用户请求的数据;确定与第二用户请求相对应的第二动作;确定第二动作未被分类为与第二用户请求异步执行的动作;以及基于确定第二动作未被分类为要与第二用户请求异步执行的动作,使第二动作与用户请求同步地执行。

在一些实现方式中,额外特征包括:接收指示对数字助理的第二用户请求的数据;确定与第二用户请求相对应的第二动作;确定第二动作被分类为要与第二用户请求异步执行的动作;基于确定第二动作被分类为要与第二用户请求异步执行的动作,发起第二动作的执行;确定在超时时段内未执行第二动作;以及提供指示第二动作的执行失败的消息用于输出。

有利实施方式可包括以下特征中的一个或多个。例如,本文档中公开的技术可以减少延迟,提高可靠性并提高处理诸如对数字助理的请求的用户请求的效率。在一些数字助理系统中,用户请求的处理可能导致阻止用户在完成第一请求之前做出额外请求的延迟。一些数字助理使用基于客户端和基于服务器的过程的组合来处理语音输入,导致在客户端设备和服务器之间来回地多次通信的延迟。客户端设备可能需要第一网络往返以将语音数据发送到服务器以用于语音识别,然后接收语音数据的转录。一旦客户端设备处理转录的文本,则可能需要第二网络往返,以使客户端设备的本地应用与后端应用服务器通信并从应用服务器接收确认。延迟可能很严重,尤其是当第三方服务器响应缓慢或暂时不可用时。这些网络操作加上在每个阶段处理所需的时间可能导致语音请求与所请求的动作的完成之间的不期望的延迟。这些延迟可能阻止用户同时执行其他任务,因为与数字助理的对话通常不能继续,直到完成当前请求的处理。

下面讨论的异步处理技术可以减少或消除用户所经历的延迟,并且可以允许用户在已经执行当前请求所请求的动作之前继续与数字助理的对话。可以从相应的请求异步执行动作,这将动作的执行时间与正在与助理进行的对话分离。还可以施加动作的时间段,使得可靠地发生异步执行而不会给用户带来不便。

用于在服务器处异步处理语音命令的所公开技术还可以增加数字助理的可靠性和灵活性。一些数字助理依赖于客户端设备来管理或发起用户请求的动作。某些动作可能需要在客户端设备上安装特定的应用以执行动作。但是,如果客户端设备缺少适当的处理能力、未安装适当的应用、或者未适当配置以执行动作,则可能无法执行请求的动作。在服务器上执行动作可提高可靠性,因为执行不依赖于客户端设备的功能。这允许数字助理与具有较低硬件和软件要求的平台(包括诸如可穿戴设备或可能没有用于处理动作的适当应用的嵌入式设备)一起使用。

例如,用户可以说出由用户的手表接收的命令“将面包添加到购物清单”。手表不需要包括列表管理应用来执行操作,因为一个或多个服务器可以执行动作并且还使新列表信息与具有列表管理应用的用户设备同步。结果,利用动作的异步的基于服务器的执行,可以在任何客户端设备处向数字助理做出服务器可以实现的任何请求,而不管客户端设备满足请求的能力。

所公开的技术还可以提高响应用户请求的效率。服务器可以创建要代表许多用户异步执行的动作队列。由于动作是异步执行的,因此执行的延迟可能根据用户请求的量而不同,而不会影响用户体验。处理延迟对用户是隐藏的,允许服务器通过随时间推移动作的执行来处理更大峰值量的请求。虽然允许一些延迟,但每个动作的延迟量可能受到限制。可以要求动作在例如5分钟或15分钟或另一时间段的时间段内发生,以提供“软”或近似实时执行。

该技术还提高了用户设备处的处理效率。由于服务器处理语音命令的执行,因此用户设备需要进行较少的处理。这降低了功耗并延长了电池寿命,同时增强了数字助理与具有有限处理能力的诸如手表或其他可穿戴设备的设备一起使用的能力。

另外,处理的异步性质可以允许设备高速缓存交互或处理低连接性。可以在设备处创建命令队列,然后将其发送以用于稍后执行。缺少与服务器连接性的设备仍然可以接收命令并存储它们,然后在恢复连接性后将它们发送到服务器用于处理。同样,如果第一服务器尝试使用不可用的第三方服务器执行动作,则第一服务器可以延迟或重试该动作,直到动作成功或需要通知用户该故障。

在附图和以下描述中阐述了本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。

附图说明

图1和2是示出用于用户请求的异步处理的系统的示例的图。

图3是示出用于用户请求的异步处理的过程的示例的流程图。

各附图中相同的附图标记和名称表示相同的元件。

具体实施方式

图1是示出用于用户请求的异步处理的系统100的示例的图。系统100包括用户102可以用来访问数字助理功能的用户设备104。用户设备104通过网络106与服务器系统110通信。网络106可以包括公共和/或专用网络,并且可以包括因特网。服务器系统110还与应用服务器112通信以使得执行所请求的动作。图1还示出了数据流,如阶段(a)至(i)所示,其表示数据流。阶段(a)至(i)可以以所示顺序发生,或以与所示顺序不同的顺序发生。例如,一些阶段可以并发发生。

用户设备104可以是计算设备,例如移动电话、智能电话、个人数字助理(pda)、音乐播放器、电子书阅读器、平板电脑、可穿戴计算设备、膝上型计算机、台式计算机或其他便携式或固定式计算设备。用户设备104可以以麦克风、键盘、触摸屏或其他接口为特征,使得用户102能够向用户设备104提供输入。

服务器系统110可包括一个或多个计算机。在一些实现方式中,服务器系统110的一个或多个计算机可以与用户设备104通信,并且一个或多个其他计算机可以执行其他任务,诸如语音识别、文本到语音处理、用户请求的分析等等。

应用服务器112可以是支持一个或多个应用的服务器。应用服务器112可以是独立于服务器系统110操作的第三方服务器。例如,第三方服务器可以是后端应用服务器,其提供用于在用户设备104上显示的信息或用于应用的配置的信息。服务器系统110可以与多个应用服务器112通信,并且每个可以对应于不同的应用。例如,服务器系统110可以与第一应用服务器通信以执行关于提醒应用的动作,与第二应用服务器通信以执行关于日历应用的动作等等。

网络106可以包括公共和/或专用网络,并且可以包括因特网。

本文档中公开的技术可以减少延迟,提高可靠性并提高处理用户请求的效率,诸如对数字助理的请求。在一些数字助理系统中,用户请求的处理可能导致阻止用户在完成第一请求之前做出额外请求的延迟。一些数字助理使用基于客户端和基于服务器的处理的组合来处理语音输入,导致在客户端设备和服务器之间来回地多次通信的延迟。客户端设备可能需要第一网络往返以将语音数据发送到服务器以用于语音识别,然后接收语音数据的转录。一旦客户端设备处理转录的文本,则可能需要第二网络往返,以使客户端设备的本地应用与后端应用服务器通信并从应用服务器接收确认。延迟可能很严重,尤其是当第三方服务器响应缓慢或暂时不可用时。这些网络操作加上在每个阶段处理所需的时间可能导致语音请求与所请求的动作的完成之间的不期望的延迟。这些延迟可能阻止用户同时执行其他任务,因为与数字助理的对话通常不能继续,直到完成当前请求的处理。

下面讨论的异步处理技术可以减少或消除用户经历的延迟,并且可以允许用户在已经执行当前请求所请求的动作之前继续与数字助理的对话。可以从相应的请求异步执行动作,这将动作的执行时间与正在与助理进行的对话分离。还可以施加动作的时间段,以便可靠地发生异步执行而不会给用户带来不便。

用于在服务器处异步处理语音命令的所公开技术还可以增加数字助理的可靠性和灵活性。一些数字助理依赖于客户端设备来管理或发起用户请求的动作。某些动作可能需要在客户端设备上安装特定的应用以执行动作。但是,如果客户端设备缺少适当的处理能力、未安装适当的应用、或者未适当配置以执行动作,则可能无法执行请求的动作。在服务器上执行动作提高可靠性,因为执行不依赖于客户端设备的功能。这允许数字助理与具有较低硬件和软件要求的平台(包括诸如可穿戴设备或可能没有用于处理动作的适当应用的嵌入式设备)一起使用。

例如,用户可以说出由用户的手表接收的命令“将面包添加到购物清单”。手表不需要包括列表管理应用来执行动作,因为一个或多个服务器可以执行该动作并且还使新列表信息与具有列表管理应用的用户设备同步。结果,利用动作的异步的基于服务器的执行,可以在任何客户端设备处向数字助理做出服务器可以实现的任何请求,而不管客户端设备满足请求的能力如何。

所公开的技术还可以提高响应用户请求的效率。服务器可以创建要代表许多用户异步执行的动作队列。由于动作是异步执行的,因此执行的延迟可能会根据用户请求的量而改变,而不会影响用户体验。处理延迟对用户是隐藏的,允许服务器通过随时间推移操作的执行来处理更大峰值量的请求。虽然允许一些延迟,但每个动作的延迟量可能受到限制。可以要求动作在例如5分钟或15分钟或另一时间段的时间段内发生,以提供“软”或近似实时执行。

该技术还提高了用户设备处的处理效率。由于服务器处理语音命令的执行,因此用户设备需要进行较少的处理。这降低了功耗并延长了电池寿命,同时增强了数字助理与具有有限处理能力的诸如手表或其他可穿戴设备的设备一起使用的能力。

另外,处理的异步性质可以允许设备高速缓存交互或处理低连接性。可以在设备处创建命令队列,然后将其发送以用于稍后执行。缺少与服务器连接性的设备仍然可以接收命令并存储它们,然后在恢复连接性后将它们发送到服务器用于处理。同样,如果第一台服务器尝试使用不可用的第三方服务器执行动作,则第一服务器可以延迟或重试该动作,直到动作成功或需要通知用户该故障。

在图1的示例中,用户102使用用户设备104向数字助理发出请求。该请求被提供给服务器系统110,服务器系统110确定用户102请求的动作可以与请求异步地执行。结果,在执行所请求的动作之前,服务器系统110向用户设备104发送指示将执行所请求的动作的确认。这允许在服务器系统110并行地管理已经请求的动作的执行的同时用户向数字助理做出进一步的请求。尽管动作是异步执行的,但是服务器系统110对执行的定时施加约束,使得动作在适当的时间量(例如在最大时间段内)内发生。

更详细地,在阶段(a)中,用户设备104从用户102接收用户请求。用户102可以做出对通过用户设备104访问或由用户设备104提供的数字助理功能的请求。用户102可以以任何多种方式调用数字助理,诸如说出热门词、按下屏幕上按钮、按下并保持“主页”按钮、执行手势。用户可以通过任何适当类型的用户输入(诸如键入的输入或语音输入)来做出请求。在所示示例中,用户102说出语音命令108,“设置明天下午4:00的提醒。”用户设备102检测语音输入并记录表示语音命令108的音频数据。

在阶段(b)中,用户设备104将指示用户请求115的数据发送到服务器系统110。例如,当做出作为语音输入的请求时,用户设备104可以为用户的话语提供音频数据。音频数据可以是由用户设备102记录的音频波形、压缩形式的音频信息、或从记录的音频导出或提取的信息,诸如指示诸如梅尔频率系数的语音特征的数据。

在阶段(c)中,服务器系统110解释用户请求115以确定用户102已经请求执行什么动作。服务器系统110还可以确定关于应该如何执行动作的其他细节。服务器系统110包括分析请求的请求解释器模块120。在一些实现方式中,请求解释器模块120获得表示用户请求的文本。对于语音请求,请求解释器模块120可以获得来自自动语音识别器的接收音频的转录,其可以由服务器系统110或另一系统提供。

然后,请求解释器模块120从请求中提取信息以确定请求的参数。例如,可以识别所请求的动作的类型或类别。请求解释器模块120可以解析用户的请求并识别指示不同动作的术语、短语或模式。例如,可以访问术语和动作类型之间的映射,并且模块120可以使用映射来查找用户请求的项的适当动作类型。作为另一示例,请求的文本可以使用已知的语法来表示对某些类型的动作的请求。当用户请求与一个语法匹配时,可以选择对应于语法的动作类型。作为另一示例,分类器或机器学习系统可以分析该请求以确定用户102已经请求了什么动作。

在图1的示例中,分析语音命令108的转录文本“设置明天下午4:00的提醒”。请求解释器模块120确定该请求是针对“提醒”的动作类型。该动作类型是从包括呼叫、电子邮件、提醒、搜索、日历、文本消息等的多个预定动作类型的集合中选择的,其中每个动作类型与一个或多个关键字或语法相关联。也可以使用其他类型的动作。例如,系统110可以被配置为接收和处理关于家庭自动化的请求,诸如打开和关闭灯或电器、或者锁定、解锁、打开或关闭门。确定用户与数字助理的交互请求特定类型的动作可以帮助确定稍后如何处理该请求。

在一些实现方式中,请求解释器模块120确定用户102所请求的动作的其他参数。例如,通过解析表示用户请求的文本,确定指示应如何执行动作的细节的数据。在图1的示例中,请求解释器模块120例如基于项“设置”确定在“提醒”动作的一般类别内,动作涉及设置新的提醒。这有助于定义所请求的特定动作并将其与同样属于“提醒”动作类型的其他动作区分开。例如,提醒应用可以允许某个动作集合,诸如设置新提醒、改变提醒的时间、改变提醒的描述或取消提醒。请求解释器模块120可以例如通过应用编程接口(api)提供的字段或输入确定提醒应用使用什么信息,并基于对用户请求的分析来确定对应的值。作为另一示例,请求解释器模块120可以确定所请求的提醒是针对日期“明天”和时间“下午4:00”。每个动作类型可以具有用于指定该动作类型的动作的特性的相关联的数据类型或字段的集合。请求解释器模块120可以访问存储的数据以确定哪些参数与动作类型相关,并且还确定哪些参数由用户请求的文本指示。

在一些实现方式中,识别将执行所请求的动作的特定应用、应用类型或服务。例如,特定动作类型可以与一个或多个应用或服务相关联。在一些实现方式中,动作类型对应于单个应用或服务。例如,当用户请求在餐馆预约时,可以识别能够执行该动作的相应应用或服务。类似地,对于设置日历约会的请求,可以将请求识别为对应于“日历”动作类型。在请求之前,“日历”动作类型可以与日历应用或服务相关联,使得当接收请求时执行日历动作可能需要的适当的数据类型、数据格式等是可用的。

在阶段(d)中,服务器系统110确定应当相对于用户的请求同步还是异步地执行用户请求的动作。服务器系统110可以基于所请求的动作的特性来选择适当的执行类型。例如,服务器系统110可以基于动作类型或动作的其他特性来确定动作是否被分类为要与用户请求异步执行的动作。

用户通常期望一些动作(如拨打电话或获得搜索结果)将无延迟地执行。其他动作(如设置日历约会)不需要立即执行。设置日历约会的适度延迟通常不会给用户带来不便,只要该动作在计划的时间之前并且在用户打开日历以查看当天的约会之前执行。在为同步或异步执行分配动作时,也可以考虑其他要求,诸如用于执行动作的第三方系统的要求。例如,对于需要与具有短暂超时(诸如在机票、电影座位或餐厅预订被释放以供他人购买之前最多两分钟)的第三方服务器进行通信的动作,可能需要同步执行。在接收用户请求之前,可以使用这些和其他因素预先指定哪些动作或动作类型应使用异步执行。另外或作为替代,可以响应于接收用户请求来考虑因素。

作为示例,服务器系统110可以使用执行选择器模块122来在执行用户请求的动作的不同模式之间进行选择。执行选择器模块122可以访问分配数据130,该分配数据130指示哪些动作类型被指定用于同步处理,以及哪些动作类型被指定用于异步处理。例如,图1中的分配数据130将每个动作类型映射到同步执行(“s”)或异步执行(“a”)。该信息可以在用户请求之前预先确定和存储,但也可以根据需要进行更新和更改。在所示示例中,分配数据130指示“提醒”动作类型的动作被指定用于异步执行,因此执行选择器模块122确定用户请求的异步执行是适当的。

执行选择器模块122可以执行额外处理以验证异步执行是否合适。例如,即使请求的动作属于通常适合异步执行的类型,请求的特定细节也可能使其不太合适。例如,为下一周设置日历约会可能不是时间关键的,但是设置在请求之后很近的约会可能会增加使用异步处理可能不够快地执行该动作的风险。可以考虑用户请求的定时要求,并在需要时选择同步处理以确保及时执行。

可以针对所有动作类型或针对特定动作类型单独地设置预定时间窗口,使得需要在时间窗口内发生的动作是同步执行的,即使它们适合异步执行也是如此。可以根据执行异步动作所需的时间量来设置该时间窗口,例如,表示用于异步执行的先前动作的执行的平均或最坏情况时间。可以指定特定时间,诸如距用户请求1小时、或者距用户请求4小时。作为另一示例,可以选择需要在动作被请求的同一天执行的动作以用于同步执行。异步处理适当的时间窗口可以对于所有动作类型是相同的,或者可以对于各个动作类型是不同的,或者可以对于特定动作设置。

在图1的示例中,一旦执行选择器模块122确定“提醒”动作类型被指定用于异步处理,模块120还将提醒的时间(例如,明天下午4:00)与时间范围限制的时间段(例如,当天)进行比较。由于动作不需要在请求的同一天执行,因此执行选择器模块122确认应该使用动作的异步执行。如果提醒动作请求了在限制时间段内(例如,在同一天)的提醒,则执行选择器模块122可能替代选择同步处理,以最小化用户因使用异步处理的可能延迟而不方便的风险。

还可以使用确定异步或同步执行的其他方式。作为示例,可以使用分类器或一系列规则来确定异步执行是否适合于所请求的动作。作为另一示例,执行选择器模块120可以生成一个或多个分数,其反映例如所请求的动作的时间敏感性、通过延迟执行对用户的潜在不便、通过异步执行可能发生的估计延迟量、异步执行给用户带来不便的可能性,等等。然后可以将分数与一个或多个阈值进行比较,以确定异步或同步执行是否最适合于所请求的动作。

在阶段(e)中,服务器系统110生成指示将执行所请求的动作的确认消息。代替确认已经执行了该动作,确认消息确认收到请求和/或承诺将来执行该动作。结果,可以在不等待动作的执行完成的情况下提供确认。可以基于所请求的动作生成确认消息的内容。例如,对于设置提醒的动作,可以生成消息文本132,诸如“好的,我将设置提醒。”可以以诸如文本数据、音频数据或两者的任何适当的形式提供消息。服务器系统110可以使用文本到语音模块124来生成包括消息文本的合成话语的音频数据134。

在一些情况下,指示将执行动作的初始确认用作对用户102的主要确认,并且在最终按照承诺执行动作之后不自动提供额外确认。在其他情况下,可以稍后响应于动作的执行或者响应于关于动作的状态的用户请求,向用户102提供已经执行动作的额外确认。

在阶段(f)中,服务器系统110将确认消息136发送到用户设备104。然后,用户设备104将确认输出到用户102。在所示示例中,确认消息136包括音频数据134,并且用户设备104输出具有合成语音的音频“好的,我将设置提醒。”确认消息136可以包括消息文本130,并且用户设备104可以附加地或替代地显示消息文本130,以向用户102提供确认。

因为服务器系统110异步地处理所请求的动作的执行,所以动作的执行不会阻止对数字助理的额外用户请求的输入或处理。用户102可以在执行所请求的动作之前或同时继续与数字助理的对话。另外,由于动作由服务器系统110执行,因此执行不消耗用户设备104上的处理资源或电源,并且执行不要求用户设备104的任何特定硬件或软件要求。这增强了具有有限处理能力和/或电池电力限制的用户设备的操作。它还可以提高系统的灵活性,因为执行独立于用户设备的配置和功能。任何适当类型的设备都可用于请求异步执行的动作,而无论用户设备是否安装了可以执行所请求的动作的本地应用。

在阶段(g)中,服务器系统110通过在数据存储系统142中写入对应于用户请求的动作数据140来开始执行所请求的动作的过程,数据存储系统142可以是数据库、表格、文件系统、或其他适当的数据存储系统。动作数据140可以包括指定要执行的特定动作的记录,例如,由请求解释器模块120确定的信息。动作数据140还可以包括指示用户102的身份或用户帐户的用户标识符。通常,动作数据140可以包括具有为请求动作的特定用户102执行所请求的动作所需的适当信息的数据集合。可以将用于许多不同用户的请求动作的信息临时存储在数据存储系统142中,直到完成动作的异步处理。

在一些实现方式中,数据存储系统142将动作的动作数据140指定为对应于特定动作类型。可以以将动作数据140与对应的动作类型相关联的方式存储动作数据140。例如,可以为动作数据140分配指示动作类型的码或标签。作为另一示例,动作数据140可以存储在与动作类型对应的数据存储系统142的区域中。数据存储系统142可以包括每个对应不同的动作类型的多个数据存储区域,如图1中的列所示。用于动作的动作数据140存储在用于相应动作类型的数据存储区域中。例如,用于“提醒”动作的动作数据140存储在为“提醒”动作指定的区域中。

使得动作数据140被存储的写入请求可以触发促进动作的执行的其他过程。如上所述,每个动作类型可以与用于执行该类型的动作的应用或服务相关联。不同的应用和服务可以使用不同类型的输入数据或不同的数据格式。每个动作类型可以具有特定的软件模块146a-146d或“插件”,用于促进与执行该类型的动作的应用或服务的通信。对于不同的动作类型使用单独的模块146a-146d允许服务器系统110利用不同的应用或服务执行各种动作类型。分开模块146a-146d还使得更容易识别和纠正问题并更新各个动作类型的处理。在一些实现方式中,模块146a-146d可以是大约100行代码的量级。每个模块146a-146d可以被配置为将关于动作的数据格式化为适当的请求,并将具有格式化数据的远程过程调用发送到适当的服务器以执行动作。结果,服务器系统110可以通过运行与动作类型相对应的模块146a-146d来指导用户102和其他用户请求的每个动作的执行。

为了调度由不同用户请求的许多动作的异步执行,服务器系统110可以使用缓冲器或队列对执行进行优先级排序。在图1中,服务器系统110使用先进先出队列148,其中队列148中的每个项表示被选择为异步执行但尚未执行的动作。当用于所请求的动作的动作数据140被写入数据存储系统142时,用于动作的令牌150被添加到队列148。该令牌150可以包括对相应的动作数据140的引用。服务器系统110按添加项的顺序处理队列148中的项。例如,处理令牌150可以涉及执行对应于动作数据140的动作类型的模块146c。结果,在处理队列148中的其他项时的延迟之后,调用模块146c以使用该动作数据140生成远程过程调用api调用或执行用户102请求的动作的其他请求。在该示例中,模块146c被配置为生成对应用服务器112设置或调整提醒的请求。

在阶段(h)中,服务器系统110设置用于执行用户请求的动作的时间约束。由应用服务器112引起的延迟量可以是高度可变的,尤其是对于第三方应用服务器。为了确保所请求的动作在所需的时间量内发生,服务器系统110为请求设置时间段152,例如,超时时段或最大允许时间量。作为示例,服务器系统110可以允许最多两分钟、或五分钟,或一些其他有限量的时间来完成动作。可以针对所有动作类型全局设置时间段152的长度,或者可以针对特定动作类型或特定应用服务器单独设置时间段152的长度。

在阶段(i)中,服务器系统110将由模块146c生成的请求160发送到应用服务器112,并且应用服务器112执行用户请求的动作。在一些实例中,应用服务器112是用于第三方应用的后端服务器。一旦应用服务器112例如,通过为图1中的用户102设置提醒执行用户请求的动作,用于提醒动作的数据由应用服务器112存储在例如云存储器中。应用服务器112可以与用户设备104以及与用户102的用户帐户相关联的其他用户设备同步数据。结果,诸如制作列表、设置日历约会、设置提醒或警报以及其他动作的动作可以由一个或多个服务器执行,并且结果与用户102的任何适当设备同步,因此设备本地存储设备所需的任何状态或配置信息。在一些实现方式中,除了应用服务器112的同步之外或者代替应用服务器112的同步,服务器系统110可以在接收到对动作的完成的确认时执行到用户设备的数据同步。

应用112还向服务器系统110发送确认162,以指示何时完成所请求的动作的执行。服务器系统110监视请求160的状态,以确保在为动作设置的时间段152内接收到执行确认。当在时间段152内接收到确认时,服务器系统110可以日志记录确认并结束跟踪动作。如果在设置的时间段152内未接收到确认,则服务器110可以重试请求160。另外或作为替代,服务器系统110可以向用户设备104发送消息,以向用户102指示请求已被延迟。在例如自从初始请求115起或请求160被发送到应用服务器112的时间起的一定时间量之后,服务器系统110可以通知用户所请求的动作已经失败,并且该动作将不会如前所述进行。

系统100可以跟踪每个用户请求的状态,并且被配置为如果请求则向用户102提供状态信息。例如,用户102可以询问数字助理“我的提醒已被设置吗?”服务器系统110可以检查日志或记录以确定用户请求的动作,识别被涉及的动作(例如,最近的设置提醒的请求),并确定请求的状态。然后,服务器系统110可以提供例如文本、合成音频或两者的消息,指示动作是否已被执行。

在一些实现方式中,除了或代替使用服务器系统110的数据存储142和队列148缓冲的请求之外,用户设备104缓冲用户请求。例如,用户请求的缓冲可以扩展到在用户设备102上实现的对话代理。当用户设备102需要使用服务器执行动作但是在用户的对话时没有互联网连接时,客户端设备102可以使用设备上的缓冲器。例如,在用户102说出命令之后,用户设备104可以确认接收到输入,并指示将来将进行处理。用户设备104可以继续接受额外命令并存储数据,直到与服务器系统110的适当连接可用。一旦建立了连接,用户设备104就可以与服务器系统110通信以用于解释和处理请求,或者可以直接与应用服务器通信。

在一些实现方式中,用户设备104执行被描述为由服务器系统110执行的一些或所有功能。例如,客户端设备104可以包括语音识别模块、文本到语音模块、以及解释用户请求并确定异步执行是否合适的软件。作为另一示例,客户端设备104可以使用服务器系统110进行语音识别以获得转录,但是解释用户请求并管理动作的执行。结果,在一些实现方式中,用户设备104可以独立于服务器系统解释用户请求并向用户提供确认消息。然后,用户设备104可以管理缓冲的异步请求的执行,包括监视对服务器的请求并验证在超时时段内完成,同时数字助理并行地接受来自用户的其他请求。客户端设备104可以包括本地数据存储和队列或其他缓冲器,以管理涉及一个或多个应用服务器的异步执行的动作。在一些实现方式中,客户端设备104使用缓冲请求来管理网络连接性中断以及应用服务器112的延迟或不可用。例如,尽管可以将所请求的动作指定为最适合于同步执行,但是在确定与执行该动作所需的应用服务器的连接性不可用时,客户端设备104可以存储导致该动作稍后执行的数据。例如,可以调度任务,将任务放置在要完成的任务的缓冲器中,设置为响应于恢复连接性而发生,和/或设置为在特定时间段重试。客户端设备104可以使用多线程或多进程技术来同时接收和满足其他用户请求。

图2是示出用于用户请求的异步处理的系统100的另一示例的图。在图2的示例中,用户102请求未被分类为要异步执行的动作的动作。结果,虽然服务器系统110能够异步地执行动作,但是替代地服务器系统110选择同步地处理动作。图2还示出了数据流,如阶段(a)至(g)所示,其表示数据流。阶段(a)至(g)可以以所示顺序发生,或以与所示顺序不同的顺序发生。例如,一些阶段可以并发发生。

在阶段(a)中,用户102说出语音命令208,“呼叫joe”,其指的是用户的联系人之一。在阶段(b),用户设备104将包括用于语音命令208的音频数据的请求215发送到服务器系统110。在阶段(c),服务器系统110对接收的音频数据执行语音识别,然后解释请求。服务器系统110确定请求215对应于“呼叫”动作类型,并且接收者是“joe”。

在阶段(d)中,服务器系统110访问分配数据130并确定“呼叫”动作类型被指定用于同步处理。用户通常不欢迎发起呼叫的延迟,因此同步处理是最合适的。

在阶段(e)中,服务器系统110确定具有文本232“callingjoe”的确认消息。文本到语音模块124用于生成包括确认消息的合成话语的音频数据234。在阶段(f)中,服务器系统110发送确认消息236,其可以包括文本232和/或音频数据234,以用于在用户设备104处输出。

服务器系统110还生成并发送动作指令238,动作指令238包括通过分析请求215确定的动作信息240。动作信息240可以指示动作类型和所请求动作的其他参数。例如,动作指令238可以指示请求215是发起电话呼叫的请求,并且接收者是“joe”。在一些实现方式中,动作指令238可以指示用户设备104应该调用来执行该动作的特定应用或服务。例如,动作指令可以包括应用标识符或服务器地址,以指示用户设备104应该如何执行动作。

然后,用户设备104使得执行所请求的动作。例如,响应于接收到动作指令238,用户设备104可以打开电话应用,例如,被确定为与“呼叫”动作类型相关联或由动作指令238指定的电话应用,访问指示联系人“joe”的电话号码的联系人记录,并且发起呼叫。用户设备104还从服务器系统110输出确认,例如,从确认消息236显示和/或播放音频。另外或作为替代,用户设备104可以输出对发起呼叫的电话应用的确认。与图1中所示的过程相反。图2的过程依赖于用户设备104执行动作,因此要求用户设备104具有用于执行安装和适当配置的动作的正确应用。因此,对于同步执行,用户设备104通过生成对后端服务器的请求和同步数据来管理动作的执行。

当同步执行所请求的动作时,用户设备104最初可以将数据本地保存到用户设备104,而不是将数据最初更新并存储在服务器系统110或应用服务器112处。然后,用户设备104发起与用户102的其他设备的同步。例如,如果用户102请求新的提醒或对列表的改变,则用户设备104上的应用可以更新或生成存储在用户设备处的提醒或列表数据。因此,可以在指示服务器改变之前更新用户设备104处的本地列表。在一些实例中,用户设备104可以生成并向适当的后端应用服务器112发送请求以执行所请求的动作。

在图2的示例中,用户设备104而不是服务器系统110负责执行动作,包括与应用服务器112的任何通信,并且如果用户设备104遇到错误或者没有安装适当的应用,则执行行动可能会失败。此外,通常,在执行当前请求时,通常阻止数字助理功能接受新请求。结果,执行动作或与应用服务器112通信的延迟可能使用户102输入新请求的能力延迟。然而,因为与请求同步地尝试动作,所以在进入稍后的请求之前,可以向用户102通知遇到的任何错误。

一旦用户设备104执行了所请求的动作,用户设备104就发起与服务器系统110的数据同步。例如,用户设备104的应用可以发送指示更新的提醒或注释的数据,以及指示同步发生。然后,服务器系统110将新数据发送到其他用户设备以完成同步过程。然而,因为该过程需要用户设备104和服务器系统110之间的通信,所以如果用户设备104未适当配置或丢失网络访问,则同步可能失败。用户设备104上的不可靠地执行动作或同步数据的本地应用最终可能无法进行用户请求的改变。相比之下,在图1的示例中,服务器系统110管理所请求的动作的执行。结果,服务器系统110和/或应用服务器112获得指示任何更新的数据,并且可以与其他用户设备同步更新的数据,而与用户设备104的配置或能力无关。

在图2的示例中,用户设备104负责执行所请求的动作。通常,一旦调用本地应用,可能很少或根本没有监视操作已完成。一些应用可能未配置为在执行和同步操作时向数字助理确认。结果,如果本地应用没有适当地执行该动作,或者如果应用服务器112引起延迟或错误,则可能不会发生该动作。在图1的示例中,因为服务器系统110监视对应用服务器112的请求,所以服务器系统110可以例如通过验证接收到确认、在需要时请求应用服务器112重试动作、以及如果动作失败则向用户102发送通知,帮助确保应用服务器112执行所请求的动作。因此,不是仅仅依赖于本地应用和相关联的112是容错的,而是图1的异步处理增加了提高用户请求的动作执行的可靠性的额外的监视级别。

在一些实现方式中,对于图1和图2中的任一者或两者的示例,服务器系统110使用额外信息来确定应该同步还是异步地执行所请求的动作。例如,用户设备104可以发送指示其当前情境的情境信息。该情境信息可以包括例如指示在用户设备104的显示器上可见的项的数据、指示在用户设备104上安装或运行的应用的数据,等等。服务器系统110可以评估情境信息并确定当前情境是否将改变所请求动作的执行模式的预定分配。例如,将项添加到列表的请求通常不是时间关键的,因此可以将“列表”动作指定为适合于异步执行。然而,当用户使列表可见时,用户通常期望看到新项被添加到列表中,而不是潜在的延迟。结果,为了向用户提供更好的体验,当请求“列表”动作并且情境信息指示“列表”应用正在运行时,服务器系统110可以选择同步执行而不是异步执行。这将最快速地将请求的解释发送到用户设备104,允许用户设备104无延迟地更新潜在可见列表。

图3是示出用于用户请求的异步处理的过程300的流程图。过程300可以由一个或多个处理设备执行。一个或多个处理设备可以包括客户端设备、服务器系统或客户端设备和服务器系统两者的组合。在一些实现方式中,过程300的动作可以由客户端设备或服务器系统专门执行。作为额外示例,处理设备可以是移动电话、智能电话、个人数字助理(pda)、音乐播放器、电子书阅读器、平板电脑、可穿戴计算设备(诸如手表、眼镜或项链)、膝上型计算机、台式计算机、或其他便携式或固定计算设备。作为额外示例,处理设备可以是设备的中央处理单元(cpu)、cpu内的特定处理核心,等等。如上所述,这些技术可以由图1和图2的服务器系统110执行,其帮助在用户设备104处执行用户请求的动作。

接收指示对数字助理的用户请求的数据(302)。例如,服务器系统可以接收指示在客户端设备处做出的用户请求的数据。当数字助理接收语音输入时,接收的数据可以包括描述用户语音的音频数据。当数字助理接收文本输入时,可以接收文本。

确定与用户请求相对应的动作(304)。例如,可以对语音输入的音频数据执行语音识别,以确定用户请求的文本。可以分析文本以确定请求的动作。例如,系统可以确定多个预定类别或动作类型中的哪一个适合于该请求。可以通过例如将文本与用于不同动作的一个或多个模式或语法进行比较、解析文本和识别对应于特定动作的单词或短语或其他技术来从请求的文本确定动作。

确定动作被分类为可以与用户请求异步执行的动作(306)。例如,可以适当地分配某些动作或动作类型以用于同步或异步执行。在一些实现方式中,系统确定动作对应于特定动作类型。访问分配数据,其指示是否分配了与请求同步或异步执行的不同操作类型。基于分配数据,系统可以确定特定动作类型被指定为能够与请求异步执行。作为另一示例,可以指定某些应用或服务用于异步或同步处理。系统可以确定哪个应用或服务执行操作,并基于相应的应用或服务选择异步或同步执行。

在确定是同步还是异步地执行动作时可以考虑其他因素。例如,设备可以确定被分类为适合于同步执行的动作。然而,设备可以确定该动作涉及与服务器的通信,并且该网络连接性暂时断开或者服务器当前响应缓慢或不可用。结果,替代地,设备可以例如通过将任务放在缓冲器或队列中或者安排稍后的执行来确定异步地执行动作。以这种方式,可以为未被分类为适合于同步执行的动作选择异步执行,例如对于第一次尝试执行动作或在初始同步过程未能执行动作之后重试。

类似地,可以基于一个或多个因素同步地执行被分类为适合于异步执行的动作。在一些实现方式中,可以分析所请求的动作的参数以确定是否应该将动作分类为异步执行。例如,可以确定与所请求的动作相对应的时间,诸如计划发生事件或输出的时间。可以将该时间与另一时间或时间段进行比较,以确定对应于所请求的动作的时间是否是距当前时间(例如,请求的时间)的至少最小时间量。如果对应于所请求的动作的时间在阈值时间之前,则该动作可以被分类为用于同步执行而不是异步执行的动作。

在一些实现方式中,指示客户端设备的情境的信息用于对所请求的动作进行分类。例如,如果用户请求确定在客户端设备上运行或可见的应用的动作,则该动作可以被分类为用于同步执行而不是异步执行的动作。

在客户端设备处发送确认消息以用于输出(308)。例如,基于确定应该异步执行动作,系统可以提供指示将来将执行请求的确认消息。可以在执行操作之前提供此确认。在某些情况下,服务器系统在请求由另一服务器系统(诸如应用服务器)执行动作之前提供确认。

为了提供确认,可以确定确认消息的文本。文本到语音系统可以用于生成包括合成语音的音频数据,并且音频数据可以例如通过网络提供给客户端设备。

使得动作与用户请求异步地执行(310)。可以将动作的执行与用户与数字助理的对话分离,允许对数字助理的其他请求与第一请求独立地并且并行地接收和处理。因此,在执行第一用户请求所请求的动作之前,可以接收从用户到数字助理的一个或多个其他用户请求。类似地,可以在执行第一用户请求所请求的动作之前执行与从用户到数字助理的一个或多个其他用户请求相对应的动作。

在一些实现方式中,第一服务器系统可以通过存储指示所请求的动作的记录来使得动作被执行。基于所存储的记录,第一服务器系统可以稍后生成并向第二服务器系统发送请求以请求第二服务器系统执行动作。

在一些实现方式中,服务器系统存储要在具有多个数据存储区域的数据存储系统中执行的动作的记录。数据存储区域的每个可以具有相关联的软件模块,用于处理数据存储区域中的记录。例如,可以基于所识别的动作来选择数据存储系统的区域。可以发送用于存储关于所选择的区域中的动作的数据的写入请求。响应于写入请求,可以发出远程过程调用以执行与数据存储系统的所选择的区域相对应的软件。使用执行的软件,可以生成对应用服务器执行动作的请求。

在一些实现方式中,通过向服务器系统发送执行动作的请求、设置动作完成的超时时段、确定动作在超时时段结束之前完成、并存储指示执行该动作的数据,执行动作。

在一些实现方式中,在客户端设备处接收指示对数字助理的第二用户请求的数据。确定对应于第二用户请求的第二动作。确定第二动作未被分类为与第二用户请求异步执行的动作。基于确定第二动作未被分类为要与第二用户请求异步执行的动作,可以使得第二动作与用户请求同步地执行。在同步执行完成后,可以向客户端设备提供确认。

在一些实现方式中,在客户端设备处接收指示对数字助理的第二用户请求的数据。确定对应于第二用户请求的第二动作。确定第二动作被分类为要与第二用户请求异步执行的动作。基于确定第二动作被分类为要与第二用户请求异步执行的动作,发起第二动作的执行。确定在超时时段内未执行第二动作。结果,为客户端设备的输出提供指示第二动作的执行已经失败的消息。在一些实现方式中,可以在指示动作已经失败之前进行多次尝试来执行动作,每次尝试具有相应的超时时段。

本说明书中描述的本发明的实施例和所有功能操作可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物或者其中一个或多个的组合。本发明的实施例可以实现为一个或多个计算机程序产品,即,在计算机可读介质上编码的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是非暂时性计算机可读存储介质、机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质组合、或者其中一个或多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者其一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码以用于传输到合适的接收器设备。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释的语言,并且它可以以任何形式部署,包括如独立程序或适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、存储在专用于所讨论的程序的单个文件中、或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。可以部署计算机程序以在一个计算机上或在位于一个站点上或分布在多个站点上并通过通信网络互连的多个计算机上执行。

本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。

举例来说,适合于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备接收数据或将数据发送到一个或多个大容量存储设备,所述大容量存储设备例如磁盘、磁光盘或光盘。但是,计算机不需要这样的设备。此外,计算机可以嵌入在另一设备中,例如平板电脑、移动电话、个人数字助理(pda)、移动音频播放器、全球定位系统(gps)接收器等等。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及cdrom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

为了提供与用户的交互,本发明的实施例可以在计算机上实现,所述计算机具有:显示设备,例如crt(阴极射线管)或lcd(液晶显示器)监视器,用于向用户显示信息;以及键盘和指示设备,例如鼠标或轨迹球,用户可通过该键盘和指示设备向计算机提供输入。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。

本发明的实施例可以在计算系统中实现,该计算系统包括:后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如,具有图形用户界面或web浏览器的客户端计算机,用户可通过该图形用户界面或web浏览器与本发明的实现方式交互;或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如因特网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系由于在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。

虽然本说明书包含许多细节,但这些细节不应被解释为对本发明范围或可要求保护的范围的限制,而是作为对本发明特定实施例特有的特征的描述。在单独的实施例的上下文中在本说明书中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此声明,但是在某些情况下可以从组合中切除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或打包成多种软件产品。

在提及html文件的每个实例中,可以替换其他文件类型或格式。例如,html文件可以由xml、json、纯文本或其他类型的文件替换。此外,在提及表或散列表的情况下,可以使用其他数据结构(诸如电子表格、关系数据库或结构化文件)。

因此,已经描述了本发明的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。

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