跨设备切换

文档序号:1581051 发布日期:2020-01-31 浏览:23次 >En<

阅读说明:本技术 跨设备切换 (Cross-device handover ) 是由 安德烈亚·特维斯查·范舍尔廷加 扎希德·萨布尔 迈克尔·列乌托夫 普拉提克·吉尔达 于 2018-05-15 设计创作,主要内容包括:第一计算设备可以接收用户输入的指示,所述用户输入是用户与在所述第一计算设备处执行的第一助理之间的对话的至少一部分。所述第一助理和/或在数字助理系统处执行的助理可以确定是否将所述对话从在所述第一计算设备处执行的所述第一助理切换到在第二计算设备处执行的第二助理。响应于确定将所述对话切换到在所述第二计算设备处执行的所述第二助理,所述第一助理和/或在所述数字助理系统处执行的所述助理可以向所述第二计算设备发送切换所述对话的请求,所述请求至少包括所述对话的指示。(A computing device may receive an indication of a user input that is at least a portion of a conversation between a user and a assistant executing at the computing device, the assistant and/or an assistant executing at a digital assistant system may determine whether to switch the conversation from the assistant executing at the computing device to a second assistant executing at a second computing device.)

跨设备切换

背景技术

一些计算平台可以提供用户界面,用户可以从该用户界面与虚拟计算助理(例如,也称为“智能个人助理”、“交互式助理”、“助理模块”或简称为“助理”)聊天、讲话或以其他方式通信,以使该助理输出信息,响应于用户的请求或以其他方式执行某些操作来帮助用户完成任务。一些助理可以在具有不同能力的各种不同计算平台上执行。例如,一些计算平台可以仅提供基于音频的用户界面以在用户与助理之间进行通信,而其他计算平台可以提供基于音频的用户界面(例如,麦克风和扬声器)以及基于视觉的用户界面(例如,图形用户界面)以在用户与助理之间进行通信。

发明内容

通常,本公开的技术可以使助理能够将与用户的现有对话从第一计算平台切换到第二计算平台,使得在整个切换中追踪在切换之前推断出的现有对话的上下文。即,第二计算平台处接收对话的切换的助理可以接收查询,该查询回溯引用现有对话在切换之前发生的一部分。第二计算平台处的助理能够基于由助理推断出的现有对话的所追踪的上下文来确定引用的上下文。因此,第二计算设备处的助理能够提供对查询的相关响应。

助理不仅可以切换现有对话,而且助理也可以确定是否切换现有对话,即使用户可能没有提供切换对话的显式指令。例如,如果第一计算平台不包括可以协助提供对查询的响应的组件(例如,当查询用于到某个位置的导航指令时,第一计算平台没有可操作地耦合至显示设备),则助理可以将对话从第一计算平台切换到第二计算平台,其中,第二计算平台包括这种组件(例如,显示覆盖有导航方向的地图的显示器)。

因此,所描述的技术可以提高助理的可用性。通过确定是否切换对话(有或没有这样做的显式用户命令)并且确定哪个其他计算系统可能非常适合继续对话,用户可能不需要明确地指示助理将对话从第一计算平台切换到第二计算平台。进一步地,助理可以使用户能够简单地在第二计算平台处继续对话,无需重复用户先前在第一计算平台处提供的相同的用户交互,而不是简单地输出指示用户应该使用不同设备来完成查询的误差或其他消息从而要求用户在第二计算平台处重复该查询。

在一个方面中,本公开涉及一种方法。该方法可以包括:通过计算系统,接收由第一计算设备从用户接收到的查询的指示,其中,该查询形成用户与在第一计算设备处执行的第一助理之间的对话的至少一部分。该方法可以进一步包括:通过计算系统,确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理。该方法可以进一步包括:响应于确定将对话切换到在第二计算设备处执行的第二助理,通过计算系统向第二计算设备发送对话的指示。

在另一方面中,本公开涉及一种系统。该系统可以包括第一计算设备、第二计算设备以及经由网络可操作地连接至第一计算设备和第二计算设备的数字助理系统。第一计算设备可以可操作以:接收指示查询的用户输入,该查询形成用户与在第一计算设备处执行的第一助理之间的对话的至少一部分,并且将查询的指示发送给数字助理系统。数字助理系统可以可操作以:从第一计算设备接收查询的指示,确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理,以及响应于确定将对话切换到在第二计算设备处执行的第二助理,向第二计算设备发送对话的指示。第二计算设备可以可操作以:从数字助理系统接收对话的指示,并且输出对查询的响应作为对话的一部分。

在另一方面中,本公开涉及一种编码有指令的计算机可读存储介质,该指令在被执行时使计算系统的至少一个处理器:接收由第一计算设备从用户接收到的查询的指示,其中,该查询形成用户与在第一计算设备处执行的第一助理之间的对话的至少一部分;确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理;以及响应于确定将对话切换到在第二计算设备处执行的第二助理,向第二计算设备发送对话的指示。

在下面的附图和说明书中陈述了一个或多个示例的细节。本公开的其他特征、目的和优点将通过说明书和附图以及通过权利要求而显而易见。

附图说明

图1是图示了根据本公开的一个或多个方面的执行一个或多个示例虚拟助理的示例系统的概念图。

图2是图示了根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算设备的框图。

图3是图示了根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例数字助理服务器的框图。

图4是图示了根据本公开的一个或多个方面的由执行一个或多个示例虚拟助理的一个或多个处理器执行的示例操作的流程图。

图5是图示了根据本公开的一种或多种技术的用于执行用户与示例虚拟助理之间的对话的切换的计算系统的示例操作的流程图。

具体实施方式

图1是图示了根据本公开的一个或多个方面的执行一个或多个示例虚拟助理的示例系统的概念图。图1的系统100包括经由网络130与计算设备110A和110B(统称为计算设备110)通信的数字助理服务器160。尽管系统100被示出为分布在数字助理服务器160和计算设备110之间,但是在其他示例中,可以通过计算设备110的本地组件在内部执行归因于系统100的特征和技术。同样地,数字助理服务器160可以包括某些组件并且执行在以下描述中另外归因于计算设备110的各种技术。尽管图1图示了两个计算设备110A和110B,但是可以使用任何合适数量的两个或多个计算设备110。

计算设备110可以经由网络130与数字助理服务器160通信以访问由数字助理服务器160提供的虚拟助理服务。网络130表示用于在计算系统、服务器和计算设备之间传输数据的任何公共或私有的通信网络,例如,蜂窝、Wi-Fi和/或其他类型的网络。数字助理服务器160可以经由网络130与计算设备110交换数据,以当计算设备110连接至网络130时提供由计算设备110可访问的虚拟助理服务。

网络130可以包括一个或多个网络集线器、网络交换机、网络路由器或任何其他网络设备,其可操作地相互耦合,从而在数字助理服务器160与计算设备110之间提供信息交换。计算设备110和数字助理服务器160可以使用任何合适的通信技术在网络130上传输和接收数据。计算设备110和数字助理服务器160可以分别使用相应的网络链路可操作地耦合至网络130。将计算设备110和数字助理服务器160耦合至网络130的链路可以是以太网或其他类型的网络连接,并且这种连接可以是无线和/或有线连接。

数字助理服务器160可以表示任何合适的远程计算系统,诸如,一个或多个台式计算机、膝上型计算机、大型机、服务器、云计算系统等,它们能够向和从诸如网络130等网络发送和接收信息。数字助理服务器160托管(或至少提供访问)虚拟助理服务。在一些示例中,数字助理服务器160可以表示云计算系统,该云计算系统经由云提供对其相应服务的访问。

第三方(3P)服务器系统170可以表示任何合适的远程计算系统,诸如,一个或多个台式计算机、膝上型计算机、大型机、服务器、云计算系统等,它们能够向和从诸如网络130等网络发送和接收信息。在一些示例中,第三方服务器系统170可以表示云计算系统,该云计算系统经由云提供对其相应服务的访问。第三方服务器系统170托管(或至少提供访问)第三方应用172,该第三方应用172可以执行以在执行各种动作时协助助理模块122。例如,第三方应用172可以包括电影票购买应用、餐厅预订应用等。助理模块122可以与第三方应用172通信以指导它们执行特定动作,诸如,购买电影票或进行餐厅预订。

计算设备110表示被配置为访问经由网络130提供的虚拟助理服务的各个移动或非移动计算设备。计算设备110的示例包括移动电话、平板计算机、膝上型计算机、台式计算机、服务器、大型机、机顶盒、电视机、可穿戴设备(例如,计算机化手表、计算机化眼镜、计算机化手套等)、家庭自动化设备或系统(例如,智能恒温器或安全系统)、语音界面或台面家庭助理设备、个人数字助理(PDA)、游戏系统、媒体播放器、电子书阅读器、移动电视平台、汽车导航或信息娱乐系统或者任何其他类型的移动、非移动、可穿戴和不可穿戴计算设备,其被配置为执行或访问虚拟助理并且经由网络(诸如,网络130)接收信息。

在图1的示例中,数字助理服务器160包括助理模块122C和用户信息数据存储124C。计算设备110A包括用户界面组件(UIC)112A、用户界面(UI)模块120A、助理模块122A和用户信息数据存储124A。类似于计算设备110A,计算设备110B可以包括UIC 112B、UI模块120B、助理模块122B和用户信息数据存储124B。

模块120A、120B、122A至122C和124A至124C可以使用在计算设备110A、计算设备110B或数字助理服务器160中的一个处驻留和/或执行的软件、硬件、固件或硬件、软件和固件的混合来执行所描述的操作。计算设备110A、计算设备110B和数字助理服务器160可以利用多个处理器或多个设备来执行模块120A、120B、122A至122C和124A至124C。计算设备110A、计算设备110B和数字助理服务器160可以将模块120A、120B、122A至122C和124A至124C执行为在底层硬件上执行的虚拟机。模块120A、120B、122A至122C和124A至124C还可以作为操作系统或计算平台的一个或多个服务或者作为计算平台的应用层处的一个或多个可执行程序执行。

计算设备110的UIC 112可以充当计算设备110A的输入和/或输出设备。UIC 112可以使用各种技术来实施。例如,UIC 112可以充当使用存在敏感型输入屏幕的输入设备,诸如,电阻式触摸屏、表面声波触摸屏、电容式触摸屏、投射电容触摸屏、压敏屏幕、声脉冲识别触摸屏或另一存在敏感型显示技术。

UIC 112可以充当使用麦克风技术、红外传感器技术或其他输入设备技术的输入设备以用于接收用户输入。例如,UIC 112可以使用内置麦克风技术来检测UI模块120和/或助理模块122为完成任务而处理的语音输入。作为另一示例,UIC 112可以包括可以从计算设备110的用户接收触觉输入的存在敏感型显示器。UIC 112可以通过检测来自用户的一个或多个手势来接收触觉输入的指示(例如,用户用手指或手写笔触摸或指向UIC 112的一个或多个位置)。

UIC 112可以充当输出(例如,显示)设备并且将输出呈现给用户。UIC 112可以充当使用任何一个或多个显示设备的输出设备,诸如,液晶显示器(LCD)、点阵显示器、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、电子墨水或者能够向计算设备110的用户输出可见信息的类似的单色或彩色显示器。UIC 112可以充当使用扬声器技术、触觉反馈技术或其他输出设备技术的输出设备以用于向用户输出信息。UIC 112可以呈现与由助理模块122提供的虚拟助理有关的用户界面(例如,用户界面114)。UIC 112可以呈现与在计算设备110处执行和/或从计算设备110可访问的计算平台、操作系统、应用和/或服务的其他特征(例如,电子邮件、聊天、在线服务、电话、游戏等)有关的用户界面。

计算设备110的UIC 112可以包括相同或不同组的输入和/或输出设备。例如,计算设备110A的UIC 112A可以不包括显示设备或存在敏感型输入屏幕,而计算设备110B的UIC112B可以包括显示设备和存在敏感型输入屏幕。在另一示例中,计算设备110A的UIC 112A和计算设备110B的UIC 112B都可以包括显示设备或存在敏感型输入屏幕,但是与UIC 112B相比,UIC 112A中包括的显示设备可以具有较小的大小(较小的可视区域)。

UI模块120可以管理用户与UIC 112和计算设备110的其他组件的交互,并且可以与数字助理服务器160交互以经由UIC 112提供助理服务。当用户在不同时间与用户界面交互时以及当用户和计算设备110处于不同位置时,UI模块120和UIC 112可以从用户接收一个或多个输入指示(例如,语音输入、手势输入等)。UI模块120和UIC 112可以解释在UIC112处检测到的输入,并且可以将关于在UIC 112处检测到的输入的信息中继到助理模块122和/或在计算设备110处执行的一个或多个其他关联的平台、操作系统、应用和/或服务,例如,以使计算设备110执行功能。

UI模块120可以使UIC 112输出、显示或以其他方式呈现用户界面,同时计算设备110A的用户查看输出和/或在UIC 112处提供输入。例如,如图1所示,UI模块120B可以向UIC112B发送指令,该指令使UIC 112B在UIC 112B的显示屏处显示用户界面114。UI模块120还可以使UIC 112以非视觉形式输出用户界面,诸如,音频输出。例如,如图1所示,UI模块120可以向UIC 112发送指令,该指令使UIC 112输出包含语音输出的音频。在图1的示例中,用户界面114是图形用户界面。在一些示例中,用户界面114可以是可听用户界面。用户界面114可以包括各种形式的虚拟助理信息,诸如,可听声音、振动、文本、图形、内容卡、图像等。

当用户在不同时间与用户界面114交互时,以及当用户和计算设备110A处于不同位置时,UI模块120和UIC 112可以从用户接收对输入(例如,语音输入、触摸输入、非触摸或存在敏感型输入、视频输入、音频输入等)的一个或多个指示。UI模块120和UIC 112可以解释在UIC 112处检测到的输入,并且可以将关于在UIC 112处检测到的输入的信息中继到助理模块122A和/或在计算设备110A处执行的一个或多个其他关联的平台、操作系统、应用和/或服务,例如,以使计算设备110A执行功能。

UI模块120可以从在计算设备110A和/或一个或多个远程计算系统(诸如,助理服务器160)处执行的一个或多个关联的平台、操作系统、应用和/或服务接收信息和指令。另外,UI模块120可以充当在计算设备110A处执行的一个或多个关联的平台、操作系统、应用和/或服务与计算设备110A的各种输出设备(例如,扬声器、LED指示器、音频或触觉输出设备等)之间的中介以利用计算设备110A产生输出(例如,图形、闪光、声音、触觉响应等)。例如,UI模块120可以基于UI模块120经由网络130从数字助理服务器160接收的数据来使UIC112输出用户界面114。UI模块120可以接收信息(例如,音频数据、文本数据、图像数据等)和指令作为来自数字助理服务器160和/或助理模块122A的输入,以呈现为用户界面114。

助理模块122A和助理模块122C可以协作地维护用户信息数据存储124A和124C,作为经由计算设备110A访问的虚拟助理服务的一部分。同样地,助理模块122B和助理模块122C可以协作地维护用户信息数据存储124B和124C,作为经由计算设备110B访问的虚拟助理服务的一部分。

在接收到明确的用户同意之后,助理模块122可以例如在执行操作以支持与计算设备110的用户的对话期间自动维护与用户相关联的信息或者指向与用户相关联的信息的位置的指针(例如,由位于计算设备110、数字助理服务器160处的信息源存储,或者由位于网络130上的其他位置的任何其他服务器或设备存储)。助理模块122可以将与用户相关联的信息或信息的指针维护为用户信息数据存储124。数据存储124可以使由助理模块122执行的助理能够快速访问助理所需的用户信息,以完成现实世界任务、虚拟任务或以其他方式响应计算设备110的用户的即时和/或未来需求。

例如,与用户相关联的信息可以是在用户与助理之间的对话期间在用户许可的情况下获得的信息、日历信息、联系人信息、用户兴趣、用户偏好以及与用户相关联的任何其他信息,助理模块122可以使用这些信息以向用户提供有意义的信息。与用户相关联的信息源的示例可以包括但不限于与用户相关联的计算设备、内置在电子邮件系统中的情报、与助理模块122的用户交互、用户交互以及与用户相关联的设备(例如,计算设备110)上的应用使用或其他信息源。

在整个说明书中使用的术语“对话”是指计算设备的用户与在计算设备处执行或从该计算设备可访问的助理之间的常规交互,而不是在初始设置、安装、首次使用等期间可能发生的交互。换言之,由于用户正在执行除了设置助理之外的任务,因此在用户日常使用助理期间发生对话。本文使用的对话并不指用户回答问题或以其他方式与助理交互,这是设置应用或提供用于填充用户界面的预设字段的信息的一部分。

在一些示例中,对话可以包括由用户发送到助理模块122的一系列(例如,一个或多个)查询或请求以及对由助理模块122生成并由UIC 112输出的查询或请求的响应。查询或请求的示例可以包括命令或问题形式的自然语言短语,诸如,“search the internetfor cute puppy pictures(在互联网上搜索可爱的小狗图片)”,“show me a list ofAcademy award winners last year(告诉我去年的奥斯卡金像奖得主名单)”或“is itgoing to rain today(今天会下雨吗)?”。对查询或请求的响应的示例可以包括可听地呈现的列表的输出(诸如,奥斯卡金像奖得主名单的输出)、自然语言短语(诸如,“it doesn'tlook like it's going to rain today(看起来好像今天不会下雨)”)、小狗的图形或视频表示等,这些由UIC 112输出以回答形成查询或请求的命令或问题。

助理模块122C和用户信息数据存储124C表示示例助理的服务器侧或云实施方式,而助理模块122A至122B和用户信息数据存储124A至124B表示示例助理的客户端侧或本地实施方式。在一些示例中,归属于助理模块122A的一些或全部功能性可以由助理模块122C执行。同样地,在一些示例中,归属于助理模块122B的一些或全部功能性可以由助理模块122C执行。另外,在一些示例中,归属于助理模块122C的一些或全部功能性可以由助理模块122A和122B执行。

助理模块122可以分别包括相应的软件代理,这些软件代理被配置为作为智能个人助理执行,该智能个人助理可以为诸如计算设备110A或计算设备110B的用户等个人执行任务或服务。助理模块122可以执行这些任务或服务,作为生成对从用户接收到的查询的响应的一部分。助理模块122可以基于(例如,在UIC 112A或UIC 112B处检测到的)用户输入、位置感知(例如,基于上下文)和/或用于访问来自各种信息源(例如,本地存储在计算设备110或数字助理服务器160处,经由搜索服务获得,由第三方应用172获得或通过经由互联网访问其他服务或信息服务而获得)的其他信息(例如,天气或交通状况、新闻、股票价格、体育分值、用户排程表、运输排程表、零售价格等)的能力来执行这些任务或服务。基于口头用户输入来执行任务或服务在本文中可以被称为满足用户话语。助理模块122可以执行人工智能和/或机器学习技术,以代表用户自动识别并完成一个或多个任务。

在一些示例中,助理模块122可以基于口头用户输入来执行任务或服务。UIC 112的一个或多个麦克风可以接收口头用户输入,并且助理模块122可以接收由UIC 112的一个或多个麦克风生成的音频数据(即,来自UI模块120A或UI模块120B)。当语音接收激活时,助理模块122可以选择性地处理接收到的音频数据以识别话语。语音接收可以通过多种方式来激活。作为一个示例,助理模块122可以响应于识别出接收到的音频数据中的预定激活短语(例如,“listen assistant(侦听助理)”)来激活语音接收。作为另一示例,UI模块120可以响应于用户按下计算设备110之一上的语音接收按钮来使模块122激活语音接收。

助理模块122可以通过执行任务并输出执行任务的结果作为对计算设备110的一个或多个组件所呈现的用户话语的响应来满足用户话语。例如,助理模块122可以使UIC112的一个或多个组件(例如,显示器、扬声器等)产生输出(例如,显示视频,显示图形用户界面,发出声音,发出语音输出等)。在一些示例中,可能期望助理模块122通过使其他计算设备呈现输出来满足一些用户话语。例如,如果另一计算设备更适合于满足用户话语,则可能期望助理模块122经由另一计算设备呈现输出。

根据本公开的一种或多种技术,响应于计算设备110A从用户接收到指示查询的用户输入,系统100可以执行一个或多个任务以满足该查询,并且可以确定作为响应于该查询而执行一个或多个任务的结果的响应是由接收该查询的同一计算设备110A输出还是由系统100的除了接收该请求的同一计算设备110A之外的计算设备(诸如,计算设备110B)输出。这种确定可以由在计算设备110A处执行的助理模块122A、在数字助理服务器160处执行的助理模块122C或在计算设备110A处执行的助理模块122A和在数字助理服务器160处执行的助理模块122C的组合来做出。

计算设备110A从用户接收到的查询以及计算设备110A从用户接收到的先前查询和对计算设备110A输出的查询的先前响应形成发出该查询的用户与在计算设备110A处执行的助理模块122A之间的对话的至少一部分。即使助理模块122A可以与在数字助理服务器160处执行的助理模块122C进行通信或以其他方式与之交互以确定对查询的响应,但是计算设备110A接收到的这种查询和计算设备110A输出的对应响应也被认为形成在用户与在计算设备110A处执行的助理模块122A之间的对话。

如果助理模块122A和/或助理模块122C确定除了接收到该查询的同一计算设备110A之外的计算设备(诸如,计算设备110B、助理模块122A和/或助理模块122C)正在将用户与在计算设备110A处执行的助理模块122A之间的对话切换到计算设备110B。作为响应,助理模块122A和/或助理模块122C可以执行切换,使得对助理模块122A接收到的查询的响应由计算设备110B经由112B输出。通过将对话切换到计算设备110B,计算设备110B能够接收附加查询并且经由助理模块122B和/或122C生成对这些查询的响应以继续对话。

切换对话可以包括在切换之前向助理模块122B和/或122C提供与对话有关的信息,诸如,对话的语义意图、上下文信息等,使得助理模块122B和/或122C可以在制定对计算设备110B接收到的查询的响应时使用这种信息。通过这种方式,即使当这些查询回溯引用在计算设备110A处发生的对话的部分时,助理模块122B和/或122C也能够生成对计算设备110B接收到的查询的相关响应。

计算设备110A可以接收包括来自用户的查询的用户输入(例如,语音输入、文本输入或任何其他合适形式的用户输入)。计算设备110A处的助理模块122A可以响应于从用户接收到查询来确定对满足用户的请求的查询的响应以及呈现该响应的形式。例如,如果接收到的请求包括对到位置的方向的请求,则助理模块122A可以确定对请求的响应是所请求的方向,并且以由显示设备显示的交互式地图的形式来呈现这种方向。助理模块122A可以诸如通过确定计算设备110A是否可操作地耦合至显示设备或者计算设备110A是否包括可以将方向呈现为交互式地图的交互式地图软件,来确定计算设备110A是否能够在视觉上将方向呈现为交互式地图。如果助理模块122A确定计算设备110A不能够在视觉上将方向呈现为交互式地图,则助理模块122A可以确定用户是否与包括或可操作地耦合至显示设备的另一计算设备(例如,智能手机)相关联。如果助理模块122A确定用户与包括显示设备的计算设备110B相关联,则助理模块122A可以将请求切换到计算设备110B处的助理模块122B,并且计算设备110B可以以地图的形式输出方向以供显示设备显示。

在图1的示例中,计算设备110A可以经由UIC 112A接收包括查询126的语音输入形式的用户输入。换言之,计算设备110A可以经由一个或多个音频输入设备(例如,麦克风)接收由用户说出的语音,诸如,“how do I get to the restaurant(我如何到达餐厅)?”。通常,对计算设备110A的查询可以是与计算设备110A的用户交互(例如,用户输入),其请求助理模块122A和/或计算设备110A响应于该请求而执行一个或多个动作或任务。

响应于接收到查询,在计算设备110C处执行的助理模块122A和/或在数字助理服务器160处执行的助理模块122C可以执行一个或多个任务并且确定对该查询的响应。在一些示例中,助理模块122A可以确定对查询的响应,而无需将查询的指示发送给数字助理服务器160。如果计算设备110A以语音输入的形式接收用户输入,则助理模块122A可能能够通过分析语音输入以识别话语,确定查询的语义意图等来处理查询,以便制定对查询的响应。

在一些示例中,助理模块122A可以利用在数字助理服务器160处执行的助理模块122C来处理查询。计算设备110A可以至少将查询的指示发送到数字助理服务器160,使得在数字助理服务器160处执行的助理模块122C可以处理该查询以识别话语,确定查询的语义意图等。在请求是语音输入形式的示例中,请求的这种指示可以是请求的录音或语音到文本的转录。在请求是(例如,经由键盘)文本输入形式的其他示例中,来自用户的请求的这种指示可以是用户输入的文本。连同查询的指示一起,助理模块122A还可以向数字助理服务器160发送附加信息,诸如,计算设备110A的身份的指示、发出查询的用户的指示等,使得数字助理服务器160可以将对分析查询的结果的指示发送回适当的计算设备。

数字助理服务器160可以将对分析查询的结果的指示发送回计算设备110A。例如,数字助理服务器160可以将识别出的话语的指示、查询的语义意图的指示等发送到计算设备110A。响应于从数字助理服务器160接收到对分析查询的结果的指示,助理模块122A可以至少部分地基于对分析查询的结果的指示来制定对查询的响应。

在一些示例中,数字助理服务器160可以确定对由具有或没有助理模块122A的计算设备110A接收到的查询的响应。计算设备110A可以至少将请求的指示发送给数字助理服务器160,使得在数字助理服务器160处执行的助理模块122C可以处理查询以识别话语,确定查询的语义意图,确定响应于查询要执行的任务等。在请求是语音输入形式的示例中,请求的这种指示可以是请求的录音或语音到文本的转录。在请求是(例如,经由键盘)文本输入形式的其他示例中,来自用户的请求的这种指示可以是用户输入的文本。响应于处理该查询,助理模块122C可以至少部分地基于其对查询的分析来制定对查询的响应。

如上所示,助理模块122A独自、助理模块122C独自或助理模块122A和122C的组合可以确定对助理模块122A接收到的查询的响应。因此,尽管本公开可以将动作描述为由助理模块122A执行,但是应该理解,这些动作可以同样地由助理模块122C或助理模块122A和122C的组合来执行。应该进一步理解的是,本文描述为由助理模块122A和/或助理模块122C执行的动作可以同样地包括仅由助理模块122A、仅由助理模块122C、助理模块122A和122C的组合结合第三方应用172或其他互联网服务等执行的动作。

作为确定对助理模块122A接收到的查询的响应以及确定是否将对话切换到另一助理模块的一部分,助理模块122A和/或助理模块122C可能能够追踪对话以确定在用户与助理模块122A之间的对话中使用的单词和短语的上下文,或者通过将含义与用户和助理模块122A之间的各种交互相关联来确定与该对话有关或以其他方式与该对话相关联的上下文信息。例如,助理模块122A和/或助理模块122C可以将对话的各个部分(诸如,构成对话的查询和/或响应中的单词和短语)与诸如地点、日期、时间、位置、事件、人员等概念和类别相关联,并且将这种关联存储在用户信息数据存储124A和/或用户信息数据存储124C中。助理模块122A和/或助理模块122C可以确定这种上下文信息,包括在对话中使用的单词和短语的上下文,并且通过诸如机器学习、深度学习等技术来确定对话的各个部分与类别之间的关联。通过这种方式,助理模块122A和/或助理模块122C可以利用指向对话的先前部分的引用来确定用户使用的各种单词和短语的语义意图或其他用户输入,以便生成与接收到的查询相关的响应。

在一些示例中,助理模块122C可以确定与对话相关的这种上下文信息,并且将这种上下文信息存储在用户信息数据存储124C处。在一些其他示例中,助理模块122A可以确定与对话相关的这种上下文信息,并且将这种上下文信息存储在用户信息数据存储124A处。在这种上下文信息存储在用户信息数据存储124A处的情况下,助理模块122A可以将上下文信息发送到助理模块122C以存储在用户信息数据存储124C处或发送到助理模块122D以存储在用户信息数据存储124B处,作为将对话移交给计算设备110B或另一计算设备的一部分。

在图1的示例中,用户在与助理模块122A的对话132中请求助理模块122A进行晚上7点在名为Luigi's的意大利餐厅的晚餐预订。响应于该查询,助理模块122A和/或122C可以与第三方应用172的餐厅预订服务进行交互以进行所请求的预订,并且助理模块122A可以经由UIC 112A输出其已经进行了所请求的晚上7点在Luigi's的预订的确认。助理模块122A和/或122C还可以将晚餐预订与事件相关联,将Luigi's与餐厅以及位置相关联并将晚上7点与时间相关联,并且将这种关联作为与对话132相关联的上下文信息的一部分存储到用户信息数据存储124A和/或用户信息数据存储124C中。因此,如果用户随后与助理模块122A交互并且发出包含诸如“reservation(预订)”、“dinner(晚餐)”、“restaurant(餐厅)”等单词的查询,则助理模块122A和/或助理模块122C可以基于所存储的上下文信息来确定这些单词指的是晚上7点在Luigi's进行晚餐预订,因为助理模块122A和/或助理模块122C已经追踪了对话132,并且确定在对话132的上下文中,这些单词指的是晚上7点在餐厅Luigi's的预订。

当助理模块122A接收到查询126“how do I get to the restaurant(我如何到达餐厅)”时,助理模块122A和/或助理模块122C可能能够基于从对话132确定的这种上下文信息来确定查询126的含义,并且可以确定查询126中的短语“restaurant”指的是先前在对话132中引用的意大利餐厅“Luigi's”。通过能够将查询126中的短语“restaurant”与特定餐厅(例如,“Luigi's”)相关联,助理模块122A可以将针对查询126的相关响应确定为从用户的当前位置到意大利餐厅“Luigi's”的位置的方向。例如,助理模块122A可以确定查询126是到Luigi's的方向的请求,并且可以制定包括到Luigi's的方向的响应。

不管确定对查询的响应的是助理模块122A、助理模块122C还是助理模块122A和122C的组合,助理模块122A和/或助理模块122C中的一个或两个也都可以确定是否将用户与助理模块122A之间的对话切换到在另一计算设备(例如,计算设备110B)处执行的另一助理模块(例如,助理模块122B)。确定是否切换对话的一个或多个助理模块122可以与确定用户与在计算设备110A处执行的助理模块122A之间的对话中的查询的响应的一个或多个助理模块122相同或不同。

如果助理模块122A和/或助理模块122C切换了对话,那么助理模块122A和/或助理模块122C可以指导除了从用户接收到查询的计算设备110A之外的计算设备输出对查询的响应。将用户与助理模块122A之间的对话切换到在另一计算设备处执行的另一助理可以使接收到切换的计算设备能够输出对在计算设备110A处执行的助理模块122A接收到的查询的响应,以及获得用户与助理模块122A之间的对话的线程,使得能够生成对查询的相关响应,这些查询指的是在用户与助理模块122A之间发生的对话的部分。

当用户与在计算设备110A处执行的助理模块122A之间的对话切换到计算设备110B时,该对话切换到在计算设备110B处执行的助理模块122B,使得用户可以继续与代替在计算设备110A处执行的助理模块122A的在计算设备110B处执行的助理模块122B的对话。因此,用户可以通过经由UIC 112B(诸如,经由麦克风、键盘或计算设备110A的其他输入设备)向助理模块122B发送查询来继续与助理模块122B的对话,并且助理模块122B可以确定对查询的响应并经由UIC 112B(诸如,经由显示设备、扬声器等)输出响应。

另外,如上面所讨论的,当用户与在计算设备110A处执行的助理模块122A之间的对话切换到计算设备110B时,系统100可以维护切换到计算设备110B的对话的线程。换言之,当用户向在计算设备110B处执行的助理模块122B发出回溯引用在切换之前在用户和在计算设备110A处执行的助理模块122A之间发生的对话的部分的查询时,助理模块122B可能能够推断出这种引用的意图和含义,以确定对这种查询的相关响应。具体地,助理模块122B可以利用在用户与助理模块122A的对话期间由助理模块122A和/或助理模块122C确定的与对话相关联的上下文信息,以将用户的查询与先前在用户和在计算设备110A处执行的用户和助理模块122A之间发生的对话的部分期间引用的概念、元素、地点、时间、事件等连接。

在一些示例中,助理模块122A和/或助理模块122C可以接收(例如,来自用户的)显式指令作为查询的一部分,以将对话切换到另一计算设备。例如,如果查询126说出“senddirections to the restaurant to my phone(将到餐厅的方向发送到我的电话)”,则助理模块122A和/或122C可以基于存储在计算设备110A和/或数字助理服务器160的用户信息数据存储124中的信息或关于与用户相关联的计算设备的经由云存储和/或访问的信息,来确定与用户所引用的用户相关联的电话。如果助理模块122A确定计算设备110B是与同一用户相关联的智能手机,并且计算设备110B可用于接收对话的切换,那么作为响应,助理模块122A和/或助理模块122C可以遵循用户的显式指令,并且可以将对话132切换到计算设备110B。

在一些示例中,助理模块122A和/或助理模块122C可以基于预定义的偏好来确定是否切换对话。预定义的偏好可以是先前由用户定义的关于助理模块122A可以至少部分地基于要生成的响应来将对话切换到的设备的偏好。例如,用户可以预先定义偏好,即,所有音乐都由与该用户相关联的智能家庭影院系统播放,或者所有照片都由与该用户相关联的数字媒体设备(例如,电视机顶盒)输出到连接至数字媒体设备的电视机。因此,如果助理模块122A确定对查询的响应是播放歌曲,则即使用户与分别具有播放音乐的能力的许多不同设备(例如,智能手机)相关联,如果智能家庭影院系统可用于接收切换,则助理模块122A可以将对话切换到用户定义的智能家庭影院系统。

在一些示例中,助理模块122A和/或助理模块122C可以确定在不从用户接收显式指令并且没有先前定义的偏好的情况下是否将对话切换到另一计算设备。助理模块122A和/或助理模块122C可以基于多种因素(诸如,查询、对查询的响应、与用户相关联的上下文信息(例如,用户的活动)、与用户相关联的计算设备、计算设备的可用性等)来确定是否将用户与助理模块122A之间的对话切换到另一计算设备,以及选择将对话切换到的计算设备。助理模块122A和/或助理模块122C可以仅将对话切换到可用于接收切换的计算设备。

如果计算设备未通电,未被授权接收切换或未与用户相关联,则该计算设备可能无法用于接收切换。在一些示例中,如果用户登录到计算设备中,如果用户登录到虚拟助理服务(例如,数字助理服务器160)中和/或如果用户被授权访问计算设备(例如,向计算设备提供用户输入并且从计算设备接收输出),则计算设备与用户相关联。

助理模块122A和/或助理模块122C可以至少部分地基于与用户相关联的计算设备(例如,计算设备110A和110B)的功能能力和/或特征来确定是否将对话切换到另一计算设备。功能能力可能是硬件、软件或其他功能性上的差异。不同的计算设备可以具有不同的功能能力、特征和特性。这种功能能力可以包括计算设备是否包括或可操作地耦合至显示设备、这种显示设备的大小、计算设备的类型(例如,如果计算设备是移动电话,如果计算设备是可穿戴设备,如果计算设备是TV机顶盒等)、计算设备的位置(例如,计算设备相对于计算设备110A的位置)和/或任何其他合适的因素。

例如,独立的虚拟助理或智能扬声器系统可能不包括显示设备,而智能手机包括显示设备。机动车辆的信息娱乐系统可以包括显示设备,但是可能无法输出响应,直到车辆已经解锁或已经启动。诸如智能手表等可穿戴设备可以包括显示设备,但是这种显示设备在物理上可以比智能手机中包括的显示设备小得多。另外,可穿戴设备和智能手机是几乎在所有时间都可能由用户携带或靠近用户的便携式设备,而独立的虚拟助理通常可以是只能由同一房间或位置中的用户使用的固定设备。同时,通常仅当用户在机动车辆中时才可以使用机动车辆的信息娱乐系统。助理模块122A和/或助理模块122C在确定是否切换对话并确定将对话切换到的计算设备时可以考虑这些以及任何其他合适的功能能力、特征和/或特性。

助理模块122A和/或助理模块122C可以确定呈现响应的形式(例如,在听觉上,视觉上,作为列表,作为地图,作为视频等),并且确定与用户相关联的计算设备之一是否可用于接收切换,并且能够至少部分地基于与用户相关联的计算设备的功能能力来以所确定的形式呈现响应。助理模块122A和/或助理模块122C可以确定计算设备110A的UIC 112A是否能够以所确定的形式呈现响应。如果计算设备110A的UIC 112A能够以所确定的形式呈现响应,则助理模块122A和/或助理模块122C可以避免切换对话,而是可以经由计算设备110A的UIC 112A输出响应。如果助理模块122A和/或助理模块122C确定计算设备110A的UIC 112A不能够以所确定的形式呈现响应,则助理模块122A和/或助理模块122C可以确定是否与用户相关联的另一可用计算设备是否能够以所确定的形式呈现响应。如果与用户相关联的另一计算设备(例如,计算设备110B)能够以所确定的形式呈现响应,则助理模块122A和/或助理模块122C可以将对话切换到另一计算设备。

例如,如果助理模块122A和/或助理模块122C确定在视觉上呈现了响应(例如,在显示设备上显示),那么助理模块122A和/或助理模块122C可以确定UIC 112A是否可操作地耦合至显示设备。如果是这样的话,则助理模块122A和/或助理模块122C可以避免切换对话,并且可以指导UI模块120A以使UIC 112A在视觉上呈现响应。另一方面,如果助理模块122A和/或112C确定UIC 112A不包括显示设备,并因此不能以所确定的形式呈现响应,则助理模块122A和/或助理模块122C可以确定与用户相关联的另一计算设备(例如,计算设备110B)是否可操作地耦合至显示设备,并且如果是这样的话,则可以将对话切换到另一计算设备,使得另一计算设备输出视频作为响应。

助理模块122A和/或助理模块122C可以确定与发出查询的用户相关联的一个或多个计算设备以及以任何合适的方式与用户相关联的一个或多个计算设备的特征、能力和/或特性。例如,助理模块122A和/或助理模块122C可以访问存储在用户信息数据存储124A、用户信息数据存储124C或其他地方(例如,云)中的与用户相关联的信息,这些信息可以指定在其上签名或者以其他方式与用户的用户账户相关联的计算设备以及这些一个或多个计算设备的特征、能力和/或特性。在其他示例中,与用户相关联的计算设备可以将其能力的指示传递给助理模块122A和/或助理模块122C,使得助理模块122A和/或助理模块122C可以确定计算设备110A是否。

助理模块122A和/或助理模块122C还可以至少部分地基于信任来确定计算设备110A是应该切换对话到另一计算设备还是避免将对话切换到另一计算设备。如果助理模块122A和/或助理模块122C不能确认用于接收切换的潜在目标设备与用户相关联和/或由用户授权,则助理模块122A和/或助理模块122C可以避免将对话切换到潜在目标设备。信任的一种形式可以是向助理模块122A和/或助理模块122C注册设备。如果潜在目标设备未向助理模块122A和/或助理模块122C注册,那么助理模块122A和/或助理模块122C可能无法确认潜在目标设备已被授权接收对话的切换。信任的另一形式是用户登录到潜在目标设备中或者用户经由潜在目标设备登录到虚拟助理服务上。因此,如果用户未登录到潜在目标设备中,那么助理模块122A和/或助理模块122C可能无法确认潜在目标设备被授权接收对话的切换。在一些示例中,一些对话可以被明确地标记或指示为不能被切换到另一设备。如果助理模块122A和/或助理模块122C确定对话被如此标记,则助理模块122A和/或助理模块122C可以避免将对话切换到潜在目标设备。

在一些示例中,与用户相关联的两个或多个计算设备可能能够以由助理模块122A和/或助理模块122C确定的形式输出响应。例如,与用户相关联的两个或多个计算设备可能能够在视觉上输出响应。在这些情况下,助理模块122A和/或助理模块122C可能能够基于多种因素从与用户相关联的能够以所确定的形式输出响应的两个或多个计算设备中选择计算设备。例如,助理模块122A和/或助理模块122C可以基于可操作地耦合至两个或多个计算设备的显示设备的相对大小、两个或多个计算设备的位置和/或任何其他合适的因素来进行这种选择。例如,如果计算设备110A是智能手表,并且如果计算设备110B是智能手机,则助理模块122A和/或助理模块122C可以确定响应的大小(例如,要呈现的图像的大小、要呈现的网站的大小等)。如果响应的大小相对较大,并且如果计算设备110B可操作地耦合至具有比可操作地耦合至计算设备110A的显示设备相对更大的观看区域的显示设备,则助理模块122A和/或助理模块122C可以决定将对话切换到计算设备110B。

在另一示例中,助理模块122A可以进一步至少部分地基于确定用户正在执行的活动或用户将执行的潜在活动来选择计算设备以切换对话。例如,如果助理模块122A和/或助理模块122C确定对接收到的请求的响应是到某个位置的方向,并且如果检测到用户正在进入他的汽车,已经进入他的汽车或即将进入他的汽车,则助理模块122A可以将对话切换到在用户汽车的信息娱乐系统处执行的助理,使得信息娱乐系统可以显示到该位置的方向。例如,如果用户在进入汽车时携带了电话,则他的电话可以与汽车建立连接(例如,蓝牙连接)。当建立了这种连接时,智能手机和/或信息娱乐系统可以将这种连接报告给数字助理服务器160。作为响应,数字助理服务器160可以将到该位置的方向传递给智能手机和/或信息娱乐系统,或者可以指导第三方服务器系统170之一将到该位置的方向传递给计算设备110B。通过这种方式,计算设备110A可以基于用户的当前活动或潜在的未来活动来确定切换对话。

在另一示例中,助理模块122A和/或助理模块122C可以基于确定与用户相关联的一个或多个其他计算设备的位置来选择计算设备以切换对话,助理模块122A和/或助理模块122C确定响应将在视觉上呈现(例如,显示在显示设备处),并且如果UIC 112A不包括显示设备,则助理模块122A和/或助理模块122C可以确定与用户相关联的能够在视觉上呈现响应(例如,包括或可操作地耦合至显示设备)的一个或多个计算设备。然而,用户可以与能够在视觉上呈现响应的一个以上的计算设备相关联。例如,用户可以与一个或多个TV机顶盒、计算机、平板计算机、智能手机等相关联,它们都能够在视觉上呈现响应。

选择对话被切换到的计算设备的另一方式可以是至少部分地基于该计算设备与计算设备110A的接近度。例如,如果两个或多个计算设备可用于接收对话的切换并且能够呈现响应,则助理模块122A和/或助理模块122C可以将对话切换到与用户相关联的能够以期望形式呈现响应的计算设备中的与用户相关联的物理上最接近计算设备110A的计算设备。助理模块122A和/或助理模块122C可以以许多方式确定与用户相关联的计算设备的物理接近度。例如,助理模块122A和/或助理模块122C可以向计算设备查询其当前位置。助理模块122A还可以尝试经由短距离通信(例如,蓝牙、超声通信、红外等)直接与物理上接近计算设备110A的与用户相关联的计算设备连接。由于用户相对更可能访问他或她附近的计算设备,并且由于用户可能在物理上接近计算设备110A以便向计算设备110A发出查询,则助理模块122A和/或助理模块122C可以通过将对话切换到物理上接近计算设备110A的计算设备来防止将对话切换到用户在不久的将来不太可能访问的计算设备。

在另一示例中,助理模块122A和/或助理模块122C可以至少部分地基于最近的活动来确定将对话切换到的计算设备。例如,如果两个计算设备都具有相同或类似的功能能力以便以期望形式(例如,视觉上)输出响应,则助理模块122A和/或助理模块122可以选择最近激活(例如,用户最近使用)的计算设备作为将对话切换到的计算设备。

在一些示例中,结合助理模块122A和/或助理模块122C执行的第三方应用172可以使对话切换到另一计算设备,或者可以以其他方式指示助理模块122A和/或助理模块122B将对话切换到另一计算设备(例如,计算设备110B)。第三方应用172可以是与助理模块122A和/或助理模块122C交互的应用或服务,以便执行所请求的任务或以其他方式生成对查询的响应。助理模块122A和/或助理模块122C可以提供第三方应用172可以访问以便与助理模块122A和/或助理模块122C交互的应用编程接口(API)。

例如,助理模块122A和/或助理模块122C可以在用户请求助理模块122A购买电影票的对话过程期间与在第三方服务器系统170处执行的第三方电影票购买应用进行交互。响应于接收到这种请求,助理模块122A和/或助理模块122C可以与第三方电影票购买应用通信以指导该应用购买电影票。作为响应,第三方电影票购买应用可以主动向助理模块122A和/或助理模块122C发送请求,以将对话切换到包括或可操作地耦合至显示设备的另一计算设备(例如,计算设备110B),使得另一计算设备可以输出电影座位表的视觉表示,从而允许用户查看和选择电影的可用座位。响应于接收到请求,助理模块122A和/或助理模块122C可以将对话切换到可操作地耦合至显示设备的计算设备。

在一些示例中,助理模块122A和/或助理模块122C可以至少部分地基于与用户相关联的计算设备的功能能力来确定响应的形式。更具体地,助理模块122A和/或助理模块122C可以确定将适合于用户的计算设备中的至少一个的响应的形式。例如,如果计算设备110A接收到对今天的天气的查询,则助理模块122A和/或助理模块122C可以确定呈现天气预报的形式。如果与发出查询的用户相关联的计算设备均未可操作地耦合至显示设备,则助理模块122A和/或助理模块122C可以避免确定输出天气预报的视觉表示。相反,如果与用户相关联的至少一个计算设备可操作地耦合至音频输出设备(例如,扬声器),则助理模块122A和/或助理模块122C可以确定输出天气预报的音频表示。

在图1的示例中,由于查询126是对方向的请求,所以助理模块122A和/或助理模块122C可以确定对查询126的响应为交互式地图的形式。助理模块122A和/或助理模块122C可以确定计算设备110A是否能够呈现到餐厅的方向的交互式地图。

例如,计算设备110A可以将其功能能力或其身份的指示发送给数字助理服务器160,使得助理模块122C可以利用这种信息来确定计算设备110A是否可操作地耦合至能够呈现到餐厅的方向的交互式地图的显示设备。可替代地,数字助理服务器160可能已经存储了关于计算设备110A的能力的信息,该助理模块122C可以利用该信息来确定计算设备110A是否可操作地耦合至能够呈现到该餐厅的方向的交互式地图的显示设备。如果助理模块122A确定计算设备110A是否可操作地耦合至能够呈现到餐厅的方向的交互式地图的显示设备,则计算设备110A可能无需将有关其自身的信息发送给数字助理服务器。

助理模块122A和/或助理模块122C可以确定计算设备110A无法呈现到餐厅的方向的交互式地图。例如,计算设备110A可以是没有可操作地耦合至显示设备的独立助理设备。因此,呈现到餐厅的方向的交互式地图可以确定与用户相关联的任何其他计算设备是否可用于接收对话132的切换,并且是否能够呈现到餐厅的方向的交互式地图。

助理模块122A和/或助理模块122C可以确定与用户相关联的计算设备以及这些计算设备是否可用于以多种方式来接收对话的切换。例如,用户信息数据存储124A和/或用户信息数据存储124B可以存储与用户相关联的计算设备的列表及其功能能力和/或可用性状态。可替代地,助理模块122A和/或助理模块122C可以“ping”与用户相关联的计算设备(例如,经由网络130与这些计算设备短暂地通信)以确定它们的可用性状态和/或其功能能力。助理模块122A和/或助理模块122C还可以以类似的方式确定其他相关信息,诸如,与用户相关联的计算设备与计算设备110A的接近度、与该用户相关联的计算设备中最近活动的计算设备以及可用于选择要接收切换的计算设备的其他信息,如上面所讨论的。

基于上述确定中的任何一个或全部,助理模块122A和/或助理模块122C可以确定它会将对话132切换到与用户相关联的智能手机,因为智能手机能够呈现到餐厅的方向的交互式地图,并且因为智能手机可能被用户携带到他的车辆中并用于驾驶方向。助理模块122A和/或助理模块122C可以确定计算设备110B是与用户相关联的智能手机,并且可以将对话132切换到在计算设备110B处执行的助理模块122B。

在一些示例中,助理模块122A和/或助理模块122C可以主动确定是否切换对话。换言之,可以在不接收引起助理模块122A和/或助理模块122C的查询的情况下做出这种确定。相反,助理模块122A和/或助理模块122C可以至少部分地基于迄今为止在用户与助理模块122A之间发生的对话来确定是否将对话切换到另一计算设备。

在图1的示例中,在用户请求助理模块122A在餐厅Luigi's进行预订并且助理模块122A进行了所请求的预订作为对话132的一部分之后,并且在查询126之前,助理模块122A和/或助理模块122C可以确定是否将对话132切换到另一计算设备。例如,助理模块122A和/或助理模块122C可以至少部分地基于以对话132的内容为基础确定用户可能在不久的将来采取的动作来主动确定是否将对话132切换到另一计算设备。

基于对话132的内容确定用户在不久的将来可能采取的动作可以包括确定用户在不久的将来可能与之交互的另一计算设备以及在用户与另一计算设备交互时可能对用户有用的信息。助理模块122A和/或助理模块122C可以基于对话132的内容以许多方式(诸如,基于分析用户偏好或存储在用户信息数据存储124A和/或用户信息数据存储124C处的用户历史)来确定用户在不久的将来可能采取的动作。助理模块122A和/或助理模块122C可以将对话132的内容与用户和助理模块122A之间的先前对话进行比较,并且可以确定在与助理122A交谈之后用户所采取的先前用户动作。通过这种方式,助理模块122A可以主动确定是否要切换对话132以及确定要将对话132切换到的计算设备。

在图1的示例中,助理模块122A和/或助理模块122C可以确定由于对话132包含用户请求对餐厅Luigi's的预订的指示以及对助理模块122A和/或助理模块122C已经进行了预订的确认,因此用户可能会拿起他或她的智能手机并使用智能手机导航到餐厅。因此,助理模块122A和/或助理模块122C可以确定对话132被切换到用户的智能手机(例如,计算设备110B)。

正在切换对话的计算设备110A的助理模块122A可以将要切换对话的指示输出到另一计算设备。在图1中,在确定对话132将被切换到另一计算设备时,助理模块122A可以通过经由UIC 112A输出识别了助理模块122A已经将对话132切换到的计算设备的消息127来通知用户它已经将对话132切换到另一计算设备,并且进一步指示所识别的计算设备将输出对查询126的响应。

为了将对话(例如,对话132)从助理模块122A切换到助理模块122B,助理模块122A和/或助理模块122C可以向助理模块122B发送接收对话的切换的请求,并且助理模块122B可以确定是否接收对话的切换。如果助理模块确定它将接收对话的切换,则助理模块122B可以向助理模块122A和/或助理模块122C发送它接受对话的切换的指示。作为响应,助理模块122A和/或助理模块122C可以将已经被切换的对话的指示发送到助理模块122B。

在一些示例中,对话的指示可以包括文本形式、散列形式或任何其他合适形式的对话的至少一部分。对话的这种部分可以是用户与计算设备交互的日志,包括由计算设备110A(例如,经由UIC 112A)从用户接收的输入的全部或至少一些内容以及由计算设备110B在对话过程期间输出的内容。

在一些示例中,对话的指示还可以包括与正在接收切换的计算设备的对话相关联的上下文信息的至少一部分。例如,助理模块122A和/或助理模块122C可以将存储在用户信息数据存储124A和/或用户信息数据存储124C中的上下文信息的至少一部分转移到计算设备110B,以存储在用户信息数据存储124B中。因此,当用户与计算设备110B处的助理模块122B交互以继续对话时,助理模块122B可以基于与计算设备110A处的助理模块122A的先前用户交互使用这种上下文信息来解释其接收的附加查询(例如,从查询推断出含义),使得它可以接收以生成对这种查询的相关响应。通过这种方式,用户可以通过与计算设备110B处的助理模块122B进行交互来无缝地继续对话,而不会丢失作为对话的一部分的与助理模块122A的先前交互的线程。

对话的指示还可以包括响应于查询由计算设备110B输出的响应的指示。在一个示例中,对要执行的动作的这种指示可以包括对查询的指示,助理模块122B可以针对该查询确定并执行动作。在这种情况下,助理模块122B可能必须解析查询126本身以确定对查询126的适当响应,而不受计算设备110A的指导以执行特定动作。在其他示例中,将由计算设备110B输出的响应的指示可以是使计算设备110B输出响应的任何信息。

在助理模块122A和/或助理模块122C主动切换对话的示例中,对话的指示可以包括对将由计算设备110B执行的任务的指示或者将由计算机设备110B输出的信息的指示,诸如,提供给餐厅的交互式地图。在图1的示例中,如果助理模块122A通过分析查询126确定适当的响应将是输出从用户的位置到Luigi's餐厅的方向的视觉地图,则助理模块122A可以指导助理模块122B以使计算设备110B输出从用户的位置到Luigi's餐厅的方向的视觉地图。在另一示例中,助理模块122A可以指导模块122B以使计算设备110B输出从用户的位置到Luigi's餐厅的方向,而无需指定如何输出这些方向。在这种情况下,助理模块122B可以确定应该在视觉上呈现这种方向。

计算设备110B处的助理模块122B可以从助理模块122A和/或助理模块122C接收切换,包括接收对话132的指示,其包括要由计算设备110B输出以响应查询126的响应的指示。在图1的情况下,助理模块122B可以生成从用户的位置到Luigi's餐厅的方向的视觉地图。助理模块122B可以以许多方式输出所生成的响应。例如,助理模块122B可以在用户界面114中以通知116的形式输出响应。在UIC 112B接收到激活通知116的用户输入之后,诸如,通过轻击、滑动或以其他方式选择通知116,UIC 112B可以输出从用户的位置到Luigi's餐厅的方向的视觉地图。在其他示例中,在接收到对话132的指示和计算设备110B将输出以响应查询126的响应的指示时,计算设备110B可以在没有用户干预的情况下自动打开地图应用以便显示方向的视觉地图。在另一示例中,在接收到对话132的指示和计算设备110B将输出以响应查询126的响应的指示时,计算设备110B可以在没有用户干预的情况下自动打开虚拟助理应用以便显示方向的视觉地图。

助理模块122A和/或助理模块122C可以以多种方式执行从计算设备110A到计算设备110B的对话的切换。如上面所讨论的,助理模块122A和/或助理模块122C可以确定是否切换对话,并且还可以确定将接收切换的计算设备。同样地,助理模块122A、助理模块122C或助理模块122A和助理模块122C的组合可以执行从计算设备110A到计算设备110B的对话的切换。

在一个示例中,助理模块122A可以通过经由网络130(例如,互联网)、经由计算设备110A与计算设备110B之间的短距离直接通信(例如,经由蓝牙)或经由网络130与短距离直接通信的组合与助理模块122B直接通信来执行从计算设备110A到计算设备110B的对话的切换。在另一示例中,助理模块122C可以通过经由网络130与助理模块122B进行通信来执行从计算设备110A到计算设备110B的对话的切换。

可替代地,助理模块122A和助理模块122C的组合可以执行从计算设备110A到计算设备110B的对话的切换。助理模块122A可以经由网络130(例如,互联网)、经由计算设备110A与计算设备110B之间的短距离直接通信(例如,经由蓝牙)或者经由网络130和短距离直接通信的组合来与助理模块122B通信,而助理模块122C可以经由网络130与助理模块122B通信。

在接收到对话132的切换之后,助理模块122B可以单独地或与助理模块122C组合地继续接收用户交互作为对话132的一部分,并且还可以生成对这些用户交互的响应。例如,助理模块122B可以接收语音输入“call them(呼叫他们)”作为查询128,并且助理模块122B和/或助理模块122C可以生成对查询128的响应。

如果助理模块122B结合助理模块122C生成响应,则助理模块122B可以将响应发送到助理模块122C,并且助理模块122C可以单独地或与助理模块122B组合地生成响应。由于助理模块122B和/或助理模块122C能够访问存储在用户信息数据存储124B和/或用户信息数据存储124C中的与对话132相关联的上下文信息,所以助理模块122B和/或助理模块122C可能能够确定查询128是否指的是在对话132切换之前在用户与助理模块122A之间发生的对话的一部分。

例如,助理模块122B和/或助理模块122C可以从这种上下文信息推断出查询128中的“them(他们)”是指Luigi's餐厅,其来自在对话132切换之前在用户与助理模块122A之间发生的对话的一部分。因此,助理模块122B可以将查询128解释为呼叫与Luigi's餐厅相关联的电话号码的请求。因此,助理模块122B和/或助理模块122C可能能够制定对查询128的相关响应。

如果助理模块122B结合助理模块122C生成响应,则助理模块122C可以将响应的指示发送到助理模块122B,以由计算设备110B的UIC 112B输出。助理模块122B因此可以使计算设备110B能够向与Luigi's餐厅相关联的电话号码发出电话呼叫,并且可以输出计算设备110B正在发出这种电话呼叫的指示129。

通过这种方式,与数字助理服务器160处的助理模块122C结合的计算设备110A处的助理模块122A可以将在用户与计算设备110A之间发生的对话主动切换到计算设备110B处的助理模块122B。响应于接收到对话的切换,计算设备110B处的助理模块122B可能能够输出对由计算设备110A处的助理模块122A接收到的请求的响应。助理模块122B可能能够访问与对话相关联的上下文信息,使得助理模块122B可以确定其接收到的请求何时指的是在用户与助理模块122A之间发生的对话的一部分。

在图1的上下文中以及贯穿本公开描述的技术可以以多种方式改善计算设备110A和计算设备110B的运作。例如,由于本公开的技术使计算设备110A能够在没有这样做的显式用户命令的情况下将对话切换到计算设备110B,因此它减少了与计算设备110A的用户交互量,因为用户不必明确地指示计算设备110A将对话切换到计算设备110B。

进一步地,助理可以使用户能够简单地在第二计算平台处继续对话,无需重复用户先前在第一计算平台处提供的相同的用户交互,而不是简单地输出指示用户应该使用不同设备来完成查询的误差或其他消息,从而要求用户在第二计算平台处重复该查询等。

因此,本文公开的技术还可以减少与计算设备110B的用户交互量。因为本公开的技术使计算设备110A能够主动将对话切换到计算设备110B,使得计算设备110B代替计算设备110A输出响应,所以用户不需要向计算设备110B发出查询来接收由计算设备110B输出的相同响应,作为将对话从计算设备110A切换到110B的一部分。

进一步地,由于将对话从计算设备110A切换到计算设备110B包括将对话的上下文信息的指示传输到计算设备110B,因此计算设备110B能够更准确地解释回溯引用与计算设备110A进行的对话的一部分的用户输入。然后,计算设备110A可能能够响应于可能更有用和有意义的用户输入来执行动作或输出响应,从而减少用户向计算设备110B发出查询以接收相同响应的需求。

而且,本公开的技术还可以通过识别可能更适合于输出答案的其他设备来增加用户对助理提供的答案的理解。通过这种方式,本公开的技术可以减少用户接收和理解答案所需的用户输入量,并且可以减少助理在计算设备处主动执行和处理信息的时间量。

图2是图示了根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算设备的框图。下面将图2的计算设备210描述为图1的计算设备110A和/或110B的示例。图2仅图示了计算设备210的一个特定示例,并且计算设备210的许多其他示例可以在其他实例中使用,并且可以包括示例计算设备210中包括的组件的子集,或者可以包括未在图2中示出的附加组件。

如在图2的示例中所示,计算设备210包括用户界面组件(UIC)212、一个或多个处理器240、一个或多个通信单元242以及一个或多个存储组件248。UIC 212包括输出组件202和输入组件204。计算设备210的存储组件248包括UI模块220、助理模块222、用户信息数据存储224、一个或多个应用模块226以及上下文模块230。

通信信道250可以(物理地、通信地和/或可操作地)将组件212、240、242和248中的每一个互连以进行组件间通信。在一些示例中,通信信道250可以包括系统总线、网络连接、过程间通信数据结构或用于传递数据的任何其他方法。

计算设备210的一个或多个通信单元242可以通过在一个或多个网络上传输和/或接收网络信号来经由一个或多个有线和/或无线网络与外部设备通信。通信单元242的示例包括:网络接口卡(例如,诸如,以太网卡)、光学收发器、射频收发器、全球定位卫星(GPS)接收器或者可以发送和/或接收信息的任何其他类型的设备。通信单元242的其他示例可以包括短波无线电、蜂窝数据无线电、无线网络无线电以及通用串行总线(USB)控制器。

计算设备210的一个或多个输入组件204可以接收输入。输入的示例是触觉输入、音频输入和视频输入。在一个示例中,计算设备210的输入组件204包括存在敏感型输入设备(例如,触敏屏幕、PSD)、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自人或机器的输入的任何其他类型的设备。在一些示例中,输入组件204可以包括一个或多个传感器组件、一个或多个位置传感器(GPS组件、Wi-Fi组件、蜂窝组件)、一个或多个温度传感器、一个或多个移动传感器(例如,加速度计、陀螺仪)、一个或多个压力传感器(例如,气压计)、一个或多个环境光传感器以及一个或多个其他传感器(例如,麦克风、相机、红外接近传感器、湿度计等)。仅举几个其他非限制性示例,其他传感器可以包括心率传感器、磁力计、葡萄糖传感器、湿度计传感器、嗅觉传感器、罗盘传感器、步数计数器传感器。

计算设备110的一个或多个输出组件202可以生成输出。输出的示例是触觉输出、音频输出和视频输出。在一个示例中,计算设备210的输出组件202包括PSD、声卡、视频图形适配卡、扬声器、阴极射线管(CRT)监测器、液晶显示器(LCD)或者用于生成对人或机器的输出的任何其他类型的设备。

计算设备210的UIC 212可以类似于计算设备110A和110B的UIC 112A和112B,并且包括输出组件202和输入组件204。输出组件202可以是显示组件,诸如,由UIC 212显示信息的屏幕,并且输入组件204可以是检测在输出组件202处和/或附近的物体的存在敏感型输入组件。输出组件202和输入组件204可以是扬声器和麦克风对或者一个或多个输入和输出组件的任何其他组合,诸如,输入组件204和输出组件202。在图2的示例中,UIC 212可以呈现用户界面(诸如,图1的用户界面114)。

虽然被图示为计算设备210的内部部件,但是UIC 212还可以表示与计算设备210共享数据路径以传输和/或接收输入和输出的外部组件。例如,在一个示例中,UIC 212表示计算设备210的内置组件,该内置组件位于计算设备210的外部封装(例如,移动电话上的屏幕)内并且物理地连接至计算装置210的外部封装。在另一示例中,UIC 212表示计算设备210的外部组件,该外部组件位于计算设备210的封装或外壳(例如,与计算设备210共享有线和/或无线数据路径的监测器、投影仪等)外部并且与计算设备210的封装或外壳物理地分离。

计算设备210内的一个或多个存储组件248可以存储用于在计算设备210的操作期间进行处理的信息(例如,计算设备210可以存储在计算设备210处执行期间由模块220、222、230和226以及数据存储224访问的数据)。在一些示例中,存储组件248是临时存储器,这意味着存储组件248的主要目的不是长期存储。计算设备210上的存储组件248可以被配置用于信息的短期存储作为易失性存储器,因此,如果停电,则易失性存储器不会保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和在本领域中已知的其他形式的易失性存储器。

在一些示例中,存储组件248还包括一个或多个计算机可读存储介质。在一些示例中,存储组件248包括一个或多个非暂时性计算机可读存储介质。存储组件248可以被配置为存储比通常由易失性存储器存储的信息量更多的信息。存储组件248可以进一步被配置用于信息的长期存储作为非易失性存储器空间,并且在通电/停电周期之后保留信息。非易失性存储器的示例包括磁硬盘、光盘、软盘、闪速存储器或者电可编程存储器(EPROM)或者电可擦除可编程(EEPROM)存储器的形式。存储组件248可以存储与模块220、222、230和226以及数据存储224相关联的程序指令和/或信息(例如,数据)。存储组件248可以包括被配置为存储与模块220、222、230和226以及数据存储224相关联的数据或其他信息的存储器。

一个或多个处理器240可以实施功能性和/或执行与计算设备210相关联的指令。处理器240的示例包括应用处理器、显示控制器、辅助处理器、一个或多个传感器集线器以及被配置为充当处理器、处理单元或处理设备的任何其他硬件。模块220、222、230和226可以由处理器240操作以执行计算设备210的各种动作、操作或功能。例如,计算设备210的处理器240可以检索并执行由存储组件248存储的指令,该指令使处理器240执行操作模块220、222、230和226。指令在由处理器240执行时可以使计算设备210将信息存储在存储组件248内,例如,在数据存储224处。

UI模块220可以包括图1的所有功能性UI模块120,并且可以执行与用于执行作为计算设备210的一部分的助理的UI模块120类似的操作。UI模块220可以管理与UIC 212和计算设备210的其他组件的用户交互。当计算设备210的用户查看输出和/或在UIC 212处提供输入时,UI模块220可以使UIC 212输出用户界面。

用户信息数据存储224是图1的用户信息数据存储124A和124B的示例。助理模块222可以包括图1的助理模块122A和122B的所有功能性,并且可以执行与助理模块122A和122B类似的操作,以执行作为计算设备210的一部分的助理并且维护和访问用户信息数据存储224处的用户信息。在一些示例中,助理模块222可以在本地(例如,在处理器240处)执行以提供助理功能。在一些示例中,如图1所示,助理模块222可以充当计算设备210可访问的远程助理服务的接口,诸如,在数字助理服务器160处执行的助理模块122B。例如,助理模块222可以是图1的数字助理服务器160的助理模块122A和/或122B的接口或应用编程接口(API)。

一个或多个应用模块226表示在计算设备210处执行并可从计算设备210访问的所有各种单独的应用和服务,其可由助理访问以向用户提供信息和/或执行任务或动作。应用模块226的许多示例可以存在并且包括健身应用、日历应用、搜索应用、地图或导航应用、旅行应用(例如,计划、预订、票务等)、社交媒体应用、游戏应用、电子邮件应用、聊天或消息传递应用、互联网浏览器应用、餐厅预订应用、电影票应用或可以在计算设备210处执行的任何其他应用。在计算设备210处执行的助理(诸如,助理模块222)可以使应用模块226执行用于执行与该助理相关联的多个动作的指令。换言之,助理可以依靠应用模块226来代表助理执行多个动作。

在从用户接收到明确同意以存储和使用个人信息(例如,存储在数据存储224处的信息)之后,上下文模块230可以处理和分析与计算设备210相关联的上下文信息以定义计算设备210的上下文、计算设备210的用户的上下文和/或助理模块222与用户之间的对话的上下文。上下文模块230可以在存储或使用个人之前对正在分析和/或存储的信息进行加密或以其他方式处理以去除用户的实际身份。例如,该信息可以由上下文模块230处理,使得当存储或发送给远程计算设备(例如,数字助理服务器160)以进行处理时,任何个人可识别信息都将被去除。如果用户肯定地同意使用或收集这种信息,则上下文模块230可以仅分析与计算设备210和/或计算设备210的用户相关联的信息。上下文模块230可以进一步为用户提供撤回同意的机会,并且在这种情况下,上下文模块230可以停止收集或以其他方式保留与计算设备210或计算设备210的用户相关联的信息。

计算设备210的上下文可以在各种位置和时间指定与计算设备210和/或计算设备210的用户以及他或她的物理和/或虚拟环境相关联的一个或多个特性。例如,上下文模块230可以基于来自特定时间的与计算设备210相关联的上下文信息来确定在该特定时间与计算设备210相关联的物理位置,作为计算设备210的上下文的一部分。由于上下文信息改变(例如,基于指示随着时间的移动的传感器信息),上下文模块230可以在计算设备210的所确定的上下文中更新物理位置。

定义特定位置和/或时间的计算设备的上下文的信息类型太多,无法列举。作为一些示例,计算设备的上下文可以指定:不同的位置和时间的声学指纹、视频指纹、位置、移动轨迹、方向、速度、机构名称、街道地址、地点类型、建筑物、天气状况和交通状况。计算设备的上下文可以进一步包括日历信息,该日历信息定义与各种位置和时间相关联的会议或事件、在各种位置和时间观看的网页地址、在各种位置和时间观看的网页的数据字段中进行的文本输入(例如,搜索或浏览历史)以及与各种位置和时间相关联的其他应用使用数据。计算设备的上下文可以进一步包括有关在各种位置和时间由计算设备访问或在存在该计算设备的情况下广播的音频和/或视频流的信息、在各种位置和时间由计算设备访问或在存在该计算设备的情况下广播的电视或有线/卫星广播以及有关在各种位置和时间由计算设备访问的其他服务的信息。

上下文模块230可以与助理模块222共享计算设备210的上下文,并且助理模块222可以利用共享的上下文来确定是否执行动作,诸如,输出事件的通知。上下文模块230可以通过将数据输出到指定用户的当前状态或上下文的助理模块222来响应来自助理模块222的对与计算设备210相关联的当前上下文或当前状态的请求。

在一些示例中,上下文模块230可以确定助理模块222与用户之间的对话的上下文。助理模块222与用户之间的对话的上下文可以是与助理模块222与用户之间的对话的单词和短语相关联的一个或多个特性。当助理模块222与用户之间的对话发生时,上下文模块230可以追踪该对话以对在该对话期间使用的各种单词和短语进行分类和归类。根据该对话,上下文模块230可能能够导出在对话期间使用的各种单词和短语的含义,并且可以对在对话期间使用的特定单词或短语进行分类和/或归类。例如,上下文模块30可以将在对话期间使用的特定单词或短语与诸如人、日期和时间、位置、事件等概念相关联。上下文模块230可以确定与对话相关联的上下文信息,并且可以将这种上下文信息存储到数据存储(诸如,用户信息数据存储224)中。

上下文模块230可能能够以任何合适的方式确定上下文信息。例如,上下文模块230可以对对话执行语义分析以确定各种单词和短语的含义。上下文模块230还可以将含义与对话的特定单词和/或短语相关联,并且可以将特定单词和/或短语与特定标签进行标记、链接或以其他方式相关联。本质上,对话的上下文使用户和/或助理模块222能够回溯引用该对话的先前部分,并且使助理模块222能够将这种引用正确地解释为回指到对话的先前部分。例如,如果对话提到特定的地理位置(例如,企业、地标、地址等),并且如果在对话的后期引用了先前引用的位置,则助理模块222可能能够正确地解释这种引用。

在一些示例中,作为与用户的对话的一部分,助理模块222可以经由UIC 212与用户交互。这种对话可以类似于图1的对话132。当对话发生时,上下文模块230可以分析该对话以确定与该对话相关联的上下文信息,并且可以将这种上下文信息存储到用户信息数据存储224中。UIC 212可以接收作为用户与助理模块222之间的对话的至少一部分的用户输入的指示。这种用户输入可以是查询、对助理模块222执行特定动作(例如,查找方向、进行餐厅预订、购买电影票等)的请求等。

响应于接收到查询,助理模块222可以确定是响应于查询执行动作还是将与用户的对话切换到另一计算设备(即,计算设备210外部的计算设备)。助理模块222可以单独地或结合计算设备210可访问的远程助理服务(例如,在图1所示的数字助理服务器160处执行的助理模块122C)确定是响应于查询执行动作还是将与用户的对话切换到另一计算设备。

例如,如果助理模块222结合远程助理服务来确定是响应于查询来执行动作还是将与用户的对话切换到另一计算设备,则助理模块222可以经由通信单元242通过网络向远程助理服务发送用户接收到的查询的指示。作为响应,助理模块可以经由通信单元242通过网络从远程助理服务接收对查询的响应的指示或者用户与助理模块222之间的对话将被切换到远程计算设备的指示。

在其他示例中,助理模块222可以在不使用远程助理服务的情况下基于多种因素来确定是否应该响应于查询执行动作或者是否应该将其与用户之间的对话切换到远程计算设备。这种因素的示例可以包括以下中的任何一项或任何组合:请求、响应于该请求而执行的动作的类型、计算设备210的能力、与用户相关联的其他计算设备的能力、与用户相关联的其他计算设备的可用性、与用户相关联的其他计算设备的位置和/或它们与计算设备210的接近度等。

助理模块222可以作为确定是否将其与用户之间的对话切换到远程计算设备的一部分来确定与用户相关联的一个或多个这种远程计算设备的能力。在一些示例中,助理模块222可以基于存储在用户信息数据存储224中的信息来确定与用户相关联的远程计算设备的能力。用户信息数据存储224可以与用户一起存储关于每个远程计算设备的信息,包括但不限于远程计算设备的功能能力、远程计算设备与计算设备210的接近度、远程计算设备处于活动状态的最后时间、远程计算设备是否受用户信任等。

在其他示例中,助理模块222可以通过经由通信单元242与远程服务器(例如,云)通信以接收这种信息或者诸如经由通信单元242与远程计算设备直接通信,来确定与用户相关联的远程计算设备的功能能力。例如,如果关于与用户相关联的远程计算设备的功能能力的信息被存储在远程服务器处,则助理模块222可以向远程服务器查询这种信息。

助理模块222也可以直接与远程计算设备通信以查询远程计算设备的功能能力。另外,助理模块22可以直接与远程计算设备通信以确定这些远程计算设备的其他特征、特性或上下文。例如,助理模块222可以利用诸如蓝牙无线电或任何其他短距离通信单元等通信单元242的特征来确定与用户相关联的任何远程计算设备是否接近计算设备210。助理模块222可以利用通信单元242来广播短距离信号。如果通信单元242从与用户相关联的任一远程计算设备接收到其已经接收到短距离信号的指示,则助理模块222可以确定这种远程计算设备接近计算设备210。

基于上述各种因素,助理模块222可以确定是否将其与用户之间的对话切换到另一远程计算设备。如果助理模块222确定其应该将对话切换到特定远程计算设备以响应于请求而执行动作,则助理模块222可以将请求发送到远程计算设备以将对话切换到远程计算设备。如果助理模块222从远程计算设备接收到确认以接收对话的切换,则助理模块222可以将对话切换到远程计算设备。

为了将对话切换到远程计算设备,助理模块222可以发送对话的指示以及对将由远程计算设备输出的查询的响应的指示。对话的指示可以识别与远程计算设备的对话。例如,对话的指示可以包括对话标识符,该对话标识符与存储在远程助理系统处的与对话相关联的上下文信息相关联。远程计算设备在制定对它作为对话的一部分接收的其他查询的响应时可以利用对话标识符来检索与对话相关的这种上下文信息。

另外,发送到远程计算设备的对话的指示可以包括对话的部分或完整的文本记录、由上下文模块230生成的与对话相关联的上下文信息、请求的指示、响应于请求而执行的动作的指示等。远程计算设备可以将与对话相关联的这种上下文信息存储到自己的数据存储中,并且在制定对作为对话的一部分接收到的附加查询的响应时可以使用这种上下文信息。

助理模块222可以通过与远程计算设备直接或间接通信来将对话切换到远程计算设备。在一些示例中,助理模块222可以通过一个或多个中介(诸如,类似于图1的数字助理服务器160的远程助理系统)进行对话的切换。因此,助理模块222可以将用于切换对话的任何必要信息发送到数字助理服务器,并且数字助理服务器可以依次将这种信息发送到远程计算设备。在其他示例中,助理模块222可以通过经由任何合适的直接连接技术与远程计算设备直接通信来进行对话的切换。因此,助理模块222可以直接向远程计算设备发送用于切换对话的任何必要信息。

在一些示例中,助理模块222可以是从远程计算设备接收对话的切换的请求的接收者。作为接收切换的一部分,助理模块可以接收与远程计算设备的对话的指示。对话的这种指示可以包括与对话相关联的上下文信息的指示。对话的这种指示还可以包括响应于作为对话的一部分由远程计算设备接收的请求而要执行的动作的指示。

助理模块222可以将接收到的这种信息存储到用户信息数据存储224中。助理模块222还可以执行被指示为响应该请求的动作。助理模块222可以以许多方式执行动作。如果要执行的动作是进行餐厅申请,则助理模块222可以与餐厅预订应用(例如,应用模块226之一或计算设备210外部的计算设备处的应用)通信以进行所请求的餐厅预订。如果要执行的动作是助理模块222输出到特定位置的方向,则助理模块222可以使输出组件202输出到该位置的方向以供显示。

在一些示例中,助理模块222可以在接收或没有接收到要执行的动作的指示或执行特定动作的指令的情况下确定要执行以响应请求的动作。换言之,助理模块222可以接收该请求的指示,并且可以确定执行哪个动作来响应该请求。助理模块222可以分析该请求以确定该请求的预期含义,并且可以确定要执行以响应该请求的动作。

除了执行所指示的动作之外,助理模块222还可以继续从远程计算设备切换到助理模块222的对话。因此,助理模块222可以继续与用户交互以接收用户输入并且通过执行一个或多个动作来响应这种用户输入,所有这些都作为所切换的对话的一部分。助理模块222可能能够基于从远程计算设备接收并存储在用户信息数据存储224中的上下文信息来解释接收到的用户输入。因此,当用户输入回溯引用在远程计算设备处发生的对话的先前部分时,助理模块222可以利用存储在用户信息数据存储224中的上下文信息来适当地解释这种用户输入。另外,上下文模块230可以继续追踪和分析助理模块222与用户之间的对话以生成与用户相关联的附加上下文信息,并且可以将这种上下文信息存储到用户信息数据存储224中。

图3是图示了根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算设备的框图。下面将图3的数字助理服务器360描述为图1的数字助理服务器160的示例。图3仅图示了数字助理服务器360的一个特定示例,并且数字助理服务器360的许多其他示例可以在其他实例中使用,并且可以包括示例数字助理服务器360中包括的组件的子集,或者可以包括未在图3中示出的附加组件。例如,数字助理服务器360可以包括服务器集群,并且包括组成数字助理服务器360的服务器集群的每个服务器可以包括本文在图3中描述的全部或一些组件,以执行本文公开的技术。

如在图3的示例中所示,数字助理服务器360包括一个或多个处理器340、一个或多个通信单元342以及一个或多个存储设备348。存储设备348包括助理模块322、用户信息数据存储324、第三方模块326和上下文模块328。

处理器340类似于图2的计算设备210的处理器240。通信单元342类似于图2的计算设备210的通信单元242。存储设备348类似于图2的计算设备210的存储设备248。通信信道350类似于图2的计算设备210的通信信道250,因此可以将每个组件340、342和348互连以进行组件间通信。在一些示例中,通信信道350可以包括系统总线、网络连接、过程间通信数据结构或用于传递数据的任何其他方法。

在一些示例中,存储设备348是临时存储器,这意味着存储设备44的主要目的不是长期存储。在该示例中,存储设备348可以被配置用于信息的短期存储作为易失性存储器,因此,如果停电,则不会保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和在本领域中已知的其他形式的易失性存储器。

在一些示例中,存储设备348还可以包括一个或多个计算机可读存储介质。在一些示例中,存储设备348包括一个或多个非暂时性计算机可读存储介质。存储设备348可以被配置为存储比通常由易失性存储器存储的信息量更多的信息。存储设备348可以进一步被配置用于信息的长期存储作为非易失性存储器空间,并且在通电/停电周期之后保留信息。非易失性存储器的示例包括磁硬盘、光盘、软盘、闪速存储器或者电可编程存储器(EPROM)或者电可擦除可编程(EEPROM)存储器的形式。存储设备348可以存储与模块322、326、328以及用户信息数据存储324相关联的程序指令和/或信息(例如,数据)。存储设备348可以包括被配置为存储与模块322、326和328以及用户信息数据存储324相关联的数据或其他信息的存储器。

用户信息数据存储324类似于图2的用户信息数据存储224,并且可以是图1的用户信息数据存储124C的示例。用户信息数据存储42可以被配置为存储助理模块322已经在用户与助理模块322提供的助理之间的对话期间了解到有关计算设备的用户的信息,该信息通过用户相关联。用户信息数据存储324还可以存储由上下文模块328收集的关于用户与助理模块322和/或其他计算设备的助理模块(例如,在计算设备110A处执行的助理模块122A或在计算设备110B处执行的助理模块122B)之间的对话的信息。助理模块322可以依靠存储在用户信息数据存储324处的信息,来确定在对话期间使用的单词和短语的上下文含义以解释查询并且生成对查询的相关响应。具体地,在对话已经从第一计算设备(例如,计算设备110A)切换到第二计算设备(例如,计算设备110B)之后,助理模块322可以利用与对话相关联的信息,如存储在用户信息数据存储324中的,以正确地将计算设备110B接收到的查询的单词、短语、意图等与在切换之前发生的对话部分中的诸如人、地点、事物、位置、事件、日期和时间等概念连接。

助理模块322可以包括图1的助理模块122C和图2的计算设备210的助理模块222的一些或全部功能性。助理模块322可以执行与助理模块122C和222类似的操作,以提供可经由诸如网络130等网络访问的助理服务。即,助理模块322可以充当可由计算设备访问的远程助理服务的接口,该计算设备通过网络与数字助理服务器360进行通信。例如,助理模块322可以是图1的数字助理服务器160的助理模块122C的接口或API。

在操作中,助理模块322可以结合计算设备的助理模块(例如,图1的计算设备110A和110B的助理模块122A和122B)工作,以协助这些助理模块生成对查询的响应并确定当这些助理模块进行用户与助理模块之间的对话时是否切换对话,并且协助切换助理模块122A与122B之间的对话。助理模块322可以协助助理模块122A和122B分析查询,以便制定对查询的响应。例如,助理模块322可以接收由助理模块122A和122B接收到的语音输入的指示,并且可以对语音输入执行语音识别。在另一示例中,助理模块322可能能够将这些助理模块接收到的输入从一种语言翻译成另一种语言。通常,由于数字助理服务器360在服务器设备或服务器设备的集群(诸如,云)上执行,所以助理模块322可以通过执行诸如语音识别和翻译等处理密集型任务来协助计算设备的助理模块。

助理模块322可以监测用户与在远程计算设备处执行的助理模块之间的对话。例如,助理模块322可以接收由在远程计算设备处执行的助理模块从用户接收到的查询的指示以及对查询的响应。在一些示例中,助理模块322可以参与用户与在远程设备处执行的助理模块之间的对话。助理模块322可以接收由在远程计算设备处执行的助理模块接收到的查询的指示。作为响应,助理模块322可以确定对查询的响应,并且可以将所生成的响应的指示发送给在远程设备处执行的助理模块。

在从用户接收到明确同意以存储和使用个人信息(例如,存储在用户信息数据存储324处的信息)之后,上下文模块328可以收集、导出或以其他方式确定与由助理模块322监测的对话和/或助理模块322参与以生成对查询的响应的对话相关联的上下文信息。上下文模块328还可以收集与远程计算设备相关联的上下文信息,该远程计算设备结合助理模块322工作以生成对查询的响应。上下文模块328可以对这种信息进行加密或以其他方式处理,以去除个人信息或可能在存储或使用这种信息之前暴露用户的实际身份的任何其他信息。例如,该信息可以由上下文模块328处理,使得当存储在用户信息数据存储324中时,任何个人可标识信息都将被去除。如果用户肯定地同意使用或收集这种信息,则上下文模块328可以仅收集或保留信息。上下文模块328可以进一步为用户提供撤回同意的机会,并且在这种情况下,上下文模块328可以停止收集或以其他方式保留这种信息。

与用户和在远程计算设备上执行的助理模块之间的对话和/或助理模块322参与以生成响应的对话相关联的上下文信息可以包括与该对话的单词和短语相关联的一个或多个特性或概念,包括但不限于人、地点、事物、位置、事件、日期和时间等。

当发生对话,上下文模块328可以追踪对话以对对话期间使用的各种单词和短语进行分类和归类。根据对话,上下文模块328可能能够导出在对话期间使用的各种单词和短语的含义,并且可以对在对话期间使用的特定单词或短语进行分类和/或归类。上下文模块328可以将在对话期间使用的特定单词或短语与诸如人、日期和时间、位置、事件等概念相关联。上下文模块328可以确定与对话相关联的上下文信息,并且可以将这种上下文信息存储到数据存储(诸如,用户信息数据存储324)中。例如,如果对话引用了餐厅预订,则上下文模块328可以收集诸如餐厅、餐厅的位置、预订的日期和时间等信息,并且可以将收集的每个信息与诸如地点、日期、时间、位置、事件等概念相关联。上下文模块328可以在用户信息数据存储324中存储各种概念与对话中的单词或短语的这种关联。

上下文模块328可能能够以任何合适的方式确定上下文信息。例如,上下文模块328可以对对话执行语义分析以确定各种单词和短语的含义。上下文模块328还可以将含义与对话的特定单词和/或短语相关联,并且可以将特定单词和/或短语与特定标签进行标记、链接或以其他方式相关联,并且将这种关联存储在用户信息数据存储324中。本质上,对话的上下文使用户和/或助理模块(例如,助理模块322)能够回溯引用对话的先前部分,并且使助理模块能够正确地将这种引用解释为回指到对话的先前部分。例如,如果对话提到特定的地理位置(例如,企业、地标、地址等),并且如果在对话的后期引用了先前引用的位置,诸如,“give me directions to there(给我到那儿的方向)”的查询,则助理模块322可能能够正确地将这种引用解释为指的是先前引用的位置。

在一些示例中,助理模块322可以确定对由在远程计算设备处执行的助理模块接收到的查询的响应,并且还可以确定是否将用户与在第一远程计算设备处执行的第一助理模块之间的对话切换到在第二远程计算设备处执行的第二助理模块。助理模块322可以基于贯穿本申请讨论的多种因素来确定是否切换对话。这种因素的示例可以包括以下中的任何一项或任何组合:请求、响应于该请求而执行的动作的类型、接收到查询的计算设备的能力、除了接收到查询的计算设备之外的与用户相关联的其他计算设备的能力、与用户相关联的其他计算设备的可用性、与用户相关联的其他计算设备的位置和/或它们与接收到查询的计算设备的接近度等。

助理模块322可以确定与用户相关联的一个或多个远程计算设备的能力作为确定是否切换对话的一部分。在一些示例中,助理模块322可以基于存储在用户信息数据存储324中的信息来确定与用户相关联的远程计算设备的能力。用户信息数据存储324可以存储与每个远程计算设备和用户有关的信息,包括但不限于远程计算设备的功能能力、远程计算设备与接收到查询的计算设备的接近度、远程计算设备处于活动状态的最后时间、远程计算设备是否受用户信任等。

在其他示例中,助理模块322可以通过经由通信单元342与远程服务器(例如,云)通信以接收这种信息或者诸如经由通信单元342与远程计算设备直接通信,来确定与用户相关联的远程计算设备的功能能力。例如,如果关于与用户相关联的远程计算设备的功能能力的信息被存储在远程服务器处,则助理模块322可以向远程服务器查询这种信息。

在一些示例中,助理模块322可以结合第三方应用(例如,图1所示的第三方应用172)确定是否切换对话。数字助理服务器360的第三方模块326可以代表数字助理服务器360与第三方应用进行交互。即,第三方模块326代表助理模块322与第三方应用交互。第三方模块326可以实施由第三方应用可访问的API或接口,使得助理模块322可以利用第三方应用172来执行任务,作为确定对查询的响应的一部分以及确定是否切换对话的一部分。

在一些示例中,助理模块332可以经由第三方模块326从第三方应用接收对查询的响应的指示、切换对话的指示和/或应该接收切换的计算设备的指示。作为响应,助理模块332可以至少部分地基于响应的指示来确定对查询的响应,至少部分地基于要切换对话的指示来确定是否切换对话,和/或计算设备至少部分地基于应该接收切换的计算设备的指示来接收切换。

另外,助理模块322可以协助将对话从一个计算设备切换到另一计算设备(例如,从图1中的计算设备110A切换到计算设备110B)。例如,助理模块322可以将关于与特定用户相关联的计算设备的信息存储在用户信息数据存储324中。响应于接收到关于与用户相关联的计算设备的信息的请求,助理模块322可以访问用户信息数据存储324以获得这种信息,并且可以返回关于与用户相关联的计算设备的信息。

基于上述各种因素,助理模块322可以确定是否将对话切换到另一远程计算设备以及选择要接收对话的切换的远程计算设备。在一些示例中,助理模块322可以不参与切换对话的过程。在这种情况下,助理模块322可以向接收该查询的远程计算设备发送其会将对话切换到另一远程计算设备的指示。这种指示可以包括将要接收切换的远程计算设备的指示、对查询的响应的指示等。

在一些示例中,助理模块322可以执行对话到远程计算设备的切换。为了将对话切换到远程计算设备,助理模块322可以将接收对话的切换的请求发送到远程计算设备。该请求可以包括对话的指示、对将由远程计算设备输出的查询的响应的指示等。对话的指示可以识别与远程计算设备的对话。例如,对话的指示可以包括对话标识符,该对话标识符与存储在用户信息数据存储324处的与对话相关联的上下文信息相关联。当制定对它作为对话的一部分接收的附加查询的响应时,远程计算设备可以利用对话标识符从用户信息数据存储324中检索与对话相关联的信息。

图4是图示了根据本公开的一个或多个方面的由执行一个或多个示例虚拟助理的一个或多个处理器执行的示例操作的流程图。如图4所示,下面在图1所示的计算设备110A的上下文中描述了操作404至410,下面在图1所示的数字助理服务器160的上下文中描述了操作412至414和430,并且下面在图1所示的计算设备110B的上下文中描述了操作416至428。

例如,根据本公开的一个或多个方面,图1所示的助理模块122A可以在计算设备110A的一个或多个处理器处执行以执行操作400至406。根据本公开的一个或多个方面,图1所示的助理模块122B可以在计算设备110B的一个或多个处理器处执行以执行操作416至428。根据本公开的一个或多个方面,图1所示的助理模块122C可以在数字助理服务器160的一个或多个处理器处执行以执行操作412、414和430。

在操作中,计算设备110A可以在使用和存储这种个人信息之前从用户接收用于使用和存储个人信息的同意(404)。例如,响应于识别潜在的个人信息,助理模块122A可以使UI模块120A向用户请求许可以存储和利用在与助理模块122A和用户的交互期间获得的个人信息。应该理解的是,在每次助理模块122A想要使用或存储个人信息之前,计算设备110A可能不需要用户同意。例如,如果计算设备110A每年一次、每天一次甚或仅一次(例如,在购买初始产品之后、在初始设置期间等)接收到同意,则计算设备110A可以将该事先同意视为同意将来使用和存储个人信息。作为用户可以如何提供同意的一个示例,用户可以提供由UIC 112A检测到的语音输入“yeah that's ok to store information about me(是的,可以存储有关我的信息)”,并且响应于该语音输入,助理模块122A可以开始将有关用户的个人记录维护在数据存储124A处。应该理解的是,用户能够在任何时候明确地或含蓄地撤销先前给出的任何许可。

计算设备110A可以接收查询的用户输入的指示,该查询形成用户与在计算设备110A处执行的助理模块122A之间的对话的至少一部分(406)。计算设备110A可以确定是否将对话从在计算设备110A处执行的助理模块122A切换到另一计算设备(408)。通过将对话切换到另一计算设备,接收到对话的切换的计算设备可以输出对查询的响应而不是计算设备110A。

在一些示例中,如果查询包括将对话切换到另一计算设备的显式指令,则助理模块122A可以遵循该显式指令来将对话切换到查询所指定的计算设备。在其他示例中,助理模块122A可以确定对查询的响应,并且可以至少部分地基于对查询的响应来确定是否将对话切换到另一计算设备。

确定是否将对话切换到另一计算设备可以至少部分地基于对查询的响应,并且更具体地,确定呈现响应的形式。例如,助理模块122A可以确定响应是否将被可听地输出(例如,作为口头输出),在视觉上输出(例如,作为图像或视频),输出为交互式GUI(例如,输出为方向的交互式地图)等。如果计算设备110A无法以所确定的形式呈现响应,或者如果计算设备110A没有被优化为以所确定的形式呈现响应,那么助理模块122A可以确定用户是否与能够以所确定的形式呈现响应和/或被优化为以所确定的形式呈现响应的另一计算设备相关联。

为了确定用户是否与能够以所确定的形式呈现响应和/或被优化为以所确定的形式呈现响应的另一计算设备相关联,助理模块122A可以确定除了计算设备110A之外与用户相关联的计算设备以及确定与用户相关联的可用于接收对话的切换的计算设备。助理模块122A可以在与用户相关联的可用于接收对话的切换的计算设备中确定在功能上能够以所确定的形式呈现响应的一个或多个计算设备。

如果助理模块122A确定与用户相关联的另一计算设备可用于接收对话的切换并且在功能上能够以所确定的形式呈现响应,那么助理模块122A可以确定将对话切换到另一计算设备。换言之,助理模块122A可以至少部分地基于计算设备110A与另一计算设备之间的功能能力的差异来确定是否切换对话。

例如,如果助理模块122A确定要在视觉上输出对查询的响应,则助理模块122A可以确定计算设备110A是否可操作地耦合至显示设备。如果计算设备110A没有可操作地耦合至显示设备,则助理模块122A可以确定与用户相关联的另一计算设备是否可操作地耦合至显示设备。如果与用户相关联的另一计算设备可操作地耦合到显示设备,则助理模块122A可以确定将对话切换到与用户相关联的另一计算设备。

在一些示例中,助理模块122A可以通过与在第三方服务器系统170处执行的第三方应用172通信或以其他方式利用其确定对查询的响应,来确定对查询的响应。第三方应用172可以是可能能够访问第三方服务的应用,诸如,购票服务、打车服务等,以便确定对查询的响应。助理模块122A可以提供第三方应用172可以访问以便与助理模块122A交互的API。

在一些示例中,当第三方应用172结合助理模块122A执行以确定对查询的响应时,第三方应用172可以发送是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示。例如,如果查询是助理模块122A购买音乐会门票的请求,则助理模块122A可以指导第三方应用172访问购票服务以购买音乐会门票。作为响应,第三方应用172可以将该响应是音乐会场地的座位表的视觉表示的指示发送给助理模块122A。

作为响应,助理模块122A可以确定计算设备110A是否能够输出音乐会场地的座位表的视觉表示。如果计算设备110A无法输出音乐会场地的座位表的视觉表示,则助理模块122A可以将对话切换到能够可视化表示音乐会场地的座位表的另一计算设备。通过这种方式,计算设备110A可以基于从第三方应用172接收到的是否切换对话的指示来确定是否切换对话。

如果与用户相关联的可用于接收对话的切换的两个或多个计算设备在功能上能够以所确定的形式呈现响应,则助理模块122A可以基于上面讨论的各种因素来选择两个或多个计算设备之一以接收对话的切换。在一个实例中,助理模块122A可以选择相对更优化的计算设备来以所确定的形式呈现响应。例如,如果要在视觉上呈现响应,并且如果两个或多个计算设备中的每一个可操作地耦合至显示设备,则助理模块122A可以选择可操作地耦合至具有相对较大的显示区域的显示设备的计算设备,作为接收对话的切换的设备。在另一示例中,助理模块122A可以基于两个或多个计算设备之一与计算设备110A的接近度(即,物理距离)来选择该设备以接收对话的切换。在图4的示例中,助理模块122A可以选择计算设备110B以接收对话的切换。

对话到计算设备110B的切换可以以许多方式执行。在一个示例中,响应于确定将对话切换到计算设备110B,计算设备110A可以向计算设备110B发送接收对话的切换的请求(410)。切换对话的请求可以包括对将由计算设备110B输出的查询的响应的指示、迄今为止在用户与助理模块122A之间发生的对话的内容的指示、与对话相关联的上下文信息等。

在一些示例中,代替或结合在计算设备110A处执行的助理模块122A,在数字助理服务器160处执行的助理模块122C可以确定是否将对话从在计算设备110A处执行的助理模块122A切换到另一计算设备。例如,响应于计算设备110A接收到形成用户与在计算设备110A处执行的助理模块122A之间的对话的至少一部分的查询的用户输入的指示(406),在计算设备110A处执行的助理模块122A可以将查询的指示发送到数字助理服务器160。

数字助理服务器160可以从计算设备110A接收查询的指示。作为响应,在数字助理服务器160处执行的助理模块122C可以确定是否将对话从在计算设备110A处执行的助理模块122A切换到另一计算设备(412)。通过将对话切换到另一计算设备,接收到对话的切换的计算设备可以代替计算设备110A输出对查询的响应。

助理模块122C可以执行与计算设备110A执行的技术类似的技术,以确定是否将对话切换到除了计算设备110A之外的计算设备。例如,如果查询包括将对话切换到另一计算设备的显式指令,则助理模块122C可以遵循该显式指令来将对话切换到查询所指定的计算设备。

助理模块122C还可以至少部分地基于确定呈现响应的形式来确定是否将对话切换到另一计算设备。例如,助理模块122C可以确定响应是否将被可听地输出(例如,作为口头输出),在视觉上输出(例如,作为图像或视频),输出为交互式GUI(例如,输出为方向的交互式地图)等。

助理模块122C可以确定计算设备110A是否能够以所确定的形式呈现响应。例如,助理模块122C可以利用关于计算设备110A的能力的存储信息来做出这种确定。在另一示例中,助理模块122C可以向计算设备110A发送关于其能力的查询,并且可以作为响应接收计算设备110A的能力的指示。如果计算设备110A无法以所确定的形式呈现响应,或者如果计算设备110A没有被优化为以所确定的形式呈现响应,那么助理模块122C可以确定用户是否与能够以所确定的形式呈现响应和/或被优化为以所确定的形式呈现响应的另一计算设备相关联。

为了确定用户是否与能够以所确定的形式呈现响应和/或被优化为以所确定的形式呈现响应的另一计算设备相关联,助理模块122C可以确定除了计算设备110A之外与用户相关联的计算设备以及确定与用户相关联的可用于接收对话的切换的计算设备。助理模块122C可以在与用户相关联的可用于接收对话的切换的计算设备中确定在功能上能够以所确定的形式呈现响应的一个或多个计算设备。

如果助理模块122C确定与用户相关联的另一计算设备可用于接收对话的切换并且在功能上能够以所确定的形式呈现响应,那么助理模块122C可以确定将对话切换到另一计算设备。换言之,助理模块122C可以至少部分地基于计算设备110A与另一计算设备之间的功能能力的差异来确定是否切换对话。

例如,如果助理模块122C确定要在视觉上输出对查询的响应,则助理模块122C可以确定计算设备110A是否可操作地耦合至显示设备。如果计算设备110A没有可操作地耦合至显示设备,则助理模块122C可以确定与用户相关联的另一计算设备是否可操作地耦合至显示设备。如果与用户相关联的另一计算设备可操作地耦合到显示设备,则助理模块122C可以确定将对话切换到与用户相关联的另一计算设备。

与助理模块122A类似,在一些示例中,助理模块122C可以通过与在第三方服务器系统170处执行的第三方应用172通信或以其他方式利用其确定对查询的响应,来确定对查询的响应。第三方应用172可以是可能能够访问第三方服务(诸如,购票服务、打车服务等)的应用,以便确定对查询的响应。助理模块122C可以提供第三方应用172可以访问以便与助理模块122C交互的API。

在一些示例中,当第三方应用172结合助理模块122C执行以确定对查询的响应时,第三方应用172可以发送是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示。例如,如果查询是助理模块122C购买音乐会门票的请求,则助理模块122C可以指导第三方应用172访问购票服务以购买音乐会门票。作为响应,第三方应用172可以将该响应是音乐会场地的座位表的视觉表示的指示发送给助理模块122C。

作为响应,助理模块122C可以确定计算设备110A是否能够输出音乐会场地的座位表的视觉表示。如果计算设备110A无法输出音乐会场地的座位表的视觉表示,则助理模块122C可以将对话切换到能够可视化表示音乐会场地的座位表的另一计算设备。通过这种方式,计算设备110C可以基于从第三方应用172接收到的是否切换对话的指示来确定是否切换对话。

如果与用户相关联的可用于接收对话的切换的两个或多个计算设备在功能上能够以所确定的形式呈现响应,则助理模块122C可以基于上面讨论的各种因素来选择两个或多个计算设备之一以接收对话的切换。在一个实例中,助理模块122C可以选择相对更优化的计算设备来以所确定的形式呈现响应。例如,如果要在视觉上呈现响应,并且如果两个或多个计算设备中的每一个可操作地耦合至显示设备,则助理模块122C可以选择可操作地耦合至具有相对较大的显示区域的显示设备的计算设备,作为接收对话的切换的设备。在另一示例中,助理模块122C可以基于两个或多个计算设备之一与计算设备110A的接近度(即,物理距离)来选择该计算设备以接收对话的切换。在图4的示例中,助理模块122C可以选择计算设备110B以接收对话的切换。

对话到计算设备110B的切换可以以许多方式执行。在一个示例中,响应于确定将对话切换到计算设备110B,计算设备110C可以向计算设备110B发送接收对话的切换的请求(414)。切换对话的请求可以包括对将由计算设备110B输出的查询的响应的指示、迄今为止在用户与助理模块122A之间发生的对话的内容的指示、与对话相关联的上下文信息等。

如图4所示,计算设备110A和数字助理服务器160都能够确定是否切换对话(即,操作406和412)以及将切换对话的请求发送到计算设备110B(即,操作410和414)。在一些示例中,响应于执行操作408以确定将对话切换到计算设备110B,在计算设备110A处执行的助理模块122A可以指导在数字助理服务器160处执行的助理模块122C执行操作414以发送将对话切换到计算设备110B的请求。同样地,在一些示例中,响应于执行操作412以确定将对话切换到计算设备110B,在数字助理服务器160处执行的助理模块122C可以指导在计算设备110A处执行的助理模块122A执行操作410以发送将对话切换到计算设备110B的请求。

计算设备110B可以从用户接收用于使用和存储个人信息的同意(416)。例如,响应于识别潜在的个人信息,助理模块122B可以使UI模块120B向用户请求许可以存储和利用在与助理模块122B和用户的交互期间获得的个人信息。应该理解的是,在每次助理模块122B想要使用或存储个人信息之前,计算设备110B可能不需要用户同意。例如,如果计算设备110B每年一次、每天一次甚或仅一次(例如,在购买初始产品、设置之后等)接收到同意,则计算设备110B可以将该事先同意视为用于将来使用和存储个人信息的同意。作为用户可以如何提供同意的一个示例,用户可以提供由UIC 112B检测到的语音输入“yeah that's okto store information about me”,并且响应于该语音输入,助理模块122B可以开始将有关用户的个人记录维护在数据存储124B处。应该理解的是,用户可以在任何时候撤销先前给出的任何许可。

计算设备110B可以从计算设备110A或从数字助理服务器160接收用于接收对话的切换的请求(418)。这种请求至少可以包括对话的指示、将由计算设备110B输出的响应的指示、迄今为止在用户与助理模块122A之间发生的对话的内容的指示、与对话相关联的上下文信息等。

响应于从计算设备110A或从数字助理服务器160接收到用于接收对话的切换的请求,计算设备110B可以确定是否接受对话的切换(420)。如果计算设备110B接受对话的切换,则计算设备110B可以输出响应,使得响应形成现在在用户与在计算设备110B处执行的助理模块122B之间的对话的一部分。

用户可以通过与计算设备110B的UIC 112B交互以提供用户输入来继续与助理模块122B的对话。UIC 112B可以从用户接收指示查询的用户输入的指示(424)。该查询可以回溯引用在将对话切换到在计算设备110B处执行的助理模块122B之前在用户与助理模块122A之间发生的对话的先前部分。

助理模块122B可以确定对查询的响应(426),并且可以在UIC 112B处输出对查询的响应(428)。由于该查询回溯引用在将对话切换到在计算设备110B处执行的助理模块122B之前在用户与助理模块122A之间发生的对话的先前部分,所以助理模块122B可以利用与该对话相关联的上下文信息来确定对该查询的响应。作为执行对话的切换的一部分,这种上下文信息可能先前已经由计算设备110B从计算设备110A和/或数字助理服务器160接收到。例如,如果查询回溯引用时间、地点、位置、事件、人、电影、电视节目、歌曲等,这些内容是在将对话切换到在计算设备110B处执行的助理模块122B之前在用户与助理模块122A之间发生的对话部分中所讨论的,则助理模块122B可以利用与对话相关联的上下文信息以通过将查询中的这种引用映射到特定地点、位置、事件、人、电影、电视节目、歌曲等来生成响应,这些内容是在将对话切换到在计算设备110B处执行的助理模块122B之前在用户与助理模块122A之间发生的对话部分中所讨论的。

在一些示例中,代替确定对查询的响应,助理模块122B可以将查询的指示发送给在数字助理服务器160处执行的助理模块122C。类似于助理模块122B,助理模块122C可以利用与对话相关联的上下文信息来确定对查询的响应。这种上下文信息可能先前已经由助理模块122C确定为监测用户与助理模块122A之间的对话的一部分,或者由数字助理服务器160接收作为执行对话的切换的一部分。例如,如果查询回溯引用时间、地点、位置、事件、人、电影、电视节目、歌曲等,这些内容是在将对话切换到在计算设备110B处执行的助理模块122B之前在用户与助理模块122A之间发生的对话部分中所讨论的,则助理模块122C可以利用与对话相关联的上下文信息以通过将查询中的这种引用映射到特定地点、位置、事件、人、电影、电视节目、歌曲等来生成响应,这些内容是在将对话切换到在计算设备110B处执行的助理模块122B之前在用户与助理模块122A之间发生的对话部分中所讨论的。

响应于接收到查询的指示,助理模块122C可以确定对查询的响应(430),并且可以将该响应的指示发送回在计算设备110B处执行的助理模块122B,使得助理模块122B可以在UIC 112B处输出对查询的响应(428)。

图5是图示了根据本公开的一种或多种技术的用于执行用户与示例虚拟助理之间的对话的切换的计算系统的示例操作的流程图。仅仅为了说明的目的,下面在图1至图4的上下文内对图5的示例操作进行描述。

在图5的示例中,计算系统可以接收由第一计算设备110A从用户接收到的查询的指示,其中,该查询形成用户与在第一计算设备110A处执行的第一助理122A之间的对话的至少一部分(502)。计算系统的示例可以包括系统100、数字助理服务器160和/或计算设备110B。计算系统可以确定是否将对话从在第一计算设备110A处执行的第一助理122A切换到在第二计算设备110B处执行的第二助理122B(504)。响应于确定将对话切换到在第二计算设备110B处执行的第二助理122B,计算系统可以将对话的指示发送到第二计算设备110B(506)。

在一些示例中,计算系统可以至少部分地基于第一计算设备110A与第二计算设备110B之间的功能能力的差异来确定是否将对话从在第一计算设备110A处执行的第一助理122A切换到在第二计算设备110B处执行的第二助理122B。

在一些示例中,至少部分地基于第一计算设备110A与第二计算设备110B之间的功能能力的差异来确定是否将对话从在第一计算设备110A处执行的第一助理122A切换到在第二计算设备110B处执行的第二助理122B可以进一步包括:计算系统确定将在视觉上输出对查询的响应,并且响应于确定第一计算设备110A没有可操作地耦合至第一显示设备以及第二计算设备110B可操作地耦合至第二显示设备,确定将对话切换到在第二计算设备110B执行的第二助理122B。

在一些示例中,计算系统可以从与用户相关联的可用于接收对话的切换的多个计算设备中选择第二计算设备110B接收对话的切换。在一些示例中,选择第二计算设备110B接收切换至少部分地基于第二计算设备110B与第一计算设备110A的物理接近度。

在一些示例中,计算系统可以确定与用户和在第一计算设备110A处执行的第一助理122A之间的对话相关联的上下文信息。计算系统可以接收第二计算设备110B从用户接收到的第二查询的指示,其中,该查询包括第一查询。计算系统可以至少部分地基于上下文信息来确定第二查询回溯引用用户与在第一计算设备110A处执行的第一助理122A之间的对话的在将对话切换到在第二计算设备110B处执行的第二助理122B之前发生的先前部分。计算系统可以至少部分地基于与用户和在第一计算设备110A处执行的第一助理122A之间的对话相关联的上下文信息来确定对第二查询的响应。

在一些示例中,计算系统可以从第三方应用172接收是否将对话从在第一计算设备110A处执行的第一助理122A切换到在第二计算设备110B处执行的第二助理122B的指示。计算系统可以基于是否将对话从在第一计算设备110A处执行的第一助理122A切换到在第二计算设备110B处执行的第二助理122B的指示来确定是否将对话从在第一计算设备110A处执行的第一助理122A切换到在第二计算设备110B处执行的第二助理122B。

在一些示例中,查询可以包括切换对话的显式命令。在一些示例中,计算系统可以从第一计算设备110A接收查询的指示。在一些示例中,第一计算设备可以接收指示查询的用户输入。

如将要了解的,除了上述益处之外,本公开的技术还可以通过识别可能更适合于输出回答的其他设备来增加用户对由助理提供的回答的理解。通过这种方式,本公开的技术可以减少用户接收和理解回答所需的用户输入量,并且可以减少助理在计算设备处主动执行和处理信息的时间量,从而减少助理执行的计算系统的功率使用。另外,由于本公开的技术以不太适合于计算系统的方式减少了计算设备输出回答的次数,因此本公开的技术以非常适合于计算系统的方式增加了计算系统输出回答的频率,从而改善了计算系统的性能和技术操作。

以下编号的示例可以说明本公开的一个或多个方面。

示例1.一种方法,该方法包括:通过计算系统,接收由第一计算设备从用户接收到的查询的指示,其中,该查询形成用户与在第一计算设备处执行的第一助理之间的对话的至少一部分;通过计算系统,确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理;以及响应于确定将对话切换到在第二计算设备处执行的第二助理,通过计算系统向第二计算设备发送对话的指示。

示例2.示例1的方法,其中,确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理至少部分地基于第一计算设备与第二计算设备之间的功能能力的差异。

示例3.示例2的方法,其中,至少部分地基于第一计算设备与第二计算设备之间的功能能力的差异来确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理进一步包括:通过计算系统,确定对查询的响应要在视觉上输出;以及响应于确定第一计算设备没有可操作地耦合至第一显示设备并且第二计算设备可操作地耦合至第二显示设备,通过计算系统,确定将对话切换到在第二计算设备处执行的第二助理。

示例4.示例1至3中任一项的方法,该方法进一步包括:通过计算系统,从与用户相关联的可用于接收对话的切换的多个计算设备中选择第二计算设备来接收对话的切换。

示例5.示例4的方法,其中,选择第二计算设备来接收切换是至少部分地基于第二计算设备与第一计算设备的物理接近度。

示例6.示例1至5中任一项的方法,该方法进一步包括:通过计算系统,确定与用户和在第一计算设备处执行的第一助理之间的对话相关联的上下文信息;通过计算系统,接收由第二计算设备从用户接收到的第二查询的指示,其中,该查询包括第一查询;通过计算系统并且至少部分地基于上下文信息,确定第二查询回溯引用用户与在第一计算设备处执行的第一助理之间的对话的先前部分,该先前部分发生在将对话切换到在第二计算设备处执行的第二助理之前;以及通过计算系统,至少部分地基于与用户和在第一计算设备处执行的第一助理之间的对话相关联的上下文信息来确定对第二查询的响应。

示例7.示例1至6中任一项的方法,该方法进一步包括:通过计算系统,从第三方应用接收是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示;以及通过计算系统,基于是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示来确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理。

示例8.示例1至7中任一项的方法,其中,查询包括切换对话的显式命令。

示例9.示例1至8中任一项的方法,其中,计算系统从第一计算设备接收查询的指示。

示例10.示例9的方法,其中,第一计算设备接收指示查询的用户输入。

示例11.一种系统,该系统包括:第一计算设备;第二计算设备;以及经由网络可操作地连接至第一计算设备和第二计算设备的数字助理系统;其中,第一计算设备可操作以:接收指示查询的用户输入,该查询形成用户与在第一计算设备处执行的第一助理之间的对话的至少一部分,并且将查询的指示发送给数字助理系统;其中,数字助理系统可操作以:从第一计算设备接收查询的指示,并且确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理,并且响应于确定将对话切换到在第二计算设备处执行的第二助理,向第二计算设备发送对话的指示;以及其中,第二计算设备可操作以:从数字助理系统接收对话的指示,并且输出对查询的响应作为对话的一部分。

示例12.示例11的系统,其中,数字助理系统进一步可操作以:至少部分地基于第一计算设备与第二计算设备之间的功能能力的差异来确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理。

示例13.示例12的系统,其中,数字助理系统进一步可操作以:确定对查询的响应要在视觉上输出;以及响应于确定第一计算设备没有可操作地耦合至第一显示设备,并且第二计算设备可操作地耦合至第二显示设备,确定将对话切换到在第二计算设备处执行的第二助理。

示例14.示例12或13的系统,其中,数字助理系统进一步可操作以:从与用户相关联的可用于接收对话的切换的多个计算设备中选择第二计算设备来接收对话的切换。

示例15.示例11至14中任一项的系统,其中:数字助理系统进一步可操作以确定与用户和在第一计算设备处执行的第一助理之间的对话相关联的上下文信息;第二计算设备进一步可操作以:从用户接收指示第二查询的第二用户输入,其中,用户输入包括第一用户输入,以及其中,查询包括第一查询,并且将第二查询的指示发送给数字助理系统;数字助理系统进一步可操作以:至少部分地基于上下文信息,确定第二查询回溯引用用户与在第一计算设备处执行的第一助理之间的对话的先前部分,该先前部分发生在将对话切换到在第二计算设备处执行的第二助理之前,至少部分地基于与用户和在第一计算设备处执行的第一助理之间的对话相关联的上下文信息来确定对第二查询的第二响应,其中,响应包括第一响应,并且将对第二查询的第二响应的指示发送给第二计算设备;以及第二计算设备进一步可操作以:从数字助理系统接收对第二查询的第二响应的指示,并且输出对第二查询的第二响应。

示例16.示例11至15中任一项的系统,其中,数字助理系统进一步被配置为:从第三方应用接收是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示;以及基于是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示来确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理。

示例17.示例11至16中任一项的系统,其中,数字助理系统进一步被配置为:从第三方应用接收是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示;以及基于是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理的指示来确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理。

示例18.示例11至17中任一项的系统,其中,查询包括切换对话的显式命令。

示例19.一种编码有指令的计算机可读存储介质,该指令在被执行时使计算系统的至少一个处理器:接收由第一计算设备从用户接收到的查询的指示,其中,该查询形成用户与在第一计算设备处执行的第一助理之间的对话的至少一部分;确定是否将对话从在第一计算设备处执行的第一助理切换到在第二计算设备处执行的第二助理;以及响应于确定将对话切换到在第二计算设备处执行的第二助理,向第二计算设备发送对话的指示。

示例20.示例19的计算机可读存储介质,其中,指令在被执行时进一步使计算系统的至少一个处理器:确定输出响应的形式;以及从与用户相关联的可用于接收对话的切换并且能够以所确定形式输出响应的多个计算设备中选择第二计算设备来接收对话的切换。

示例21.示例1至10的任何组合的方法。

示例22.一种计算系统,该计算系统包括用于执行示例1至10的任何组合的方法的装置。

示例23.一种计算系统,该计算系统包括被配置为执行示例1至10的任何组合的方法的至少一个处理器。

示例24.一种包括指令的非暂时性计算机可读介质,该指令在由计算系统的至少一个处理器执行时执行示例1至10的任何组合的方法。

示例25.一种方法,该方法包括:通过在第二计算设备处执行的第二助理模块,接收用于接收用户与在第一计算设备处执行的第一助理模块之间的对话的切换的请求,其中,该请求至少包括对话的指示;以及响应于接收到对话的切换,通过第二计算设备,输出促进对话的响应。

示例26.示例25的方法,其中,用于接收对话的切换的请求包括响应的指示。

示例27.示例25和26中任一项的方法,其中,用于接收对话的切换的请求包括通过对话确定的上下文信息的指示。

示例28.示例25至27中任一项的方法,该方法进一步包括:通过第二计算设备,接收用户输入的指示,该用户输入的指示包括请求的指示,其中,该请求指的是在第二计算设备接收到对话的切换之前发生在用户与在第一计算设备处执行的第一助理模块之间的对话的一部分;以及通过第二计算设备,至少部分地基于上下文信息的指示来输出对第二请求的响应。

示例29.示例25至28的任何组合的方法。

示例30.一种计算系统,该计算系统包括用于执行示例25至28的任何组合的方法的装置。

示例31.一种计算系统,该计算系统包括被配置为执行示例25至28的任何组合的方法的至少一个处理器。

示例32.一种包括指令的非暂时性计算机可读介质,该指令在由计算系统的至少一个处理器执行时执行示例25至28的任何组合的方法。

在一个或多个示例中,可以将所描述的功能实施在硬件、软件、固件或其任何组合中。如果实施在软件中,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或者通过计算机可读介质传输并且通过基于硬件的处理单元执行。计算机可读介质可以包括一个或多个计算机可读存储介质,该计算机可读存储介质与有形介质(诸如,数据存储介质或者通信介质)相对应,其包括促进计算机程序从一个地方传送到另一个地方的任何介质,例如,根据通信协议。通过这种方式,计算机可读介质大体上可以与(1)非暂时性的有形计算机可读存储介质或者(2)通信介质(诸如,信号或者载波)相对应。数据存储介质可以是可以通过一个或多个计算机或者一个或多个处理器访问以检索用于本公开所描述的技术的实施方式的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为示例但不限于,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或者其他光盘存储装置、磁盘存储装置或者其他磁性存储装置、闪速存储器或者可以用于以指令或者数据结构的形式存储期望的程序代码并且可以通过计算机访问的任何其他存储介质。而且,任何连接都被恰当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光缆、双绞线、数字用户线(DSL)或者无线技术(诸如,红外、无线电和微波)从网站、服务器或者其他远程源传输,那么同轴电缆、光缆、双绞线、DSL或者无线技术(诸如,红外、无线电和微波)被包括在介质的定义中。然而,应该理解的是,一个或多个计算机可读存储介质和数据存储介质不包括连接、载波、信号或者其他瞬态介质,而是涉及非瞬态的有形存储介质。如本文所使用的磁盘和光盘包括:压缩盘(CD)、激光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光光学地复制数据。上述的组合也应该被包括在计算机可读介质的范围内。

指令可以通过一个或多个处理器(诸如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或者其他等效的集成或者离散逻辑电路系统)执行。因此,本文所使用的术语“处理器”可以指任何前述的结构或者适合于实施本文描述的技术的任何其他结构。另外,在一些方面中,可以将本文描述的功能性提供在专用的硬件模块和/或软件模块内。而且,可以将该技术充分地实施在一个或多个电路或者逻辑元件中。

本公开的技术可以实施在各种设备或者装置中,包括无线手机、集成电路(IC)或者一组IC(例如,芯片集)。在本公开中,将各种组件、模块或者单元描述为用于强化配置为执行所公开的技术的设备的功能方面,但并不一定需要通过不同的硬件单元实现。相反,如上所述,结合合适的软件和/或固件,可以将各种单元组合在硬件单元中或者可以通过交互操作的硬件单元的集合(包括上述的一个或多个处理器)来提供。

已经对各种实施例进行了描述。这些和其他实施例在以下权利要求的范围内。

45页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于音频信号的动态范围增强的装置和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!