CN112262370A - 响应于语音命令在应用上渲染视觉组件 - Google Patents
响应于语音命令在应用上渲染视觉组件 Download PDFInfo
- Publication number
- CN112262370A CN112262370A CN201980002177.6A CN201980002177A CN112262370A CN 112262370 A CN112262370 A CN 112262370A CN 201980002177 A CN201980002177 A CN 201980002177A CN 112262370 A CN112262370 A CN 112262370A
- Authority
- CN
- China
- Prior art keywords
- application
- action
- user interface
- client device
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 37
- 230000000007 visual effect Effects 0.000 title claims abstract description 23
- 230000004044 response Effects 0.000 title claims description 91
- 230000009471 action Effects 0.000 claims abstract description 650
- 238000000034 method Methods 0.000 claims abstract description 259
- 230000008569 process Effects 0.000 claims abstract description 220
- 238000012545 processing Methods 0.000 claims abstract description 180
- 230000005236 sound signal Effects 0.000 claims abstract description 159
- 238000013475 authorization Methods 0.000 claims description 40
- 230000003993 interaction Effects 0.000 claims description 27
- 238000001514 detection method Methods 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims 2
- 239000003795 chemical substances by application Substances 0.000 description 166
- 230000006870 function Effects 0.000 description 40
- 238000004891 communication Methods 0.000 description 27
- 238000013507 mapping Methods 0.000 description 18
- 230000015654 memory Effects 0.000 description 15
- 230000014509 gene expression Effects 0.000 description 14
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 235000013353 coffee beverage Nutrition 0.000 description 8
- 238000013515 script Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000003058 natural language processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 235000015115 caffè latte Nutrition 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 239000003599 detergent Substances 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- IRLPACMLTUPBCL-KQYNXXCUSA-N 5'-adenylyl sulfate Chemical compound C1=NC=2C(N)=NC=NC=2N1[C@@H]1O[C@H](COP(O)(=O)OS(O)(=O)=O)[C@@H](O)[C@H]1O IRLPACMLTUPBCL-KQYNXXCUSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/16—Sound input; Sound output
- G06F3/167—Audio in a user interface, e.g. using voice commands for navigating, audio feedback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/18—Speech classification or search using natural language modelling
- G10L15/1822—Parsing for meaning understanding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Acoustics & Sound (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本公开大体上涉及在应用上渲染视觉组件的系统和方法。至少一个动作清单可以指示渲染用户界面组件。数据处理系统可以从来自客户端设备的输入音频信号识别请求。所述客户端设备可以在前台进程中显示第一应用。所述数据处理系统可以选择动作清单以通过第二应用执行与所述请求相对应的动作。所述数据处理系统可以使用所述动作清单生成动作数据结构以提供给所述第二应用。所述数据处理系统可以确定所述第二应用的输出被授权与所述第一应用一起呈现。所述数据处理系统可以在所述客户端设备上与所述第一应用一起显示来自所述第二应用的用户界面组件。
Description
背景技术
可以在计算设备上安装应用。计算设备可以执行应用。应用可以呈现数字内容。
发明内容
根据本公开的第一方面,涉及一种用于在应用上渲染视觉组件的系统。该系统可以包括在具有一个或多个处理器的数据处理系统上执行的代理注册表。代理注册表可以维持多个应用的多个动作清单。多个动作清单中的至少一个动作清单可以指示在执行动作时渲染多个应用中的一个应用的用户界面组件。该系统可以包括在数据处理系统上执行的自然语言处理器。自然语言处理器可以接收包括由客户端设备的传感器检测到的输入音频信号的数据分组。客户端设备可以在客户端设备上的前台进程中显示第一应用的图形用户界面。自然语言处理器可以解析数据分组的输入音频信号以识别请求。该系统可以包括在数据处理系统上执行的动作处理机(action handler)。该动作处理机可以从多个动作清单中选择通过多个应用中的第二应用执行与请求相对应的动作的动作清单。第二应用可以安装在客户端设备上而未处于前台进程中。动作处理机可以根据动作清单生成动作数据结构。该系统可以包括在数据处理系统上执行的动作处理机。代理界面可以将动作数据结构提供给第二应用以使第二应用解析动作数据结构并且执行动作以生成输出。代理界面可以基于第二应用的授权策略确定来自执行动作的第二应用的输出被授权与第一应用的图形用户界面一起呈现。代理界面可以响应于确定第二应用的输出被授权与第一应用一起呈现,针对选自多个动作清单的动作清单识别第二应用的用户界面组件。代理界面可以将包括来自第二应用的输出的用户界面组件与被授权与第二应用一起呈现的第一应用的图形用户界面一起显示在客户端设备上。
多个动作清单中的至少一个动作清单可以具有用于在执行动作时访问用户界面组件的地址模板,该地址模板定义第一部分和第二部分,第一部分与多个应用中的一个应用相对应,第二部分包括在执行动作时的输入变量。自然语言处理器可以解析数据分组的输入音频信号以标识定义要由第二应用执行的请求的参数。动作处理机可以根据动作清单的地址模板,生成用于执行动作清单的动作的地址,该地址包括第一子字符串和第二子字符串,第一子字符串与第二应用相对应,第二子字符串具有用于控制动作的执行的参数;以及生成包括由动作处理机根据地址模板生成的地址的动作数据结构。
多个动作清单中的至少一个动作清单可以具有用于在执行动作时访问用户界面组件的地址模板,该地址模板定义第一部分和第二部分,第一部分与多个应用中的一个应用相对应,第二部分包括在执行动作时的输入变量。自然语言处理器可以解析数据分组的输入音频信号以识别定义要由第二应用执行的请求的参数。动作处理机用于:根据动作清单的地址模板,生成用于执行动作清单的动作的地址,该地址包括第一子字符串和第二子字符串,第一子字符串与第二应用相对应,第二子字符串具有用于控制动作的执行的参数。代理界面可以使用根据动作清单的地址模板生成的地址,针对选自多个动作清单的动作清单识别第二应用的用户界面组件。
每个动作清单可以具有与多个应用中的一个应用相对应的代理标识符和与动作相对应的请求标识符。自然语言处理器可以解析数据分组的输入音频信号以识别与代理相对应的代理标识符,代理与安装在客户端设备上的第二应用相对应。动作处理机可以从多个动作清单选择用于执行动作的动作清单,动作具有与从解析输入音频信号中识别出的代理标识符相对应的代理标识符。
动作处理机可以确定动作清单的界面模式指示符指定在执行动作时渲染用户界面组件,并且响应于确定界面模式指示符指定了渲染用户界面组件,针对动作清单识别第二应用的用户界面组件。
代理界面可以针对用于执行与第二请求相对应的动作的动作清单确定客户端设备未经过第二应用认证,并且可以响应于确定客户端设备未经过第二应用认证,在客户端设备上呈现提示界面以向第二应用认证客户端设备以执行与第二请求相对应的动作。
代理界面可以基于用户第三应用的授权策略确定第三应用的输出未被授权与第一应用一起呈现,第三应用安装在客户端设备上而未处于前台进程中,将第三应用设置为客户端设备的前台进程,第一应用从前台进程变为在客户端设备上运行的非前台进程,并且在客户端设备上显示第三应用的图形用户界面,该图形用户界面包括由第三应用生成的输出。
代理界面可以基于第一应用的授权策略确定第一应用授权将第二应用的用户界面组件与第一应用的图形用户界面一起呈现,该授权策略允许来自多个应用中的第一子集的用户界面组件与图形用户界面一起呈现并且限制来自多个应用的第二子集的用户界面组件与图形用户界面一起呈现,并且响应于确定第一应用授权将第二应用的用户界面组件与第一应用的图形用户界面一起呈现,在客户端设备上与第一应用的图形用户界面一起显示包括来自第二应用的输出的用户界面组件。
代理界面可以将动作数据结构提供给第二应用以使第二应用监视在与第一应用的图形用户界面一起呈现的来自第二应用的用户界面组件上的交互事件,并且响应于对该交互事件的检测,处理该交互事件以更新用户界面组件。
自然语言处理器可以用于经由数字助理应用接收数据分组,该数据分组包括由客户端设备的传感器检测到的输入音频信号,客户端设备在前台进程中显示与第一应用相对应的数字助理应用的图形用户界面。代理界面可以在数字助理应用的图形用户界面内显示包括指示从解析输入音频信号中识别出的请求的子组件的用户界面组件以及包括来自与第二应用相对应的代理的输出的用户界面组件。该代理可以不具有自然语言处理能力。
自然语言处理器可以接收数据分组,该数据分组包括由客户端设备的传感器检测到的输入音频信号,客户端设备在前台进程中显示与第一应用相对应的第一代理的图形用户界面;并且代理界面用于显示包括来自第二应用的输出的用户界面组件,作为在第一代理的图形用户界面上的覆盖物。
多个动作清单可以具有动作清单的第一子集和动作清单的第二子集,该第一子集包括由数据处理系统的管理员定义的动作清单,该第二子集包括由处理多个应用中的一个应用的代理服务提供的动作清单。
动作处理机可以将动作数据结构提供给第二应用以使第二应用解析动作数据结构以识别待执行的动作,通过执行从动作数据结构中识别出的动作生成输出,并且向待与被授权与第二应用一起呈现的第一应用的图形用户界面一起呈现的用户界面组件提供输出。
根据本公开的第二方面,涉及一种在应用上渲染视觉组件的方法。具有一个或多个处理器的数据处理系统可以维持多个应用的多个动作清单。多个动作清单中的至少一个动作清单可以指示在执行动作时渲染多个应用中的一个应用的用户界面组件。数据处理系统可以接收包括由客户端设备的传感器检测到的输入音频信号的数据分组。客户端设备可以在客户端设备上的前台进程中显示第一应用的图形用户界面。数据处理系统可以解析数据分组的输入音频信号以识别请求。数据处理系统可以从多个动作清单中选择通过多个应用中的第二应用执行与请求相对应的动作的动作清单。第二应用可以安装在客户端设备上而未处于前台进程中。数据处理系统可以根据动作清单生成动作数据结构。数据处理系统可以将动作数据结构提供给第二应用以使第二应用解析动作数据结构并且执行动作以生成输出。数据处理系统可以基于第二应用的授权策略确定来自执行动作的第二应用的输出被授权与第一应用的图形用户界面一起呈现。数据处理系统可以响应于确定第二应用的输出被授权与第一应用一起呈现,针对选自多个动作清单的动作清单识别第二应用的用户界面组件。数据处理系统可以将包括来自第二应用的输出的用户界面组件与被授权与第二应用一起呈现的第一应用的图形用户界面一起显示在客户端设备上。
在上面或者在下面的详细描述中描述的第一方面的可选特征可以与第二方面组合。
这些和其他方面以及实施方式将在下面详细讨论。前述信息和以下详细描述包括各个方面和实施方式的说明性示例,并提供用于理解所要求保护的方面和实施方式的性质和特点的概述或框架。附图提供了对各个方面和实施方式的说明和进一步的理解,并且被并入本说明书中并构成本说明书的一部分。
附图说明
附图并非旨在按照比例绘制。在各个图中,类似的参考符号和指定表示类似的元件。出于简洁起见,在每幅图中可以不必标出每个组件。在图中:
图1示出了根据本公开的示例的用于响应于语音输入命令在应用上渲染视觉组件的示例系统的框图。
图2示出了根据本公开的示例的用于在图1所示的系统中响应于语音输入命令在应用上渲染视觉组件的示例数据流的时序图。
图3示出了根据本公开的示例的图1所示系统中显示输入消息并且生成地址的示例客户端设备的用例图。
图4示出了根据本公开的示例的用于使用图1所示的示例系统响应于语音输入命令在应用上渲染视觉组件的方法的流程图。
图5是示例计算机系统的框图。
具体实施方式
下面是与响应于语音输入命令在应用上渲染视觉组件的方法、装置和系统有关的各种构思及其实施方式的更详细描述。可以按照许多方式中的任何一种来实现上面介绍的和下面将更详细讨论的各种构思。
可以在客户端设备上安装多个应用,以根据操作客户端设备的用户的请求进行预配置的功能。在给定的时间,客户端设备可以运行这些应用的子集,作为由客户端设备上运行的操作系统设置的前台进程或非前台进程。前台进程(包括可见进程)可以对应于具有图形用户界面的应用,该图形用户界面呈现在用户可能正在与之交互的客户端设备的显示器上。非前台进程(例如,服务进程、后台进程或缓存的进程)可以对应于不向用户显示视觉组件并执行而不会影响前台进程的图形用户界面的应用。在客户端设备上运行的应用可以在作为前台进程执行或作为非前台进程执行之间来回切换。切换后,以前是前台进程的应用的图形用户界面可以由现在设置为前台进程的应用的图形用户界面替换。另外,由于前台进程和非前台进程之间的切换,处理和内存分配可能会改变。
在前台或非前台运行的这些应用之一可以包括数字助理应用。与安装在客户端设备上的至少某些其他应用不同,数字助理应用可以具有自然语言处理能力。由于数字助理应用被配置有这些能力,所以数字助理应用可以获取并解析通过客户端设备的麦克风检测到的输入音频信号,以从输入音频信号中识别词语。根据所识别的词语,数字助理应用可以确定要执行的请求以及定义该请求的一个或多个参数。该请求可以是指具有与数字助理应用可以执行的参数兼容的输入自变量的预配置功能之一(例如,检索搜索查询的结果)。对于此类请求,数字助理应用本身可以处理该请求,并通过执行请求呈现音频或视觉输出。但是,某些请求可能不对应于数字助理应用上预先配置的任何功能(例如,播放来自在线视频平台的视频)。对于这些类型的请求,数字助理应用可以识别能够执行该请求的另一个应用,并调用该应用的功能以传递参数。
通过调用另一个应用来执行请求,数字助理应用可以导致应用是前台进程和非前台进程的变化,从而导致客户端设备上显示的图形用户界面发生变化。此外,对每个正在执行的应用的处理和内存分配可能会发生变化和波动,尤其是在调用先前未执行的应用时。虽然可以最终通过调用的应用在客户端设备上执行所需的请求,但是切换可能会干扰客户端设备上的应用的整体用户体验。例如,在客户端设备上显示的图形用户界面中的突然改变会迫使用户在多个应用的界面之间进行上下文切换,从而降低了与客户端设备的人机交互(HCI)。在执行前台进程和非前台进程的切换时,计算资源的新分配的变化和波动还会加剧客户端设备的降级。
本公开提供了一种改进的用户界面。具体地,为了解决在对接方面的技术挑战,本公开可以提供用于识别和呈现将被覆盖在前台中的应用的图形用户界面上的用户界面组件的动作清单(action inventory)。动作清单可以指定是否在后台维持应用的同时提供应用的用户界面元素。动作清单还可以包括地址模板,以构造用于访问数字助理应用的功能并在客户端设备上提供用户界面元素的地址。动作清单的地址模板可以是,例如,统一资源标识符(URI)模板,用于使用主机名、路径名和查询来构造网络地址,以调用应用的功能以及用户界面组件。主机名(或方案)可以引用应用的位置或域名。路径名可以引用功能。查询可以包括用于执行功能的一个或多个输入自变量。地址模板还可以定义从输入音频信号解析的请求到应用要执行的功能的映射。
在从输入音频信号中识别出请求后,数字助理应用可以确定请求与数字助理应用的任何功能性或作为前台进程运行的任何应用都不相对应。代替输出数字助理应用不能执行所指示的请求,数字助理应用可以识别另一个应用来执行该功能。在处理请求时,数字助理应用可以保留为后台进程,而原始应用保留为前台进程。通过该识别,数字助理应用可以针对功能选择应用的动作清单。所选择的动作清单可以指示将要呈现应用的用户界面组件。使用动作清单,数字助理应用可以根据地址模板构造、扩展和生成该功能的地址。该地址可以包括引用该应用的主机名(或方案)、引用该功能和用户界面组件的路径、以及一个或多个包括参数的查询。
随着根据地址模板生成地址,数字助理应用可以生成包括该地址的动作数据结构(例如,API函数调用)并将其传递给应用。可以将动作数据结构传递到的应用作为后台进程打开,并在处理和完成动作后保留在后台进程中。可以将动作数据结构传递给其他应用,因为原始应用将继续保留为前台进程。例如,动作数据结构可以由客户端设备上的操作系统通过API函数调用从数字助理应用传递到应用。由于地址包括引用该应用的主机名,因此可以将动作数据结构导引到达所引用的应用。收到后,应用可以解析动作数据结构以识别地址。应用可以进一步解析地址以识别用于标识要执行的功能的路径名,并且解析字符串查询以识别用于定义该功能的执行的一个或多个参数。基于该识别,应用可以执行功能以生成输出。使用应用生成的输出,数字助理可以渲染应用的用户界面组件。应用的用户界面组件可以覆盖在前台进程的应用的图形用户界面上。
以这种方式,数字助理应用可以调用其他应用的功能,并从这些应用中呈现用户界面组件的渲染,从而增强数字助理应用的功能。可以在无需用户手动搜索、打开和输入以实现所需功能或不必在不同应用之间进行上下文切换的情况下执行调用。因此,消除了操作客户端设备的用户方面的上下文切换可以改善HCI。此外,即使从输入音频信号中识别出请求,应用仍可以保留在前台进程和非前台进程中。由于消除了前台进程和后台进程之间的切换,因此数字助理应用可以减少计算资源的消耗并减少用户方面的时间。
参照图1,描绘了用于在应用上渲染视觉组件的示例系统100。系统100可以包括至少一个数据处理系统102、至少一个客户端设备104和至少一个代理服务106。数据处理系统102、客户端设备104和代理服务106可以经由至少一个网络114彼此通信地耦合。
系统100的组件可以通过网络114进行通信。网络114可以包括:例如,点对点网络、广播网络、广域网、局域网、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光网络)网络、SDH(同步数字体系)网络、NFC(近场通信)网络、局域网(LAN)、无线网络或有线网络、及其组合。网络114可以包括无线链路,诸如红外信道或卫星频带。网络114的拓扑可以包括总线、星形或环形网络拓扑。网络114可以包括使用任何一种或多种用于在移动设备之间进行通信的协议的移动电话网络,包括:高级移动电话协议(AMPS)、时分多址(TDMA)、码分多址(CDMA)、全球移动通信系统(GSM)、通用分组无线业务(GPRS)或通用移动电信系统(UMTS)。可以经由不同的协议传输不同类型的数据,或者可以经由不同的协议传输相同类型的数据。
数据处理系统102和代理服务106分别可以包括多个逻辑分组的服务器,并有助于分布式计算技术。服务器的逻辑组可以称为数据中心、服务器场或机器场。服务器在地理位置上可以是分散的。数据中心或机器场可以作为单个实体进行管理,或者机器场可以包括多个机器场。每个计算机场中的服务器可以是异构的:一个或多个服务器或机器可以根据一种或多种类型的操作系统平台进行操作。数据处理系统102和代理服务106分别可以包括:数据中心中的存储在一个或多个高密度机架系统中的的服务器、以及例如位于企业数据中心中的关联存储系统。以这种方式,具有整合服务器的数据处理系统102和代理服务106可以通过将服务器和高性能存储系统定位在本地化的高性能网络上来改善系统的可管理性、数据安全性、系统的物理安全性以及系统性能。将所有或某些数据处理系统102和代理服务106组件(包括服务器和存储系统)集中化并且将它们与高级系统管理工具耦合在一起允许更有效地利用服务器资源,从而节省了功率和处理需求并减少了带宽使用。数据处理系统102的每个组件可以包括至少一个处理单元、服务器、虚拟服务器、电路、引擎、代理、器具或其他逻辑设备,诸如配置为与数据存储库128以及与其他计算设备通信的可编程逻辑阵列。代理服务106还可以包括至少一个处理单元、服务器、虚拟服务器、电路、引擎、代理、器具或其他逻辑设备,诸如配置为与数据存储库以及与其他计算设备通信的可编程逻辑阵列。
数据处理系统102可以包括至少一个数字助理应用108的实例。数字助理应用108可以包括至少一个自然语言处理器(NLP)组件116(有时在本文中称为自然语言处理器)以解析基于音频的输入。数字助理应用108可以包括至少一个音频信号生成器组件118(在本文中有时称为音频信号生成器)以生成基于音频的信号。数字助理应用108可以包括至少一个动作处理机组件120(有时在本文中称为动作处理机),以基于基于音频的输入来生成动作数据结构。数字助理应用108可以包括至少一个响应选择器组件122,以选择对基于音频的输入信号的响应。数字助理应用108可以包括至少一个代理注册表组件124(在本文中有时称为代理注册表),以维持用于生成动作数据结构的动作清单。数字助理应用108可以包括至少一个代理界面组件126(有时在本文中称为代理界面)以与一个或多个代理应用110通信。
数字助理应用108可以包括至少一个数据存储库128。数据处理系统102的数据存储库128可以包括一个或多个本地或分布式数据库,并且可以包括数据库管理系统。数据存储库128可以包括一个或多个正则表达式130、一个或多个数据参数132、一个或多个策略134、一个或多个响应数据136、一个或多个模板138以及一个或多个动作清单140。NLP组件116、音频信号生成器组件118、动作处理机组件120、响应选择器组件122、代理注册表组件124、代理界面组件126和数据存储库128可以彼此分离。数据存储库128可以包括计算机数据存储或存储器,并且可以存储一个或多个正则表达式130、一个或多个数据参数132、一个或多个策略134、响应数据136、模板138以及一个或多个动作清单140等其他数据。数据参数132、策略134和模板138可以包括诸如关于客户端设备104和数据处理系统102之间的基于语音的会话的规则之类的信息。响应数据136可以包括用于音频输出的内容项或相关联的元数据、以及可以是与客户端设备104的一个或多个通信会话的一部分的输入音频消息。动作清单140可以包括用于调用代理应用110或与代理应用110对接的信息。
数据处理系统102可以包括至少一个代理应用110(在此也称为“代理”或“应用”)的实例,以执行各种功能。代理服务106可以包括至少一个代理应用110的实例以执行各种功能。代理应用110可以不具备自然语言处理能力(诸如NLP组件116提供的能力)。代理应用110还可以具有一组预先配置的或预定的输入能力。代理应用110的输入能力可以包括:例如,来自客户端设备104的鼠标、键盘、触摸屏(例如,显示器148)或相机的输入。代理应用110的输入能力可以不具备来自客户端设备104的音频(例如,麦克风146)。代理应用110可以具有图形用户界面(GUI),以接收来自客户端设备104的输入。基于来自预定输入能力的输入,代理应用110可以进行或执行一种或多种功能。例如,代理应用110可以是咖啡购买应用,并且可以具有带有一个或多个元素的图形用户界面以指定咖啡的订单。在该应用中,操作客户端设备104的用户可以在渲染在客户端设备104的显示器148上的图形用户界面上手动输入咖啡、大小和计费信息等。一旦设置,客户端设备104上的代理应用110就可以经由网络114将输入发送到代理服务106。代理服务106继而可以执行由通过代理应用110的图形用户界面输入的输入所指示的购买订单。
数据处理系统102的组件可以分别包括至少一个处理单元或其他逻辑设备,诸如被配置为与数据存储库128通信的可编程逻辑阵列引擎或模块。数据处理系统102的组件可以是单独的组件、单个组件、或多个数据处理系统102的一部分。系统100及其组件(诸如数据处理系统102)可以包括硬件元素,诸如一个或多个处理器、逻辑设备或电路。
可以包括数据处理系统102的功能性,诸如数字助理应用108或代理应用110,或者可以从一个或多个客户端设备104访问数据处理系统102的功能性。数据处理系统102的功能性可以对应于在客户端设备104上执行的功能性或与在客户端设备104上执行的数字助理应用108对接。客户端设备104可以分别包括并执行数字助理应用108的一个或多个组件的单独实例。客户端设备104可以以其它方式经由网络114具有对远程数据处理系统102上的数字助理应用108的组件的功能性的访问。例如,客户端设备104可以包括NLP组件116的功能性,并可以经由网络114访问数字助理应用108的其余组件到数据处理系统102。数据处理系统102的功能性可以与在客户端设备104上执行的代理应用110的功能性相对应或与在客户端设备104上执行的代理应用110对接。客户端设备104可以以其它方式经由网络114具有对数据处理系统102或代理服务106上的代理应用110的组件的功能性的访问。例如,客户端设备104可以预处理来自鼠标、键盘、触摸屏或相机的用于代理应用110的输入,并将该输入提供给代理服务106以执行代理应用110的功能。在客户端设备104上执行的数字助理应用108可以包括在数据处理系统102上执行的数字助理应用108的功能性。
客户端设备104可以分别包括至少一个逻辑设备,诸如具有处理器以经由网络114与数据处理系统102彼此通信的计算设备。客户端设备104可以包括关于数据处理系统102或代理服务106描述的任何组件的实例。客户端设备104可以包括数字助理应用108的实例。客户端设备104可以包括代理应用110的实例。客户端设备104可以包括台式计算机、膝上型计算机、平板计算机、个人数字助理、智能手机、移动设备、便携式计算机、瘦客户端计算机、虚拟服务器、基于扬声器的数字助理或其他计算设备。
客户端设备104可以包括数字助理应用108的至少一个实例、代理应用110的至少一个实例、以及至少一个通信接口112等中的一个或多个,执行它们,与之对接或以其它方式与之通信。另外,客户端设备104可以包括至少一个扬声器144、至少一个麦克风146和至少一个显示器148,与之对接或以其它方式与之通信。客户端设备104可以包括音频驱动器以给扬声器144和麦克风146提供软件接口。音频驱动器可以执行由数据处理系统102提供的指令,以控制扬声器144生成对应的声学波或声波。音频驱动器可以执行音频文件或其他指令以转换从麦克风146获取的声学波或声波以生成音频数据。例如,音频驱动器可以执行模拟驱动器转换器(ADC),以将声学波或声波转换为音频数据。客户端设备104可以包括图形驱动器,以给显示器148提供软件接口。图形驱动器可以执行由数据处理系统102或代理服务106提供的指令,以控制显示器148在其上生成对应的渲染。
客户端设备104上的数字助理应用108的实例可以包括一个或多个处理器、逻辑阵列或存储器、或由其执行。客户端设备104上的数字助理应用108的实例可以检测关键字并基于该关键字执行动作。客户端设备104上的数字助理应用108可以是在数据处理系统102处执行的数字助理应用108的实例,或者可以执行数字助理应用108的任何功能。客户端设备104上的数字助理应用108的实例可以在将项作为数据发送到数据处理系统102(例如,数据处理系统102上的数字助理应用108的实例)以进行进一步处理之前,过滤掉一个或多个项或修改项。客户端设备104上的数字助理应用108的实例可以将由扬声器144检测到的模拟音频信号转换成数字音频信号,并经由网络114将携带数字音频信号的一个或多个数据分组发送到数据处理系统102。客户端设备104上的数字助理应用108的实例可以响应于检测到执行这种传输的指令来传输携带一些或整个输入音频信号的数据分组。该指令可以包括:例如,触发关键字或其他关键字或批准将包括输入音频信号的数据分组发送到数据处理系统102。
客户端设备104上的数字助理应用108的实例可以对输入音频信号执行预过滤或预处理,以移除音频的某些频率。预过滤可以包括诸如低通滤波器、高通滤波器或带通滤波器之类的滤波器。滤波器可以应用于频域。可以使用数字信号处理技术来应用滤波器。滤波器可以保持与人类语音或人类话语相对应的频率而同时消除在人类话语的典型频率之外的频率。例如,带通滤波器可以移除低于第一阈值(例如70Hz、75Hz、80Hz、85Hz、90Hz、95Hz、100Hz或105Hz)和高于第二阈值(例如200Hz、205Hz、210Hz、225Hz、235Hz、245Hz或255Hz)的频率。应用带通滤波器可以减少下游处理中的计算资源利用。客户端设备104上的数字助理应用108的实例可以在将输入音频信号发送给数据处理系统102之前应用带通滤波器,从而降低网络带宽利用。然而,基于客户端设备104可用的计算资源和可用的网络带宽,将输入音频信号提供给数据处理系统102以允许数据处理系统102执行过滤可能更有效。客户端设备104上的数字助理应用108的实例可以应用附加的预处理或预过滤技术,诸如降噪技术,以减少可能干扰自然语言处理器的环境噪声水平。降噪技术可以提高自然语言处理器的准确性和速度,从而提高数据处理系统102的性能,并管理经由显示器提供的图形用户界面的渲染。
客户端设备104可以由终端用户操作,该终端用户将语音查询作为音频输入(经由麦克风146或扬声器144)输入到客户端设备104中,并从数据处理系统102或代理服务106接收音频(或其他)输出以呈现、显示或渲染给客户端设备104的终端用户。数字组件可以包括计算机生成的语音,该语音可以从数据处理系统提供给客户端设备104。客户端设备104可以经由扬声器144将计算机生成的语音渲染给终端用户。计算机生成的语音可以包括来自真人的录音或计算机生成的语言。客户端设备104可以经由通信耦合到客户端设备104的显示器148提供视觉输出。
客户端设备104可以具有或执行为至少一个前台进程150(在本文中也称为前台服务)。前台进程150可以对应于渲染在显示器148上并且在客户端设备104上执行的应用(例如,数字助理应用108或代理应用110)中的至少一个。例如,前台进程150可以对应于具有占据了显示器148的大部分的图形用户界面的应用。在客户端设备104上作为前台进程150运行的应用可以具有在客户端设备104的显示器148上渲染的图形用户界面。前台进程150中的应用的图形用户界面可以占据客户端设备104的显示器148的至少一部分(例如,显示器148的至少三分之一)。在客户端设备104上作为前台进程150运行的应用可以等待(例如,经由与客户端设备104通信耦合的I/O设备)与图形用户界面的用户交互来执行一个或多个例程。前台进程150中的应用可以处理用户交互以执行应用的一个或多个例程。在用户交互的处理中,前台进程150中的应用可以生成输出,并且可以在前台进程150中的应用的图形用户界面上渲染结果输出。
客户端设备104可以具有或执行至少一个非前台进程152(在本文中也称为后台进程、后台服务、非前台进程或非前台服务)。非前台进程152可以对应于未渲染在显示器148上并且在客户端设备104上执行的至少一个应用(例如,数字助理应用108或另一代理应用110)。在客户端设备104上作为非前台进程152运行的应用可以不在客户端设备104的显示器148上对该应用的图形用户界面进行任何渲染。例如,非前台进程152可以对应于被最小化并且没有在显示器148中渲染任何图形用户界面组件的应用。在客户端设备104上作为非前台进程152运行的应用可以执行一个或多个例程,而无需接收与该应用的任何用户交互。例如,作为非前台进程152运行的应用可以处理在客户端设备104的麦克风146上检测到的音频,而无需在显示器148上渲染任何图形用户界面。在用户交互的处理中,前台进程150中的应用可以生成输出,而无需渲染结果输出作为在显示器148上渲染的图形用户的一部分。
客户端设备104可以(例如,使用在客户端设备104上执行的操作系统)管理前台进程150和非前台进程152中的应用。客户端设备104可以在前台进程150和非前台进程152之间切换应用。在前台进程150和非前台进程152之间切换应用可以响应于至少一个应用的调用。调用的应用可以在非前台进程152中运行,也可以都不在前台进程150和非前台进程152中运行。调用可以由在客户端设备104上执行的操作系统、由另一个应用(例如,数字助理应用108或代理应用110)、或通过用户交互事件进行。响应于该调用,客户端设备104可以将在前台进程150中运行的应用设置为非前台进程152。此外,客户端设备104可以将在非前台进程152中运行的应用设置为前台进程150。当调用的应用未作为非前台进程152运行时,客户端设备104还可以将应用实例化到前台进程150。例如,web浏览器可以在客户端设备104上作为前台进程150执行,而在显示器148上渲染图形用户界面。时钟应用可以作为非前台进程152在客户端设备104上运行以追踪时间,而无需在显示器148上渲染任何图形用户界面。在调用时钟应用的警报功能时,客户端设备104可以将web浏览器设置为非前台进程152,从而移除对web浏览器的图形用户界面的渲染。结合起来说,客户端设备104可以将时钟应用设置为前台进程150。
数据处理系统102和代理服务106分别可以包括具有至少一个处理器的至少一个服务器。例如,数据处理系统102和代理服务106分别可以包括位于至少一个数据中心或服务器场中的多个服务器。数据处理系统102可以包括至少一个计算资源或服务器。数据处理系统102可以包括至少一个通信接口112,与之对接或以其它方式与之通信。数据处理系统102可以包括数据处理系统102上的数字助理应用108的至少一个实例,与之对接或以其它方式与之通信。数据处理系统102上的数字助理应用108的实例可以包括至少一个NLP组件116、至少一个音频信号生成器组件118、至少一个动作处理机组件120、至少一个响应选择器组件122、至少一个代理注册表组件124和至少一个代理界面组件126等,与之对接或以其它方式与之通信。数据处理系统102可以包括至少一个数据存储库128,与之对接或以其它方式与之通信。至少一个数据存储库128可以在一个或多个数据结构或数据库中包括或存储正则表达式130、数据参数132、策略134、响应数据136、模板138和动作清单140。数据存储库128可以包括一个或多个本地或分布式数据库,并且可以包括数据库管理。
数据处理系统102的数字助理应用108的实例可以执行或运行代理注册表组件124的实例,以在数据存储库128上维持动作清单140的集合。代理注册表组件124可以在数据存储库128上维持并存储用于一个或多个代理应用110的动作清单140的集合。动作清单140的子集可以由数据处理系统102或数字助理应用108的管理员针对与代理应用110相对应的应用类型来定义。例如,数字助理应用108的管理员可以针对采购订单应用配置或定义内置的动作清单140的集合。动作清单140的另一子集可以由代理服务106中的处理用于对应的代理应用110的资源的一个代理服务提供。动作清单140中的至少一个可以是预设的动作清单140,该预设的动作清单140用于响应于确定请求与代理应用110的任何其他动作清单140不匹配而执行动作。例如,代理服务106可以向数据处理系统102提供一组定制的动作清单140以存储到数据存储库128上。代理注册表组件124可以接收由代理服务106提供的动作清单140的子集。接收到之后,代理注册表组件124可以将接收到的动作清单140存储到数据存储库128上。数据存储库128上存在针对代理应用110的动作的动作清单140可以指示代理应用110能够执行与动作清单140对应的动作。
代理注册表组件124可以在数据存储库128上维持并存储用于一个或多个代理应用110的一组用户界面组件142。每个用户界面组件142可以与动作清单140中的至少一个相关联。用户界面组件142的子集可以由数据处理系统102或数字助理应用108的管理员定义。例如,数字助理应用108的管理员可以配置或定义内置的用户界面组件142的集合。用户界面组件142的另一个子集可以由代理服务106中的处理用于对应的代理应用110的资源的一个代理服务来提供。代理服务106可以存储和维持与该子集对应的用户界面组件142。例如,代理服务106可以向数据处理系统102提供一组定制的用户界面组件142,以存储到数据存储库128上。代理注册表组件124可以接收由代理服务106提供的用户界面组件142的子集。接收到之后,代理注册表组件124可以将接收到的用户界面组件142存储到数据存储库128上。代理服务106对用户界面组件142的维持可以与将用户界面组件142维持在数据存储库128上分开。
每个用户界面组件142可以具有一个或多个界面元素。每个界面元素可以对应于用户界面组件142的子组件。至少一个界面元素可以对应于要从由客户端设备104的麦克风146检测到的输入音频信号中识别出的请求。至少一个界面元素可以对应于指示由与用户界面组件142相关联的代理应用110生成的输出的响应。此外,每个用户界面组件可以具有一个或多个属性。这些属性可以包括元素类型(例如,命令按钮、滚动条、文本框和图像)、大小、在用户界面组件142内的位置、透明度和形状等。例如,用户界面组件142可以具有通常沿着底部放置的按钮、按钮上方的文本框、以及通常在中间的图像的插槽等。用户界面组件142本身可以具有一个或多个属性。用户界面组件142的属性可以包括大小、在显示器148内的位置、透明度和形状等。
每个动作清单140可具有用于代理应用110之一的至少一个动作的至少一个地址模板。该地址模板可以用于代理应用110的单个动作或由代理应用110携带的多个动作。地址模板还可以用于访问或检索在执行动作时要生成的用户界面组件142。用于该动作的地址模板可以包括第一部分和第二部分。地址模板可以是例如将根据其生成URI的统一资源标识符(URI)模板。地址模板的第一部分可以对应于代理应用110中的一个或为该代理应用110提供资源的代理服务106。例如,地址模板的第一部分可以在引用代理应用110的自定义深层链接URI中包括方案。地址模板的第一部分还可以包括引用代理服务106的主机名。
地址模板的第二部分可以对应于待由代理应用110执行的动作。地址模板的第二部分还可以包括用于执行动作的一个或多个输入变量(本文也称为字段的输入自变量)。例如,地址模板的第二部分可以在URI中包括与要采取的动作相对应的路径名。第二部分还可以在URI中的路径名之后包括一个或多个查询字符串。每个查询字符串可以对应于用于执行动作的输入变量之一。输入变量的子集可以包括可选输入变量或辅助输入变量。动作可以由代理应用110执行,而在地址中没有辅助输入变量。
动作清单140可以包括用于地址模板的第二部分的映射(有时在本文中称为参数映射)。映射可以指定或定义第二部分的至少一个输入变量与要从解析输入音频信号中识别出的一个或多个词语之间的对应关系。从解析输入音频信号的一个或多个词语可以对应于定义待由代理应用110执行的动作的输入变量。映射可以定义将词语插入到地址模板的输入变量中。例如,用于咖啡购买订单动作的映射可以指定将从音频信号解析出的咖啡名称插入到地址模板的咖啡输入变量中。动作清单140可以为每个输入变量指定或包括一组允许值(有时称为实体清单)。这组允许值可以是动作清单140的映射的一部分。例如,针对咖啡名称的输入变量,咖啡购买订单的允许值可以包括“latte(拿铁)”、“cafe latte(咖啡拿铁)”和“latte cafe”等。动作清单140还可以包括将地址模板的对应输入变量指示为可选或辅助的标记。标记可以是用于地址模板的第二部分的映射的一部分。
除了地址模板之外,由代理注册表组件124维持的每个动作清单140可以包括与针对动作清单140的动作有关的信息。动作清单140可以包括界面模式指示符。指示符可以指定在执行动作时是否将显示代理应用110的用户界面组件142。用户界面组件142可以是要在客户端设备104的显示器148中渲染的视觉元素。用户界面组件142的大小可以小于显示器148的大小。例如,用户界面组件142可以包括盒大小的视觉元素以占据显示器148的12.5%至25%。用户界面组件142可以与维持在数据存储库128上的动作清单140中的至少一个相关联。
用户界面组件142可以与动作清单140相关联。动作清单140可以包括引用用户界面组件142的地址。引用用户界面组件142的地址可以与用于执行动作的地址模板不同或分离。引用用户界面组件142的地址可以具有与针对相同动作清单140的地址模板相同的方案或主机名。例如,地址可以包括管理用于代理应用110的资源的代理服务106的主机名。引用用户界面组件142的地址可以具有与相同动作清单140的地址模板不同的主机名。例如,主机名可以引用数据处理系统102的数据存储库128。动作清单140还可以包括与用户界面组件142相对应的用户界面标识符。该标识符可用于索引和引用数据存储库128上维持的用户界面组件142。此外,动作清单140的地址模板可用于引用用户界面组件142以及将由代理应用110执行的动作。
动作清单140还可以包括与执行动作的代理应用110之一相对应的至少一个代理标识符。代理标识符可以包括引用代理应用110的一组字母数字字符。代理标识符可以用于根据从输入音频信号中解析出的词语来识别与动作清单140相关联的代理应用110。动作清单140可以包括与要由代理应用110执行的动作相对应的至少一个请求标识符。该请求标识符(有时在本文中称为“意图标识符”或“意图名称”)可以包括引用要执行的动作的一组字母数字字符。地址模板可以由一个或多个请求标识符唯一标识。请求标识符可以用于根据从输入音频信号中解析出的词语来识别动作清单140。
可以使用诸如可扩展标记语言(XML)文件等标记语言来实现或指定每个动作清单140。例如,动作清单140可以是以下形式的XML文件:
在上面的示例中,动作清单140可以用于由个人健身应用执行的订单骑行。条目“actions.intent.CHECK_STEPS”可以对应于动作清单140的请求标识符。条目“actions.fulfillment.SLICE”可以指定与动作清单140相关联的用户界面组件142的显示。条目“https://ex_personalmetrics.example.com/checksteps{?username}”可以对应于地址模板,其中“https://ex_personalmetrics.example.com/对应于第一部分,“checksteps{?username}”对应于第二部分。以“parameter-mapping”开始的条目可以对应于映射。最后,条目“https://ex_personal metrics.example.com/checksteps”可以对应于用户界面组件142的单独地址。
代理注册表组件124可以为每个代理应用110构造、创建或生成动作清单140的集合。代理应用110的代理服务104可以经由网络114向代理注册表组件124提供与代理应用110相关联的配置文件。配置文件可以是例如由与代理应用110相关联的应用开发者向代理注册表组件124提交的代理应用110的应用二进制接口(ABI)。代理应用110的代理服务104可以提供与代理应用110相关联的元数据。元数据可以包括代理标识符和应用类型给代理注册表组件124,等等。应用类型可以指示代理应用110的使用。代理应用110的代理服务104可以为能够由代理应用110执行的一个或多个动作提供界面模式指示符。代理注册表组件124可以接收来自代理服务106的信息,用于生成代理应用110的动作清单140的集合。
代理注册表组件124可以读取、摄取和解析用于代理应用110的配置文件以识别一个或多个动作。对于每个识别出的功能,代理注册表组件124可以为该动作生成动作清单140。动作可以是由数据处理系统102或数字助理应用108的管理员针对代理应用110的应用类型定义的动作清单140的集合中的动作之一。代理注册表组件1240为由代理应用110执行的动作生成地址模板。地址模板的第一部分(例如,主机名或方案)可以对应于代理应用110。地址模板的第二部分可以针对动作预定义(例如,使用预设路径名或查询字符串)。代理注册表组件124还可针对识别出的功能生成动作清单140的映射。代理注册表组件124可以将与所识别的动作相对应的请求标识符包括或添加到动作清单140中。映射可以包括地址模板的输入变量的一组允许值。代理注册表组件124可以将与代理应用110相对应的代理标识符包括或添加到动作清单140中。利用动作清单140的构造,代理注册表组件124可以将动作清单140存储到数据储存库128上。
数据处理系统102可以包括至少一个通信接口112。通信接口112可以被配置、构造或操作为使用例如数据分组来接收和发送信息。通信接口112可以使用诸如网络协议等一种或多种协议来接收和发送信息。通信接口112可以包括硬件接口、软件接口、有线接口或无线接口。通信接口112可以是使系统100的组件能够彼此通信的数据接口或网络接口。数据处理系统102的通信接口112可以经由网络114向客户端设备104或代理服务106提供或发送包括动作数据结构、音频信号或其他数据的一个或多个数据分组。例如,数据处理系统102可以将来自数据存储库128或音频信号生成器组件118的输出信号提供给客户端设备104。
数据处理系统102还可以经由数据分组传输指示客户端设备104执行动作数据结构中指示的功能。可以获取输出信号,生成输出信号,将输出信号转换为一个或多个数据分组(或其他通信协议),或将输出信号作为一个或多个数据分组(或其他通信协议)从数据处理系统102(或其他计算设备)发送到客户端设备104。通信接口112可以促进将数据从一种格式转换或格式化为另一种格式。例如,通信接口112可以包括应用编程接口(“API”),该应用编程接口包括用于在诸如软件组件等各种组件之间进行通信的定义。可以将与数据处理系统102相关联的应用、脚本、程序或其他组件安装在客户端设备104处。应用可以使客户端设备104能够将输入音频信号(和其他数据)传送到数据处理系统102的通信接口112。
数据处理系统102可以包括安装在客户端设备104上的应用、脚本或程序,诸如客户端设备104上的数字助理应用108的实例,以将输入音频信号传送到数据处理系统102的通信接口112,并驱动客户端计算设备的组件渲染输出音频信号或视觉输出。数据处理系统102可以接收数据分组、数字文件、或包括或识别输入音频信号(或多个输入音频信号)的其他信号。客户端设备104可以经由扬声器144检测音频信号,并且经由模数转换器将模拟音频信号转换为数字文件。例如,音频驱动器可以包括模数转换器组件。预处理器组件可以将音频信号转换为可以经由数据分组通过网络114传输的数字文件。
数据处理系统102或客户端设备104的数字助理应用108的实例可以执行或运行NLP组件116以接收或获得包括由客户端设备104的麦克风146检测到的输入音频信号的数据分组。数据分组可以提供数字文件。NLP组件116可以接收或获得包括音频信号的数字文件或数据分组并解析音频信号。例如,NLP组件116可以提供人与计算机之间的交互。NLP组件116可以被配置有用于理解自然语言并使得数据处理系统102从人类或自然语言输入中导出含义的技术。NLP组件116可以包括或被配置有基于机器学习(诸如统计机器学习)的技术。NLP组件116可以利用决策树、统计模型或概率模型来解析输入音频信号。
例如,NLP组件116可以执行功能,诸如命名实体识别(例如,给定文本流,确定文本中的哪些项映射到诸如人或地方等名称、以及每个此类名称的类型,诸如人、位置(例如,“家”)或组织)、自然语言生成(例如,将计算机数据库中的信息或语义意图转换为可理解的人类语言)、自然语言理解(例如,将文本转换为更正式的表示,诸如计算机模块可以操纵的一阶逻辑结构)、机器翻译(例如,将文本从一种人类语言自动翻译为另一种语言)、词素分割(例如,将词语分离为单个词素并识别出词素的类别,考虑到该语言的词语的词素或结构的复杂性,这可能会存在挑战性)、问题回答(例如,确定对人类语言问题的回答,其可以是特定的或开放式的)、语义处理(例如,在识别出词语并对其含义进行编码以使所识别的词语与具有相似含义的其他词语相关之后可以进行的处理)。
NLP组件116(和数字助理应用108,作为整体)可以作为非前台进程152中的应用之一执行。当在麦克风146上检测到输入音频信号时,客户端设备104可以继续数字助理应用108作为非前台进程152中的应用之一。客户端设备104可以具有一个或多个作为非前台进程152运行的其他应用(例如,代理应用110)。客户端设备104可以具有在前台进程150中运行的至少一个应用(例如,另一代理应用110)。客户端设备104上的数字助理应用108的NLP组件116的实例可以发起对输入音频信号的处理,而无需切换前台进程150或非前台进程152。可以维持作为前台进程150和非前台进程152运行的应用。例如,客户端设备104上的NLP组件116可以接收输入音频信号并将自然语言处理功能应用于输入音频信号,而无需最小化作为前台进程150运行的应用的图形用户界面。当接收到输入音频信号时,替代地,NLP组件116(和数字助理应用108,作为整体)可以作为前台进程150中的应用之一执行。在接收到输入音频信号之后,数字助理应用108可以继续作为客户端设备104的前台进程150中的应用之一执行。
NLP组件116可以通过将输入信号与存储的代表性音频波形集(例如,在数据存储库128中)进行比较并选择最接近的匹配,来解析音频输入信号并将音频输入信号转换为识别的字符串。NLP组件116还可以将输入音频信号分割或划分为具有持续时间(例如15秒至2分钟)的一个或多个音频片段,以处理每个片段。音频波形集合可以存储在数据存储库128或数据处理系统102可访问的其他数据库中。代表性波形是在大量用户之间生成并且可以然后利用来自用户的话语采样来增强。在音频信号被转化成识别的文本之后,NLP组件116将文本与例如经由在用户之间训练或者通过手动指定而与数据处理系统102可以派发的动作相关联的词语进行匹配。NLP组件116可以确定从麦克风146获取的输入音频信号不包含任何可识别的字符串。在确定输入音频信号不包含任何可识别的字符串时,NLP组件116可以确定输入音频信号包含无声(例如,最大幅度小于0dB)。另外,NLP组件116可以确定输入音频信号的信噪比(SNR)。NLP组件116可以将输入音频信号的SNR与阈值SNR(例如,-20dB)进行比较。响应于确定输入音频信号的SNR大于阈值SNR,NLP组件116可以确定输入音频信号不包含任何可识别的字符串。
除了或代替输入音频信号之外,数据处理系统102可以接收图像或视频输入信号。NLP组件116可以将图像或视频输入转换为文本或数字文件。NLP组件116可以处理、分析或解释图像或视频输入以执行动作,生成请求,或者选择或识别数据结构。数据处理系统102可以使用例如图像解释技术、计算机视觉、机器学习引擎或其他技术来处理图像或视频输入信号,以识别或解释图像或视频,以将图像或视频转换为数字文件。可以将一种或多种图像解释技术、计算机视觉技术或机器学习技术统称为成像技术。除了或代替音频处理技术之外,数据处理系统102(例如,NLP组件116)可以利用成像技术来配置。
通过解析输入音频信号,NLP组件116可以确定或识别至少一个请求。输入音频信号可以包括:例如,自然语言的查询、问题、命令、指令或其他陈述。请求可以对应于至少一个触发关键字,该触发关键字被从输入音频信号转换而来的识别的字符串中识别出。请求可以指示要采取的行动。例如,NLP组件116可以解析输入音频信号,以识别晚上离开家参加晚餐和看电影的至少一个请求。触发关键字可以包括指示要采取的动作的至少一个词语、短语、词根或部分字、或派生词。例如,来自输入音频信号的触发关键字“go”或“to go to”可以指示需要运输的请求。在本示例中,输入音频信号(或识别的请求)没有直接表达传输意图,但是触发关键字指示传输是请求所指示的至少一个其他动作的辅助动作。
为了识别请求,NLP组件116可以将语义处理技术应用于输入音频信号以识别与请求对应的触发关键字。NLP组件116可以将语义处理技术应用于输入音频信号,以识别包括一个或多个触发关键字(诸如第一触发关键字和第二触发关键字)的触发短语。例如,输入音频信号可以包括句子“Find the nearest café(查找最近的咖啡馆)”。NLP组件116可以确定输入音频信号包括触发关键字“find”。NLP组件116可以确定请求是要搜索客户端设备104附近的位置。
除了请求之外,NLP组件116可以识别定义请求的至少一个参数。该参数可以定义请求,用作对与请求相对应的要采取的动作的补充或限制。参数可以进一步指定要采取的动作。参数可以包括从输入音频信号转换而来的识别的字符串的子集(不包括触发关键字)。NLP组件116可以将语义处理技术应用于输入音频信号以识别与所标识的触发关键字相关的一个或多个描述符词语。从示例“Find the nearest café”中,NLP组件116可能已经将项“Find”识别为触发关键字。结合起来,NLP组件116可以将“nearest”识别为第一参数,将“café”识别为限定请求“Find”的第二参数。
此外,NLP组件116可以根据从输入音频信号中识别出的字符串识别应用标识符。该应用标识符可以对应于代理应用110之一。为了识别该应用标识符,NLP组件116可以对从输入音频信号中识别出的字符串执行命名实体识别算法。在使用命名实体识别算法时,NLP组件116可以维持代理应用110的代理标识符的列表。该列表可以包括安装在接收包括请求的输入音频信号的客户端设备104上的代理应用110的代理标识符。通过应用命名实体识别算法,NLP组件116可以确定输入音频信号包括与代理应用110相对应的应用标识符。例如,NLP组件116可以确定输入音频信号“Order car with ride sharing service XYZ(用乘车共享服务XYZ预订汽车)”包括显式代理应用110“ride sharing service XYZ”。相反,通过应用命名实体识别算法,NLP组件116可以确定输入音频不具有与任何代理应用110对应的任何应用标识符。
基于请求,NLP组件116可以确定该请求是否对应于数字助理应用108的功能或代理应用110的功能。为了确定这一点,NLP组件116可以访问对数字助理应用108的功能的请求列表。对数字助理应用108的功能的请求列表可以维持在数据存储库128中。请求列表可以包括触发器关键字的字符串集以及与被预定为与数字助理应用108的功能相关联的请求相对应的请求。例如,列表可以包括“take”、“show”、“search for”和“find”等。利用对该请求的识别,NLP组件116可以将该请求与对数字助理应用108的功能的请求列表进行比较。
NLP组件116还可以使用在数据存储库128上维持的正则表达式130来确定该请求是否对应于数字助理应用108的功能。正则表达式130可以定义进行匹配的模式以确定从输入音频信号中识别出的关键字是否引用了数字助理应用108的至少一个功能。正则表达式130还可以指定使用哪些关键字来执行输入音频信号中指示的命令。例如,正则表达式130可以采用{[request],[auxiliary arguments]}的形式。对于被确定为引用了数字助理应用108的功能的输入音频信号的关键字,正则表达式130可以指定一个或多个关键字包括对数字助理应用108的请求和辅助自变量。正则表达式130可以指定请求的顺序以及从输入音频信号中识别出的一个或多个关键字中的指称关键字。
基于比较,NLP组件116可以确定从输入音频信号中识别出的请求与对数字助理应用108的功能的请求列表中的一个请求匹配。响应于该确定,NLP组件116可以确定该请求对应于数字助理应用108的功能之一。例如,NLP组件116可以从输入音频信号中解析词语“What is the weather?(天气怎么样?)”,并且可以识别输入音频信号包括对天气的请求。对数字助理应用108的功能的请求列表可以指定对天气的请求是数字助理应用108的功能之一。在此示例中,NLP组件116可以确定两个请求之间的匹配,并且可以确定该请求引用了数字助理应用108的功能之一。
响应于确定该请求对应于数字助理应用108的功能,数字助理应用108可以执行并满足从解析输入音频信号中识别出的请求。另外,数字助理应用108可以根据定义请求的参数来执行请求。例如,该请求可以是搜索词语(例如,“abnegation(放弃)”)的定义。数字助理应用108可以执行互联网搜索以检索该词语的定义。在满足请求时,数字助理应用108可以调用响应选择器组件122。响应选择器组件122可以使用数据存储库128上维持的策略134或响应数据136选择或识别响应短语。策略134可以特定于请求,并且可以指定用于该请求的响应数据136。响应选择器组件122可以在满足请求时使用响应的请求类型来搜索策略134以生成输出。一旦识别出策略134,响应选择器组件122就可以选择响应短语。响应短语可以包括一组字符串,诸如词语或短语。数字助理应用108可以在客户端设备104的显示器148上显示响应短语。例如,数字助理应用108可以在客户端设备104的显示器148上的数字助理应用108的图形用户界面上显示包括响应短语的内容项。
利用对响应短语的识别,数字助理应用108可以调用和音频信号生成器组件118。在数据处理系统102或客户端设备104上运行的数字助理应用108的实例可以执行音频信号生成器组件118。使用选择的响应短语,音频信号生成器组件118可以生成输出音频信号。基于响应短语中包括的一个或多个词语,音频信号生成器组件118可以生成输出音频信号。音频信号生成器组件118可以在客户端设备104的扬声器144上播放输出的音频信号。
相反,通过比较,NLP组件116可以确定从输入音频信号中解析出的请求与对数字助理应用108的功能的请求列表中的任何一个请求都不匹配。响应于该确定,NLP组件116可以确定请求是否对应于代理应用110的功能之一。为了确定这一点,NLP组件116可以访问对代理应用110的功能的请求列表。对功能的请求列表可以是针对安装在客户端设备104上的代理应用110。对代理应用110的功能的请求列表可以维持在数据存储库128上。请求列表可以包括触发器关键字的字符串集或与被预定为与代理应用110的功能相关联的请求相对应的请求。NLP组件116可以将请求与对代理应用110的功能的请求列表进行比较。
通过比较,NLP组件116可以确定从输入音频信号中识别出的请求与对代理应用110的功能的请求列表中的一个请求相匹配。响应于该确定,NLP组件116可以确定该请求对应于代理应用110的功能之一。例如,NLP组件116可以从输入音频信号中解析词语“Buy melaundry detergent(帮我买洗涤剂)”,并且可以识别输入音频信号包括购买洗涤剂。对代理应用110的功能的请求列表可以指定对天气的请求是代理应用110的功能之一。在该示例中,NLP组件116可以确定两个请求之间的匹配,并且可以确定该请求引用了代理应用110的功能之一,即用于这种购买的功能。另外,响应于确定输入音频信号包括代理应用110的应用标识符,NLP组件116可以确定该请求不对应于数字助理应用108的功能。
另一方面,NLP组件116可以通过比较确定该请求不对应于任何代理应用110的任何功能。通过对该请求不对应于数字助理应用108或代理应用110的确定,响应选择器组件122可以生成或识别指示该请求不对应于客户端设备014上可用的任何功能的响应短语。例如,响应短语可以包括“Sorry,I don’t understand your request(对不起,我不理解您的请求)”。可以基于该确定从响应数据136中选择响应短语。另外,音频信号生成器组件118可以使用响应短语中的一个或多个词语来生成对应的输出音频信号。音频信号生成器组件118可以在客户端设备104的扬声器144上播放输出的音频信号。
在数据处理系统102或客户端设备104上运行的数字助理应用108的实例可以执行动作处理机组件120以基于该确定来生成动作数据结构。动作处理机组件120可以基于从NLP组件116接收的输入来执行脚本或程序。代理服务106可以提供脚本或程序。代理服务106可以通过API使脚本或程序可用于数据处理系统102。动作处理机组件120可以确定对输入字段的参数或响应,并且可以将数据打包到动作数据结构中。可以通过API将动作数据结构提供给代理应用110。动作处理机组件120可以将动作数据结构发送给代理服务106,以满足从由NLP组件116解析的输入音频信号中识别出的请求。
响应于对请求与代理应用110的功能相对应的确定,动作处理机组件120可以针对与请求相对应的动作从数据存储库128中识别或选择动作清单140。动作处理机组件120可以从数据存储库128上维持的动作清单140的集合中选择至少一个动作清单140。动作处理机组件120可以使用从输入音频信号中识别出的请求来搜索用于动作清单140的动作存储库128。动作处理机组件120还可以使用从输入音频信号中识别出的一个或多个参数来搜索用于动作清单140的数据存储库128。动作处理机组件120可以遍历在数据存储库128上维持的动作清单140的集合。对于每个动作清单140,动作处理机组件120可以识别该动作清单140的请求标识符。
动作处理机组件120可以将从输入音频信号中识别出的请求与动作清单140的请求标识符进行比较。将来自输入音频信号的请求标识符与动作清单140的请求标识符进行比较可以根据语义知识图。动作处理机组件120可以调用NLP组件116,以使用语义知识图来确定请求是否在语义上与请求标识符相关。语义知识图可以包括一组节点和边。每个节点可以对应于一个或多个词语或短语。每个边可以定义由节点上的对应的词语表示的一对词语之间的语义距离。通过语义知识图,NLP组件116可以识别与请求相对应的节点、与请求标识符相对应的节点、以及在该对节点中指示的语义距离。NLP组件116可以将语义距离与阈值距离进行比较。当确定语义距离不满足阈值距离(例如,大于阈值距离)时,NLP组件116可以确定请求与动作清单140的请求标识符不匹配。另一方面,当确定语义距离满足阈值距离(例如,小于或等于阈值距离)时,NLP组件116可以确定请求确实与动作清单140的请求标识符匹配。通过比较,动作处理机组件120可以确定请求与动作清单140的请求标识符不匹配。响应于该确定,动作处理机组件120可以识别在数据存储库128上维持的集合中的下一个动作清单140,并且可以重复该比较。
相反,通过比较,动作处理机组件120可以确定请求与动作清单140的请求标识符匹配。响应于该确定,动作处理机组件120可以为与请求相对应的动作选择动作清单140。因为,如上所述,多个请求可以对应于相同的动作清单140,所以动作处理机组件120可以选择曾经或将要为另一个请求选择的动作清单140。在选择动作清单140之前,动作处理机组件120还可以将从输入音频信号中识别出的一个或多个参数与动作清单140的输入变量进行比较。动作处理机组件120可以从动作清单140的参数映射或地址模板识别输入变量。在将所识别的参数与动作清单140的输入变量进行比较时,动作处理机组件120可以排除动作清单140中指示的辅助参数。动作处理机组件120可以根据每个输入变量的允许值集合,确定所识别的参数与动作清单140的输入变量匹配。响应于该确定,动作处理机组件120可以为与由一个或多个参数定义的请求相对应的动作选择动作清单140。动作处理机组件120还可以停止遍历数据存储库128中的动作清单140的集合。否则,动作处理机组件120可以确定所识别的参数与动作清单140的输入变量不匹配。动作处理机组件120可以为与相同请求相对应的动作识别另一个动作清单140,并且可以重复该比较。在与所有动作清单140进行比较之后,动作处理机组件120可以确定所识别的参数与代理应用110的任何动作清单140中的输入变量都不匹配。响应于该确定,动作处理机组件120可以为代理应用110选择预设动作清单140以响应该请求。
动作处理机组件120还可以使用从输入音频信号中识别出的代理标识符从数据存储库128搜索动作清单140。在使用请求进行搜索之前,动作处理机组件120可以识别具有与代理标识符匹配的应用标识符的动作清单140的子集。代理标识符可以对应于代理应用110之一。识别子集的每个动作清单140可以包括被确定为与从输入音频信号中识别出的代理标识符匹配的应用标识符。为了识别子集,动作处理机组件120可以将代理标识符与每个动作清单140的应用标识符进行比较。当代理标识符被确定为与动作清单140的应用标识符匹配时,动作处理机组件120可以将动作清单140包括到子集中。否则,当代理标识符被确定为与动作清单140的应用标识符不匹配时,动作处理机组件120可以从子集中排除动作清单140。动作处理机组件120可以针对使用该请求的应用标识符遍历所识别的动作清单140的子集,以为与该请求相对应的动作选择动作清单140。
当输入音频信号被确定为不具有代理标识符时,动作处理机组件120可以基于请求、一个或多个参数以及代理使用历史,从在数据存储库128上维持的集合中选择动作清单140。代理使用历史可以指示运行从其接收输入音频信号的数字助理应用108的客户端设备104上的代理应用110的使用统计。代理使用历史还可以指示在客户端设备104上调用的代理应用110的功能。在从在客户端设备104上检测到的输入音频信号中识别出的请求之前,可以将代理使用历史限制为定义的时间窗口。动作处理机组件120可以使用与请求和一个或多个参数匹配的请求标识符来识别动作清单140的子集。该子集可以包括具有与多个代理应用110相对应的不同应用标识符的动作清单140。动作处理机组件120可以使用客户端设备104的代理使用历史来从子集中选择动作清单140。动作处理机组件120可以从代理使用历史识别至少一个代理标识符。动作处理机组件120可以将代理标识符与所识别的子集中的每个动作清单140的应用标识符进行比较。通过比较,动作处理机组件120可以确定动作清单140的应用标识符与来自代理使用历史的代理标识符匹配。响应于该确定,动作处理机组件120可以根据参数为待由代理应用110执行的动作选择动作清单140。相反,通过比较,动作处理机组件120可以确定动作清单140的应用标识符与来自代理使用历史的代理标识符不匹配。响应于该确定,动作处理机组件120可以识别另一个动作清单140,并且可以使用代理标识符重复该比较。
利用对动作清单140的识别,动作处理机组件120可以对照动作清单140的地址模板来验证从输入音频信号中识别出的一个或多个参数。动作处理机组件120的验证可以是检查是否存在动作清单140指定的必要参数来执行与请求相对应的动作。例如,对于乘车共享请求,动作处理机组件120可以检查是否存在与从输入音频信号中解析出的目的地相对应的参数。动作处理机组件120可以在验证参数时将参数映射用于动作清单140的地址模板。动作处理机组件120可以识别在针对动作清单140的映射中定义的参数和输入变量之间的对应关系。动作处理机组件120可以通过地址模板的动作清单140的映射识别未被指定为辅助的输入变量的对应关系的子集。
通过未被指示为辅助的每个输入变量,动作处理机组件120可以确定至少一个参数是否对应于映射所指定的输入变量。可以使用由NLP组件116提供的语义分析算法(例如,语义知识图)来执行对应关系的确定。对于每个输入变量,动作处理机组件120可以调用NLP组件116以确定输入变量是否对应于任何参数,反之亦然。响应于确定所有输入变量对应于至少一个参数,动作处理机组件120可以确定参数被成功验证。动作处理机组件120还可以继续使用动作清单140的地址模板来生成地址以实现与请求相对应的动作。
另一方面,响应于确定至少一个输入变量(未被指示为辅助)不对应于任何参数,动作处理机组件120可以确定参数未成功验证。动作处理机组件120可以停止或终止对请求和参数的进一步处理(例如,使用动作清单140的地址模板生成地址)。动作处理机组件120可以检测或确定在验证从输入音频信号中识别出的一个或多个参数时的错误。数字助理应用108可以(例如,使用视觉内容项或音频)呈现请求无效或不成功的指示。动作处理机组件120可以将该错误的指示提供给代理服务106或与动作清单140相关联的代理应用110的管理员。
在识别出动作清单140之后,动作处理机组件120可以确定客户端设备104是否经过与动作清单140相关联的代理应用110认证。动作处理机组件120可以识别与动作清单140相关联的代理应用110。一旦识别出,动作处理机组件120就可以利用代理应用110来检查客户端设备104的认证状态。可以使用客户端设备104或数字助理应用108的账户标识符来执行认证状态的检查。动作处理机组件120可以将对认证状态的请求发送给管理代理应用110的资源的代理服务106。该请求可以包括客户端设备104或数字助理应用108的账户标识符。代理服务106可以向动作处理机组件120提供指示客户端设备104是否经过代理应用110认证。当该响应指示客户端设备104经过认证时,动作处理机组件120可以确定客户端设备104经过代理应用110认证。动作处理机组件120也可以继续处理请求。另一方面,当响应指示客户端设备104未经过认证时,动作处理机组件120可以确定客户端设备104未经过代理应用110认证。动作处理机组件120可以停止或终止对请求的进一步处理(例如,使用动作清单140的地址模板生成地址)。数字助理应用108还可以呈现利用代理应用110进行认证的指示,以执行与该请求相对应的动作。例如,数字助理应用108可以在客户端设备104的显示器148上渲染用于登录到代理应用110的提示。该提示可以包括用于用户的账户标识符和密码的字段。
另外,动作处理机组件120还可以确定与动作清单140相关联的代理应用110是否安装在客户端设备104上。动作处理机组件120可以识别与动作清单140相关联的代理应用110。一旦识别了,动作处理机组件120可访问客户端设备104,以确定代理应用110是否已安装在客户端设备104上。例如,动作处理机组件120可访问客户端设备104上已安装的应用的列表,以确定是否安装了代理应用110。动作处理机组件120可以对该列表检查应用标识符或代理标识符。响应于确定安装了代理应用110,动作处理机组件120可以继续处理该请求。另一方面,响应于确定未安装代理应用110,动作处理机组件120可以终止对请求的处理(例如,使用动作清单140的地址模板生成地址)。数字助理应用108还可呈现安装代理应用110以执行与该请求相对应的动作的指示。例如,数字助理应用108可以渲染指示在客户端设备104的显示器148上没有安装对应的代理应用110的提示。该提示还可以包括用于安装代理应用110的链接。
由动作处理机组件120选择的动作清单140可以对应于不作为前台进程150或非前台进程152中的应用之一运行的代理应用110。例如,动作清单140可以对应于安装在客户端设备104上但未在客户端设备104上运行的代理应用110。动作处理机组件120选择的动作清单140可以对应于在非前台进程152中运行的代理应用110。例如,另一个应用(例如,另一个代理应用110或数字助理应用108)可以在前台进程150的应用中运行。前台进程150中的应用可以具有渲染在客户端设备104的显示器148的至少一部分上的图形用户界面。相反,在非前台进程152中运行的应用可以不具有渲染在客户端设备104的显示器148上的图形用户界面,并且可以执行例程(例如,动作)。另外,由动作处理机组件120选择的动作清单140可以对应于在前台进程150中运行的代理应用110。例如,对应于动作清单140的代理应用110可以具有当前渲染在客户端设备104的显示器148上的图形用户界面。
动作处理机组件120可以根据动作清单140的地址模板生成地址。动作处理机组件120可以识别从数据存储库128中维持的集合中选择的动作清单140的地址模板。如上所述,动作清单140的地址模板可以包括:引用代理应用110的第一部分;以及引用要执行的动作以及用于执行该动作的一个或多个输入变量的第二部分。例如,地址模板可以是URI模板。第一部分可以包括引用代理应用110的方案或引用代理服务106或代理应用110的主机名。第二部分可以包括引用动作的路径名以及与URI中的一个或多个输入变量对应的一个或多个查询字符串。例如,针对检查所采取的步数的请求,动作清单140的地址模板可以是“https://ex_personalmetrics.example.com/checksteps{?username}”。第一部分可以对应于“https://ex_personalmetrics.example.com/”,而第二部分可以对应于“checksteps{?username}”。
根据地址模板生成的地址可以包括第一子字符串和第二子字符串。生成的地址的第一子字符串可以对应于地址模板的第一部分。生成的地址可以是URI的一部分,并且第一子字符串可以包括引用代理应用110的方案或引用代理服务106或代理应用110的主机名。该方案和主机名可以由动作处理机组件120从地址模板的第一部分中采用。生成的地址的第二子字符串可以对应于第二模板的第二部分。生成的地址也可以是URI的一部分,并且第二子字符串可以包括引用待由代理应用110执行的动作的路径名以及包括从输入音频信号中识别出的参数的查询字符串。例如,根据地址模板生成的地址可以是“https://ex_personalmetrics.example.com/checksteps?username=example_user_id”。地址的第一子字符串可以包括“https://ex_personalmetrics.example.com”,地址的第二子字符串可以包括“checksteps?username=example_user_id”。
在生成地址时,动作处理机组件120可以使用或设置地址模板的第一部分用作地址的第一子字符串,以引用代理服务106或与代理服务106相关联的代理应用110。动作处理机组件120可以使用地址模板的第二部分作为地址的第二子字符串,以对应于动作和用于执行该动作的参数。动作处理机组件120可以用从输入音频信号中识别出的一个或多个参数来填充地址模板的第二部分的输入变量。
动作处理机组件120可以根据针对地址模板定义的动作清单140的参数映射进行填充。如上所讨论的,参数映射可以定义第二部分的输入变量与要从解析输入音频信号中识别出的词语之间的对应关系。动作处理机组件120可以使用参数作为从输入音频信号中识别出的词语,以在填充输入变量时将其插入到地址模板的第二部分中。对地址模板的第二部分的填充可以根据URI模板中的表达式扩展。对于地址模板中指定的每个输入变量,动作处理机组件120可以识别如动作清单140的映射所指定的对应的参数。通过该识别,动作处理机组件120可以用输入变量的名称和所识别的参数来插入、替换或设置查询字符串。例如,在地址模板中,输入变量可以是“{?username}”,并且所识别的参数可以是“example_user_id”。在该示例中,动作处理机组件120可以根据URI模板的表达式扩展用地址的第二子字符串中的“?username=example_user_id”替换。
在填充地址模板的输入变量时,动作处理机组件120可以确定输入变量是否是如动作清单140的地址模板的映射中所指定的辅助输入变量。响应于确定输入变量是辅助输入变量时,动作处理机组件120还可以确定是否存在与辅助输入变量相对应的所识别的参数。当确定没有对应于辅助输入变量的参数时,动作处理机组件120可以从地址中省略或移除辅助输入变量。因此,所生成的地址可能不具有与地址模板中的辅助输入变量相对应的一个或多个参数。否则,当确定存在与辅助输入变量相对应的参数时,动作处理机组件120可以用该参数插入或填充辅助输入变量。相反,响应于确定输入变量不是辅助输入变量,动作处理机组件120可以从所识别的参数中识别出要包括在输入变量中的参数。
通过根据地址模板生成地址,动作处理机组件120可以验证地址。动作处理机组件120对地址的验证可以是检查地址是否格式正确。为了验证,动作处理机组件120可以对照地址的正则表达式130(例如,URI或URL)检查地址。地址的正则表达式130可以包括:例如,用于有效地址的方案、主机名、路径名和由定界符分隔的查询字符串。动作处理机组件120可以将地址与正则表达式130进行比较,以确定该地址是否与正则表达式130所指定的地址的模式匹配。响应于该地址匹配的确定,动作处理机组件120可以确定生成的地址已成功验证。
相反,响应于确定地址不匹配,动作处理机组件120可以确定生成的地址没有被成功验证。基于该确定,动作处理机组件120还可以检测在验证生成的地址时的错误。该错误可以指示该地址格式不正确。此外,动作处理机组件120可以停止或终止对地址的进一步处理(例如,生成动作数据结构)。动作处理机组件120可以将该错误的指示提供给代理服务106或与动作清单140相关联的代理应用110的管理员。
动作处理机组件120可以使用用于执行动作的地址来打包或生成动作数据结构。动作数据结构的生成可以根据应用编程接口(API)。例如,API可以由在客户端设备104上运行的操作系统指定,并且可以由数字助理应用108和代理应用110两者使用。动作数据结构可以经由API在数字助理应用108和代理代理110之间传递。动作数据结构的生成可以根据超文本传输协议(HTTP)。例如,由动作处理机组件120生成的动作数据结构可以是HTTP请求(例如,GET或POST功能)。动作数据结构可以包括至少一个报头和至少一个主体。报头可以包括执行数字助理应用108和代理应用110的客户端设备104的设备模态(例如,智能手机、智能扬声器、平板计算机、笔记本计算机和台式机)。报头可以包括设置到客户端设备104的源地址。报头可以包括设置为目的地地址的生成地址。动作数据结构的主体可以包括与从解析输入音频信号中识别出的请求有关的其他信息。例如,主体可以包括引用数字助理应用108或运行数字助理应用108的客户端设备104的标识符。
数据处理系统102或客户端设备104上的数字助理应用108的实例可以执行代理界面组件126以将动作数据结构提供给代理应用110。通过生成动作数据结构,代理界面组件126可以向代理应用110提供动作数据或将动作数据导引到代理应用110。代理界面组件126可以通过网络114将动作数据结构发送给管理代理应用110的资源的代理服务106(例如,作为HTTP请求)。例如,对应于动作数据结构的HTTP请求可以由代理界面组件126通过网络114发送。代理界面组件126可以使用动作数据结构(例如,经由API)来调用代理应用110。例如,代理界面组件126可以进行功能调用以根据API并由客户端设备104的操作系统来促进调用代理应用110。在调用时,代理界面组件126可以将动作数据结构传递给代理应用110。在调用时,代理界面组件126可以将动作数据结构传递给代理应用110。
数据处理系统102、客户端设备104或代理服务106可以执行代理应用110的实例。由于数据结构的目的地地址可以引用代理应用110或代理服务106,因此代理应用110可以从代理界面组件126接收动作数据结构。例如,动作数据结构可能已经经由网络114发送,并且目的地地址可以包括引用代理应用110或代理服务106的主机名。由于动作数据结构的目的地地址引用了代理应用110或代理服务106,因此动作数据结构可以通过网络114路由到代理应用110或代理服务106。在另一示例中,动作数据结构的目的地地址可以是与引用代理应用110的方案的深层链接。通过调用目的地地址,动作数据结构可以由客户端设备104或网络114导引到该方案所引用的代理应用110。
在传递动作数据结构时,代理应用110可以解析动作数据结构以识别地址。对地址的识别可以来自动作数据结构的目的地地址报头。代理应用110可以解析地址以识别地址的第一子字符串,该第一子字符串引用代理应用110本身或管理代理应用110的资源的代理服务106。代理应用110可以解析地址的第二子字符串。代理应用110可以进一步解析地址的第二子字符串以识别动作以及用于执行动作的一个或多个参数。代理应用110可以解析URI的路径名以识别动作,并且解析一个或多个查询字符串以识别用于执行动作的一个或多个参数。例如,代理应用110可以解析地址https://ex_personalmetrics.example.com/ checksteps?username=example_user_id以识别第二子字符串“checksteps?username=example_user_id”。代理应用110可以进一步将“checksteps”识别为获取所测得的步数的请求并且将“Example_user_id”识别为测量了其步数的用户的姓名。利用该识别,代理应用110可以根据一个或多个参数来履行、进行或执行动作。使用先前的示例,代理应用110可以执行一系列进程和例程,以检索具有账户标识符“example_user_id”的代理应用110的用户所走的步数。代理应用110可以将动作的执行结果提供给代理界面组件126。
代理应用110还可以生成输出以指示动作的执行是成功还是失败以发送给数字助理应用108。在执行代理时,代理应用110可能无法完成动作或在完成之前终止。例如,在处理对步数的请求时,代理服务106可以确定无法检索由对应的用户所走的步数的信息。基于该确定,代理应用110可以创建指示失败的输出。响应于该失败,代理应用110可以生成指示失败的输出。相反,代理应用110可以完成对动作的执行。响应于该完成,代理应用110可以生成指示成功的输出。代理应用110可以将动作执行的输出提供给代理界面组件126。
结合动作数据结构的传递,代理界面组件126可以控制代理应用110是作为非前台进程152还是作为前台进程150运行。前台进程150或非前台进程152的设置或控制可以基于用于生成动作数据结构的动作清单140的界面模式指示符。代理界面组件126对前台进程150和非前台进程152的设置可以通过在客户端设备104上运行的操作系统来促进。如上所讨论的,代理应用110可以作为前台进程150或非前台进程152中的应用之一运行,或者作为都不在前台进程150和非前台进程152中的应用之一运行。通过动作数据结构的传递,代理界面组件126可以控制代理应用110是否为从非前台进程152设置成前台进程150。
此外,代理界面组件126可以识别哪些应用正在前台进程150中运行和作为非前台进程152运行,诸如安装在客户端设备104上的数字助理应用108和代理应用110。例如,代理界面组件126可以访问客户端设备104的操作系统,以识别作为前台进程150运行的应用和在非前台进程152中运行的应用。代理界面组件126可以识别代理应用110(或客户端设备104上的其他应用)是否是前台进程150或非前台进程152中的一个。代理界面组件126可以将代理应用110识别为作为前台进程150中的应用之一运行。代理界面组件126可以将代理应用110识别为作为非前台进程152中的应用之一运行。代理界面组件126可以将代理应用110识别为作为既不在前台进程150中也不在非前台进程152中的应用之一运行。响应于确定代理应用110既没有作为前台进程150运行,也没有作为非前台进程152运行,代理界面组件126可以使客户端设备104发起代理应用110的执行。
代理界面组件126可以从选择的动作清单140中识别界面模式指示符。界面模式指示符可以指定在执行与动作清单140相对应的动作时要在客户端设备104的显示器148上渲染代理应用110的用户界面组件142。当界面模式指示符指定没有用户界面组件142要渲染时,代理界面组件126可以将代理应用110设置为前台进程150。当代理应用110被识别为不在客户端设备104上执行时,代理界面组件126可以在前台进程150中启动代理应用110。当代理应用110被识别为在非前台进程152中运行时,代理界面组件126可以移除最初在前台进程150中的该应用(例如,另一个代理应用110或数字辅助应用108)并设置为非前台进程152。此外,代理处理器组件126可以将代理应用110从非前台进程152设置成前台进程150。当代理应用110被识别为已经在前台进程150中时,代理界面组件126可以将代理应用110维持在前台进程150中。
当界面模式指示符指定要渲染用户界面组件142时,代理界面组件126可以应用代理应用110的至少一个授权策略。该授权策略可以指定代理应用110的输出被限制或被允许与哪些应用一起呈现。例如,一个个人健身应用的授权策略可以指定输出被限制不能与另一个人健身应用一起呈现。授权策略可以包括代理应用110的输出被限制不能与其同时呈现的应用的列表(本文也称为黑名单)。授权策略还可以包括代理应用110的输出被允许与其同时呈现的应用的列表(本文也称为白名单)。每个列表可以包括与所包括的应用相对应的代理标识符(例如,应用文件名)。授权策略可以特定于代理应用110的输出类型。输出类型可以取决于从解析输入音频信号中识别出的请求。例如,当另一个个人健身应用位于前台时,授权策略可以限制对步数的显示,但是可以允许显示账户凭证信息。
是否应用授权策略的确定可以基于代理应用110是在前台进程150中运行还是在非前台进程152中运行。当代理应用110被识别为在前台进程150中时,代理界面组件126可以确定不应用授权策略。代理界面组件126还可以允许代理应用110的用户界面组件142将输出渲染在客户端设备104的显示器148中。当除了代理应用110之外的另一个应用被识别为在前台进程150中运行时,代理界面组件126可以确定应用授权策略。以这种方式,代理应用110可以保留为非前台进程152的一部分,或者不在客户端设备104上执行。在确定是否应用时,代理界面组件126还可以基于从输入音频信号解析的请求来识别授权策略。代理界面组件126可以将所识别的请求与授权策略的输出类型进行比较。在确定匹配时,代理界面组件126可以确定应用针对对应的输出类型指定的授权策略。
根据授权策略,代理界面组件126可以确定代理应用110的输出是否被授权与该应用在前台进程150中的图形用户界面组件一起呈现。代理界面组件126可以识别前台进程150中的应用。代理界面组件126可以识别前台进程150中的应用的代理标识符。代理界面组件126可以将应用与代理应用110的授权策略中指定的应用列表进行比较。在比较时,代理界面组件126可以使用所识别的代理标识符来搜索代理应用110的授权策略的白名单和黑名单。如果前台进程150中的应用与白名单中的应用之一匹配,则代理界面组件126可以确定允许将代理应用110的输出与该应用一起呈现。另一方面,如果前台进程150中的应用与黑名单中的应用之一匹配,则代理界面组件126可以确定限制将输出与应用一起呈现。
当确定允许代理应用110的输出时,代理界面组件126可以识别代理应用110的用户界面组件142。为了识别用户界面组件142,代理界面组件126可以使用根据动作清单140的地址模板生成的地址。例如,根据地址模板生成的地址可以引用由代理应用110执行的动作和在执行该行动时要渲染的用户界面组件142。根据地址模板生成的地址可以引用代理应用110或管理代理应用110的资源的代理服务106。代理界面组件126可以从动作清单140针对用户界面组件142识别单独的地址或标识符。地址可以引用由代理服务106维持的用户界面组件142。地址和标识符可以引用在数据存储库128上维持的用户界面组件142。使用单独的地址或标识符,代理界面组件126可以识别将与代理应用110执行动作一起渲染的用户界面组件142。
在识别之后,代理界面组件126可以访问或检索用户界面组件142。使用根据动作清单140的地址模板生成的地址,代理界面组件126可以检索用户界面组件142。代理界面组件126可以将对用户界面组件142的请求发送到包括地址的代理服务106。由于地址引用代理服务106,可以将请求导引到处理代理应用110的资源的代理服务106。代理服务106继而可以将具有引用的用户界面组件142的响应提供给代理界面组件126。使用动作清单140中包括的地址,代理界面组件126可以检索用户界面组件142。动作清单140中包括的地址可以与使用地址模板生成的地址分开,并且可以引用代理服务106或数据存储库128。代理界面组件126可以发送对包括地址的用户界面组件142的请求。当地址引用代理服务106时,可以将请求导引到处理代理应用110的资源的代理服务106。当地址引用数据存储库128时,可以将请求导引到数据存储库128。代理服务106或数据存储库128继而可以向代理界面组件126提供具有引用的用户界面组件142的响应。使用动作清单140中包括的标识符,代理界面组件126可以从数据存储库128检索用户界面组件142。标识符可以对应于数据存储库128上维持的用户界面组件142的索引。代理界面组件126可以使用标识符搜索数据存储库128,以查找用户界面组件142。一旦被识别出,代理界面组件126就可以从数据存储库128中检索用户界面组件142。
在渲染用户界面组件142之前,代理界面组件126还可以应用前台进程150中的应用的授权策略。授权策略可以指定前台进程150中的代理的图形用户界面组件被限制或允许与哪些应用一起呈现。例如,一个银行应用的授权策略可以指定输出被限制不能与另一银行应用一起呈现。授权策略可以包括前台进程150中的应用的图形用户界面被限制不能与其同时呈现的应用的列表(本文也称为黑名单)。授权策略可以包括前台进程150中的应用的图形用户界面被允许与其同时呈现的应用的列表(本文也称为白名单)。每个列表可以包括与所包括的应用相对应的代理标识符(例如,应用文件名)。
根据授权策略,代理界面组件126可以确定前台进程150中的应用的图形用户界面组件是否被授权与代理应用110的输出一起呈现。代理界面组件126可以识别执行该动作的代理应用110。代理界面组件126可以识别代理应用110的代理标识符。代理界面组件126可以将应用与前台进程150中的应用的授权策略中指定的应用列表进行比较。在比较时,代理界面组件126可以使用所识别的代理标识符来搜索前台进程150中的应用的授权策略的白名单和黑名单。如果代理应用110与白名单中的应用之一匹配,则代理界面组件126可以确定允许与前台150中的应用的图形用户界面同时呈现。另一方面,如果代理应用110与黑名单中的应用之一匹配,则代理界面组件126可以确定限制同时呈现。
通过对用户界面组件142的识别,代理界面组件126可以在客户端设备104的显示器148中渲染代理应用110的用户界面组件142。通过允许同时呈现的确定,可以将代理应用110的用户界面组件142与在前台进程150中运行的应用的图形用户界面同时呈现在显示器148上。代理界面组件126可以将用户界面组件142渲染为叠加在前台进程150中的应用的图形用户界面上的覆盖物。代理界面组件126还可以包括用户界面组件142,作为前台进程150中的应用的图形用户界面的一部分。例如,作为前台进程150运行的应用可以是数字助理应用108,并且可以具有包括与操作客户端设备104上的数字助理应用108的用户的对话的图形用户界面。代理界面组件126可以将用户界面组件142插入数字助理应用108的图形用户界面的对话中。
代理界面组件126可以将信息添加或插入到在客户端设备104的显示器148上渲染的用户界面组件142中。代理界面组件126可以将来自输入音频信号的词语或请求添加、插入或包括到用户界面组件142的对应界面元素中。NLP组件116可以从解析输入音频信号来识别该词语或请求。例如,代理界面组件126可以将带有请求的词语合并到用户界面组件142的文本框上。代理界面组件126可以检索、接收或识别由代理应用110生成的输出。代理界面组件126可以保留用户界面组件142的渲染,并且可以等待来自代理应用110的输出。在接收到来自代理应用110的输出后,代理界面组件126可以将输出添加、插入或包括到用户界面组件142的对应界面元素中。例如,代理界面组件126可以接收指示安装在客户端设备104上的代理应用110的用户所走的步数的输出。代理界面组件126可以将该步数插入到用户界面组件142另一个文本框中。随着输出的接收和插入,代理界面组件126可以在显示器148上渲染用户界面组件142。
当将用户界面组件142与前台进程150中的应用的图形用户界面一起渲染在显示器148上时,代理界面组件126可以监视与用户界面组件142的用户交互事件。交互事件可以包括:例如,悬停、点击、滚动、轻拂、按键和触摸屏幕等。在检测到用户界面组件142上的用户交互事件后,代理界面组件126可以处理用户交互事件以更新用户界面组件142。代理界面组件126可以将检测到的用户交互事件中继到代理应用110。代理应用110可以处理用户交互事件(例如,使用事件处理器),并且可以响应于用户交互事件而生成另一输出。代理应用110可以将输出提供给代理界面组件126。使用从代理应用110接收的输出,代理界面组件126可以更新用户界面组件142。
以这种方式,代理界面组件126可以维持最初在前台进程150中的应用,同时从代理应用110添加用户界面组件142以显示为覆盖物。代理界面组件126既可以具有原来的应用,也可以具有代理应用110,二者都可以作为前台进程150中的应用。代理界面组件126还可以维持来自在客户端设备104的显示器148上渲染的两个应用的视觉组件,从而减少了客户端设备104的用户执行上下文切换。通过同时保留两者,代理界面组件459还可以减少在切换渲染时以及在前台进程150和非前台进程152之间产生的计算资源。
相反,当确定代理应用110的输出受到限制时,代理界面组件126可以将代理应用110设置为前台进程150。当代理应用110被识别为不在客户端设备104上运行时,代理界面组件126可以调用和启动代理应用110(例如,经由客户端设备104的操作系统)。代理界面组件126可以移动最初作为前台进程150运行的应用,并且可以将应用设置为作为非前台进程152运行。在切换前台进程150和非前台进程152时,代理界面组件126可以移除来自在显示器148上渲染的最初在前台进程150中的应用的图形用户界面组件。此外,代理界面组件126可以使用由动作处理机组件120生成的动作数据结构来调用代理应用110。代替渲染用户界面组件142,代理界面组件126可以在客户端设备104的显示器148上渲染代理应用110的图形用户界面。
作为前台进程150运行,代理应用110可以在显示器148中渲染的图形用户界面上显示在动作数据结构的地址中指示的动作的输出。代理应用110可以监视与图形用户界面的用户交互事件。在用户界面组件142上检测到用户交互事件时,代理应用110可以处理用户交互事件(例如,使用事件处理器),并且可以响应于用户交互事件而生成另一输出。代理应用110可以使用所生成的输出来更新在客户端设备104的显示器148中渲染的图形用户界面。
通过控制前台进程150和非前台进程152之间的切换,可以消除用户参与搜索代理应用110,从而提高了与客户端设备104上的应用的HCI。另外,数字助理应用108可以调节并减少由于切换导致的在客户端设备104上的计算资源的消耗。
图2描绘了用于在图1所示的系统100中的应用上渲染视觉组件的示例数据流200的序列图。数据流200可以由以上结合图1描述的系统100或下面结合图5详细描述的系统500来实现或执行。数据流200可以包括在麦克风150、客户端设备104、数据处理系统102、代理服务106(经由网络114)和显示器148之间的分组(例如,HTTP消息)形式的通信。
在客户端设备104上运行的数字助理应用108的本地实例可以从与客户端设备104通信耦合的麦克风146接收音频数据205(例如,输入音频信号)。数字助理应用108可以在非前台进程152中在客户端设备104上执行,没有任何视觉组件渲染在显示器148上。客户端设备104可以具有在前台进程150中的另一应用,图形用户界面渲染在显示器148上。客户端设备104上的数字助理应用108可以对音频数据205执行初始处理(例如,自动语音识别),以从音频数据205中识别一个或多个词语。数字助理应用108可以提供来自音频数据205的一个或多个识别的词语,作为对在数据处理系统102上运行的数字助理应用108的远程实例的输入210。数据处理系统102上的NLP组件116继而可以进一步处理输入210的一个或多个词语以识别请求以及一个或多个参数。该请求可以指示代理应用110根据一个或多个参数要执行的动作。
数据处理系统102上的动作处理机组件120可以使用该请求以及一个或多个参数从数据存储库128中识别动作清单140。与所识别的动作清单140相关联的代理应用110可以不在客户端设备104上执行,或者可以作为非前台进程152的应用之一运行。动作处理机组件120可以根据所识别的动作清单140的地址模板生成地址。地址可以包括引用要执行该动作的代理应用的第一子字符串(例如,方案或主机名)。地址还可以包括与要执行的动作以及要执行动作所根据的一个或多个参数相对应的第二字符串。动作处理机组件120可以将地址打包到动作数据结构中,以作为输入215提供给代理应用110的代理服务106。
在接收到输入215之后,代理应用110的代理服务106可以解析动作数据结构以识别第一子字符串和第二子字符串。在处理输入时,客户端设备104可以维持应用在运行时作为前台进程150和非前台进程152。在代理服务106上执行的代理应用110可以进一步解析第二子字符串,以识别动作以及一个或多个参数。通过该识别,代理应用110可以根据参数执行动作。在执行动作时,代理应用110可以生成输出220,以经由数据处理系统102提供给客户端设备104。代理服务106可以将输出220提供给数据处理系统102。数据处理系统102上的数字助理应用108可以将输出220作为输出225发送给客户端设备104。
结合起来说,代理界面组件126可以确定动作清单140指定在执行动作时将渲染用户界面组件142。响应于该确定,代理界面组件126可以从用户界面组件142的集合中识别用户界面组件235(例如,使用通过使用动作清单140的地址模板生成的地址)。代理界面组件126可以将用户界面组件235提供给客户端设备104。使用用户界面组件235,客户端设备104可以显示渲染数据240以用于客户端设备104的显示器148。渲染数据240可以包括用户界面组件235作为叠加在前台进程150中的应用的图形用户界面上的覆盖物。客户端设备104可以在从麦克风146接收到音频数据205之前将应用维持在前台进程150和非前台进程152中。
图3示出了在图1所示系统100中显示输入消息并且提供用户界面组件的示例客户端设备104的用例图。客户端设备104可以具有作为前台进程150运行的应用和作为非前台进程152运行的数字助理应用108的本地实例。作为前台进程150运行的应用可以具有在客户端设备104的显示器148上渲染的图形用户界面305。如图所示,图形用户界面305可以用于作为前台进程150运行的web浏览器应用。在这种情况下,在客户端设备104上运行的数字助理应用108的NLP组件116可以经由客户端设备104的麦克风146接收输入音频信号。NLP组件116可以应用自动语音识别以从输入音频信号中识别一个或多个词语310。例如,NLP组件116可以从输入音频信号中识别词语310“How many steps have I taken today?(我今天走了几步?)”。
客户端设备104或数据处理系统102上的NLP组件116可以对词语310执行进一步的处理。通过进一步的处理,NLP组件116可以从输入音频信号识别的词语310中识别请求。在所描绘的示例中,NLP组件116可以将该请求识别为对操作客户端设备104或与客户端设备104相关联的用户所走的步数的获取请求。使用所识别的请求,动作处理机组件120可以识别能够执行该请求的代理应用110。动作处理机组件120还可以从数据存储库128中选择动作清单140。动作清单140可以是针对与代理应用110要执行的请求相对应的动作。使用动作清单140,动作处理机组件120可以调用代理应用110以执行与该请求相对应的动作。
结合起来说,代理界面组件126可以识别在执行动作清单140中的动作时将要显示用户界面组件142。动作清单140可以指定是否要显示用户界面组件142,并且可以识别要呈现哪个用户界面组件142。响应于该识别,代理界面组件126可以确定是否允许与前台应用的图形用户界面组件305同时呈现。该确定可以根据代理应用110的授权策略。代理应用110的授权策略可以指定哪些应用被允许与代理应用110的用户界面组件142同时呈现。在所描绘的示例中,代理界面组件126可以确定允许同时呈现。
响应于该确定,代理界面组件126可以从动作清单140中识别用户界面组件142,以执行词语310所指示的动作。在识别之后,代理界面组件126可以渲染用户界面组件142作为叠加在前台进程150的图形用户界面305顶部的覆盖组件315。在所描绘的示例中,渲染为覆盖组件315的用户界面组件142可以包括与动作对应的请求的词语310“how many steps(多少步?)”。另外,用户界面组件142还可以具有来自执行动作的结果输出“You have taken3147steps today(您今天已经走了3147步)”。渲染为覆盖组件315的用户界面组件142还可以包括命令按钮320。在与命令按钮320交互时,代理界面组件125可以关闭覆盖组件315,从而使用户界面组件142从客户端设备104的显示器148上的渲染中消失。
图4示出了在应用上渲染视觉组件的示例方法400的框图。方法400可以由以上结合图1至图3描述的系统100或以下结合图5详细描述的系统500来实现或执行。简言之,NLP组件116可以接收输入音频信号(405)。NLP组件116可以解析输入音频信号(410)。动作处理机组件120可以选择动作清单140(415)。动作处理机组件120可以使用动作清单140来生成地址(420)。动作处理机组件120可以生成动作数据结构(425)。代理界面组件126可以导引动作数据结构(430)。代理界面组件126可以确定用户界面组件142是否被授权与前台应用一起呈现(435)。如果确定为被授权,则代理界面组件126可以呈现用户界面组件142(440)。如果确定为未被授权,则代理界面组件126可以调用与用户界面组件相关联的代理应用110(445)。
更详细地说,NLP组件116可以接收输入音频信号(405)。NLP组件116可以接收一个或多个数据分组,包括在客户端设备104上的传感器(例如,麦克风146)处获取到的输入音频信号。例如,至少部分地由数据处理系统102执行的数字助理应用108的NLP组件116可以接收输入音频信号。输入音频信号可以包括由数字助理应用108促进的对话。该对话可以包括一个或多个输入和输出。对话可以是基于音频的、基于文本的、或音频和文本的组合。输入音频信号可以包括文本输入、或者可以提供对话信息的其他类型的输入。当接收到输入音频信号时,客户端设备104可以使应用作为前台进程150和非前台进程152运行。
NLP组件116可以解析输入音频信号(410)。通过解析输入音频信号,NLP组件116可以使用各种自然语言处理技术来识别请求以及一个或多个参数。该请求可以是数字助理应用108或代理应用110可以满足的意图或请求。参数可以定义该请求。基于该请求,NLP组件116可以确定该请求对应于代理应用110的功能之一。
动作处理机组件120可以选择动作清单140(415)。基于从输入音频信号中识别的请求,动作处理机组件120可以从数据存储库128上维持的集合中选择动作清单140。对于每个动作清单140,动作处理机组件120可以将请求与动作清单140的请求标识符相比较。可以使用语义知识图来执行该比较。通过该比较,动作处理机组件120可以确定该请求与动作清单140的请求标识符匹配。响应于该确定,动作处理机组件120可以从数据存储库128上维持的集合中选择动作清单140。所选择的动作清单可以指示将要呈现不作为前台进程150运行的代理应用110的用户界面组件142。
动作处理机组件120可以使用动作清单140来生成地址(420)。地址的生成可以根据动作清单140的地址模板。该地址模板可以具有第一部分和第二部分。第一部分可以引用代理应用110或用于代理应用110的代理服务106,以执行该动作。第二部分可以引用该动作,并且可以包括该动作的一个或多个输入变量。动作处理机组件120可以在生成地址时从地址模板获取第一部分和第二部分。动作处理机组件120可以将参数插入或填充到地址模板的第二部分的输入变量中。
动作处理机组件120可以生成动作数据结构(425)。动作数据结构可以包括报头和主体。动作处理机组件120可以将根据动作清单140的地址模板生成的地址插入到动作数据结构的报头中。动作处理机组件120可以将地址设置为报头的目的地地址,以将动作数据结构路由到代理应用110或用于代理应用110的代理服务106。
代理界面组件126可以导引动作数据结构(430)。代理界面组件126可以将动作数据结构导引到代理应用110。代理界面组件126可以使用动作数据结构来调用代理应用110,并且可以将动作数据结构传递给代理应用110。代理应用110继而可以解析动作数据结构以从动作数据结构中包括的地址识别动作以及一个或多个参数。代理应用110可以根据参数执行动作。
代理界面组件126可以确定用户界面组件142是否被授权与前台应用一起呈现(435)。用户界面组件142是否被授权的确定可以根据授权策略。授权策略可以指定代理应用110的输出是被允许还是被禁止与作为前台进程150运行的应用的图形用户界面同时呈现。代理界面组件126可以识别在前台进程150中运行的应用。代理界面组件126可以将应用与授权策略的规范进行比较。当授权策略允许同时呈现时,代理界面组件126可以确定用户界面组件142被授权呈现。否则,当授权策略限制同时呈现时,代理界面组件126可以确定用户界面组件142未被授权与作为前台进程150运行的应用一起呈现。
如果确定为被授权,则代理界面组件126可以呈现用户界面组件142(440)。代理界面组件126可以从所选的动作清单140中识别用户界面组件142(例如,使用其中包括的地址)。代理界面组件126可以渲染所识别的用户界面组件142,作为在前台进程150中运行的应用的图形用户界面上的覆盖物。代理界面组件126可以包括对动作的请求和由代理应用110在用户界面组件142中生成的输出。
另一方面,如果确定为未被授权,则代理界面组件126可以调用与用户界面组件142相关联的代理应用110(445)。代理界面组件126可以移除从前台进程150运行的原来的应用,并将该应用设置为非前台进程152,从而移除对该应用的图形用户界面的渲染。代理界面组件126可以将代理应用110设置为前台进程150。代理界面组件126还可以在客户端设备的显示器148上渲染代理应用110的图形用户界面。
图5是示例计算机系统500的框图。计算机系统或计算设备500可以包括或用于实现系统100或其组件(诸如数据处理系统102)。计算系统500包括总线505或用于传送信息的其他通信组件以及耦合到总线505以处理信息的处理器510或处理电路。计算系统500还可以包括耦合到总线以处理信息的一个或多个处理器510或处理电路。计算系统500还包括耦合至总线505用于存储信息和待由处理器510执行的指令的主存储器515,诸如随机存取存储器(RAM)或者其他动态存储设备。主存储器515可以是或可以包括数据存储库128。主存储器515还可以用于存储位置信息、临时变量、或者在处理器510执行指令期间的其他中间信息。计算系统500可以进一步包括只读存储器(ROM)520或者耦合至总线505用于存储用于处理器510的静态信息和指令的其他静态存储设备。存储设备525(诸如,固态设备、磁盘或者光盘)可以耦合至总线505以便持久地存储信息和指令。存储设备525可以包括数据存储库128或者是数据存储库128的一部分。
计算系统500可以经由总线505耦合至显示器535(诸如,液晶显示器、或者有源矩阵显示器)以便向用户显示信息。输入设备530,诸如包括字母数字和其他键的键盘,可以耦合到总线505,用于将信息和命令选择传送给处理器510。输入设备530可以包括触摸屏显示器535。输入设备530还可以包括光标控件,诸如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传送给处理器510,并控制在显示器535上的光标移动。例如,显示器535可以是数据处理系统102、客户端设备104、或图1中的其他组件的一部分。
本文描述的过程、系统和方法可以由计算系统500响应于处理器510执行包含在主存储器515中的指令的布置来实现。这样的指令可以从另一计算机可读介质(诸如存储设备525)读入主存储器515中。执行包含在主存储器515中的指令的布置使计算系统500执行本文所述的说明性过程。还可以采用多处理布置中的一个或多个处理器来执行包含在主存储器515中的指令。与本文所述的系统和方法一起,可以代替或结合软件指令使用硬连线电路。本文描述的系统和方法不限于硬件电路和软件的任何特定组合。
虽然已经在图5中对示例计算系统进行了描述,但是可以通过使用其他类型的数字电子电路系统,或者在计算机软件、固件、或者硬件中(包括本说明书所公开的结构及其结构等效物)、或者在它们中的一个或者多个的组合中实施本主题(包括本说明书中描述的操作)。
在本文讨论的系统采集有关用户的个人信息或者可以利用个人信息的情况下,可以为用户提供如下机会:控制程序或者特征是否采集用户信息(例如,有关用户的社交网络、社交动作、或者活动;用户的偏好;或者用户的位置的信息)或者控制是否或如何从内容服务器或其他数据处理系统接收可能与用户更有关的内容。另外,在存储或者使用特定数据之前,可以按照一种或者多种方式来使特定数据匿名化,从而使得在生成参数时可以去除个人身份信息。例如,可以使用户的身份匿名化,从而使得无法确定用户的个人身份信息,或者可以将用户的可以从中获得位置信息(诸如,城市、邮政编码、或者州县等级)的地理位置一般化,从而使得无法确定用户的特定位置。由此,用户可以对内容服务器采集和/或使用有关用户的信息的方式进行控制。
可以在数字电子电路系统中、或者在计算机软件、固件、或者硬件中(包括本说明书所公开的结构及其结构等效物)、或者它们中的一个或者多个的组合中实施本说明书中描述的主题和操作。可以将本说明书中描述的主题实施为一个或者多个计算机程序,即,编码在一个或者多个计算机存储介质上用于由数据处理设备执行或者用于控制数据处理设备的操作的计算机程序指令的一个或者多个电路。可替代地或者另外,程序指令可以编码在人工生成的传播信号上,例如,机器生成的电气、光学、或者电磁信号,生成该信号是为了对信息进行编码以便传输至合适的接收器设备供数据处理设备执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或者串行存取存储器阵列或者设备、或者它们中的一个或者多个的组合,或者包括在其中。当计算机存储介质不是传播信号时,计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或者目的地。计算机还可以是一个或者多个单独的部件或者介质(例如,多个CD、磁盘、或者其它存储设备),或者包括在其中。可以将本说明书中描述的操作实施为由数据处理设备对存储在一个或者多个计算机可读存储设备或者从其它源接收到的数据执行的操作。
术语“数据处理系统”、“计算设备”、“组件”或“数据处理设备”囊括了用于处理数据的所有种类的设备、设备、和机器,包括:例如,可编程处理器、计算机、片上系统、或者前述中的多种或者组合。该设备可以包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除了硬件之外,该设备还可以包括为探讨中的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时间环境、虚拟机、或者它们中的一个或者多个的组合的代码。该设备和执行环境可以实现各种不同的计算模型基础设施,诸如,网络服务、分布式计算和网格计算基础设施。系统100的组件可以包括或共享一个或多个数据处理设备、系统、计算设备或处理器。
可以以任何形式的程序语言来写入计算机程序(也称为程序、软件、软件应用、应用程序、脚本、或者代码),包括编译的或者解译的语言、宣告式语言或者程序式语言,并且可以以任何形式来部署计算机程序,包括部署为独立的程序或者部署为模块、组件、子例程、对象、或者适合在计算环境中使用的其他单元。计算机程序可以与文件系统中的文件对应。可以将计算机程序存储在保持其它程序或者数据(例如,存储在标记语言文档中的一个或者多个脚本)的文件的一部分中,或者存储在专用于所探讨中的程序的单个文件中,或者存储在多个协作文件(例如,存储一个或者多个模块、子程序、或者部分代码的文件)中。可以将计算机程序部署为在一个计算机上执行或者在位于一个站点处或者分布在多个站点中并且通过通信网络互相连接的多个计算机上执行。
可以通过一个或多个可编程处理器来进行本说明书中描述的过程和逻辑流程,该一个或多个可编程处理器执行一个或多个计算机程序(例如,数据处理系统102的组件)以通过操作输入数据并且生成输出来进行动作。还可以由专用逻辑电路(例如,FPGA(现场编程门阵列)或者ASIC(专用集成电路))来执行过程和逻辑流,并且还可以将设备实施为专用逻辑电路(例如,FPGA(现场编程门阵列)或者ASIC(专用集成电路))。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括:例如,半导体存储器设备(例如,EPROM、EEPROM、和闪速存储器设备)、磁盘(例如,内部硬盘或者可移动盘)、磁光盘、CD-ROM盘和DVD-ROM盘。处理器和存储器可以由专用逻辑电路系统补充或者可以并入该专用逻辑电路系统中。
本文中描述的主题可以实施在计算系统中,该计算系统包括后端组件(例如,作为数据处理器)、或者包括中间件组件(例如,应用服务器)、或者包括前端组件(例如,具有图形用户界面或者网络浏览器的客户端计算机,通过该网络浏览器,用户可以与本说明书中描述的主题的实施方式交互)、或者这种后端组件、中间件组件、或者前端组件的组合。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(“LAN”)和广域网(“WAN”)、网际网(例如,互联网)、以及点对点网络(例如,ad hoc点对点网络)。
诸如系统100或系统500之类的计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络(例如,网络114)进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。在一些实施方式中,服务器向客户端设备发送数据(例如,表示内容项的数据分组)(例如,为了向与客户端设备进行交互的用户显示数据并且接收来自该用户的用户输入)。可以从服务器处的客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)(例如,由数据处理系统102从客户端设备104或代理服务106接收)。
尽管在附图中以特定顺序描绘了操作,但是不需要以所示的特定顺序或以顺序来执行这样的操作,并且不需要执行所有示出的操作。可以按照不同的顺序执行本文描述的动作。
各个系统部件的分离不要求在所有实施方式中都分离,并且描述的程序部件可以包括在单个硬件或者软件产品中。例如,NLP组件116、音频信号生成器组件118、动作处理机组件120、响应选择器组件122、代理注册表组件124和代理界面组件126可以是单个组件、应用或程序、或具有一个或多个处理电路、或数据处理系统102的一个或多个服务器的一部分的逻辑设备。
现在,在已经描述了一些说明性实施方式之后,显而易见的是,前述说明只是说明性的而非限制性的,其是以示例的方式呈现的。具体地,虽然本文呈现的许多示例都涉及方法动作或者系统元件的具体组合,但是这些动作和这些元件可以按照其它方式组合以实现相同的目的。结合一个实施方式讨论的动作、元件和特征不旨在从其它实施方式中的相似作用排除。
本文使用的措辞和用语是为了进行描述,不应该将其视为具有限制性。本文对包括(“including”)、包括(“comprising”)、具有(“having”)、包含(“containing”)、涉及(“involving”)及其变形的使用旨在涵盖其后列出的项、其等同物、和其他项、以及由其后排他地列出的项组成的替代实施方式。在一种实施方式中,本文描述的系统和方法由所描述的元件、动作或组件中的一个、或多个的每种组合、或所有组成。
对本文中以单数形式提及的系统和方法的实施方式、元素或动作的任何提及也可以囊括包括多个这些元素的实施方式,并且在本文中以复数形式对任何实施方式、元素或动作的任何提及也可以囊括仅包括一个元素的实施方式。单数或复数形式的提及无意将当前公开的系统或方法、它们的组件、动作、或元素限制为单个或多个配置。对基于任何信息、动作或元素的任何动作或元素的提及可以包括该动作或元素至少部分地基于任何信息、动作或元素的实施方式。
本文公开的任何实施方式可以与任何其他实施方式或实施例组合,并且对“实施方式”、“某些实施方式”、“一种实施方式”等的提及不一定是互斥的,并且旨在指示结合该实施方式描述的特定特征、结构或特点可以被包括在至少一种实施方式或实施例中。如本文所使用的,这种术语不一定全部是指相同的实施方式。任何实施方式都可以按照与本文公开的方面和实施方式一致的任何方式与任何其他实施方式包括性地或排他地相结合。
对“或”的提及可以被解释为包括性的,使得使用“或”描述的任何术语可以指示单个、一个以上、以及所有所描述术语中的任何一个。对“‘A’和‘B’中的至少一个”的提及可以包括仅‘A’,仅‘B’、以及‘A’和‘B’。结合“包括”或其他开放式术语使用的这种提及可以包括其他项。
在附图、详细描述或任何权利要求中的技术特征后带有附图标记,这些附图标记已经被包括以增加附图、详细描述和权利要求的可理解度。因此,附图标记或它们的不存在对任何权利要求要素的范围没有任何限制作用。
本文描述的系统和方法可以按照其他特定形式来体现而不背离其特点。前述实施方式是说明性的,而不限制所描述的系统和方法。因此,本文所描述的系统和方法的范围由所附权利要求而不是前述描述来指示,并且在权利要求的等同含义和范围内的改变被包含在其中。
Claims (20)
1.一种用于在应用上渲染视觉组件的系统,包括:
在具有一个或多个处理器的数据处理系统上执行的代理注册表,所述代理注册表用于维持多个应用的多个动作清单,所述多个动作清单中的至少一个动作清单指示在执行动作时渲染所述多个应用中的一个应用的用户界面组件;
在所述数据处理系统上执行的自然语言处理器,用于:
接收包括由客户端设备的传感器检测到的输入音频信号的数据分组,所述客户端设备在所述客户端设备上的前台进程中显示第一应用的图形用户界面;
解析所述数据分组的所述输入音频信号以识别请求;
在所述数据处理系统上执行的动作处理机,用于:
从所述多个动作清单中选择通过所述多个应用中的第二应用执行与所述请求相对应的动作的动作清单,所述第二应用安装在所述客户端设备上而未处于所述前台进程中;以及
根据所述动作清单生成动作数据结构;以及
在所述数据处理系统上执行的代理界面,用于:
将所述动作数据结构提供给所述第二应用以使所述第二应用解析所述动作数据结构并且执行所述动作以生成输出;
基于所述第二应用的授权策略,确定来自执行所述动作的所述第二应用的输出被授权与所述第一应用的图形用户界面一起呈现;
响应于确定所述第二应用的所述输出被授权与所述第一应用一起呈现,针对选自所述多个动作清单的所述动作清单识别所述第二应用的用户界面组件;以及
将包括来自所述第二应用的所述输出的所述用户界面组件与被授权与所述第二应用一起呈现的所述第一应用的图形用户界面一起显示在所述客户端设备上。
2.根据权利要求1所述的系统,包括:
所述代理注册表,用于维持所述多个应用的所述多个动作清单,所述多个动作清单中的至少一个动作清单具有用于在执行所述动作时访问所述用户界面组件的地址模板,所述地址模板定义第一部分和第二部分,所述第一部分与所述多个应用中的一个应用相对应,所述第二部分包括在执行所述动作时的输入变量;
所述自然语言处理器,用于解析所述数据分组的所述输入音频信号以识别定义要由所述第二应用执行的所述请求的参数;以及
所述动作处理机,用于:
根据所述动作清单的所述地址模板,生成用于执行所述动作清单的所述动作的地址,所述地址包括第一子字符串和第二子字符串,所述第一子字符串与所述第二应用相对应,所述第二子字符串具有用于控制所述动作的执行的参数;以及
生成包括由所述动作处理机根据所述地址模板生成的所述地址的所述动作数据结构。
3.根据权利要求1所述的系统,包括:
所述代理注册表,用于维持所述多个应用的所述多个动作清单,所述多个动作清单中的至少一个动作清单具有用于在执行所述动作时访问所述用户界面组件的地址模板,所述地址模板定义第一部分和第二部分,所述第一部分与所述多个应用中的一个应用相对应,所述第二部分包括在执行所述动作时的输入变量;
所述自然语言处理器,用于解析所述数据分组的所述输入音频信号以识别定义要由所述第二应用执行的所述请求的参数;
所述动作处理机,用于根据所述动作清单的所述地址模板生成用于执行所述动作清单的所述动作的地址,所述地址包括第一子字符串和第二子字符串,所述第一子字符串与所述第二应用相对应,所述第二子字符串具有用于控制所述动作的执行的参数;以及
所述代理界面,该代理界面用于使用根据所述动作清单的所述地址模板生成的所述地址,针对选自所述多个动作清单的所述动作清单识别所述第二应用的所述用户界面组件。
4.根据权利要求1、2或3所述的系统,包括:
所述代理注册表,用于维持所述多个应用的所述多个动作清单,每个动作清单具有与所述多个应用中的一个应用相对应的代理标识符和与所述动作相对应的请求标识符;
所述自然语言处理器,用于解析所述数据分组的所述输入音频信号以识别与代理相对应的代理标识符,所述代理与安装在所述客户端设备上的所述第二应用相对应;以及
所述动作处理机,用于从所述多个动作清单选择用于执行所述动作的所述动作清单,所述动作清单具有与从解析所述输入音频信号中识别出的所述代理标识符相对应的代理标识符。
5.根据任何前述权利要求所述的系统,包括所述动作处理机,用于:
确定所述动作清单的界面模式指示符指定在执行所述动作时的所述用户界面组件的渲染;以及
响应于确定所述界面模式指示符指定所述用户界面组件的渲染,针对所述动作清单识别所述第二应用的所述用户界面组件。
6.根据任何前述权利要求所述的系统,包括所述代理界面,用于:
针对用于执行与第二请求相对应的所述动作的所述动作清单,确定所述客户端设备未经过所述第二应用认证;以及
响应于确定所述客户端设备未经过所述第二应用认证,在所述客户端设备上呈现提示界面以向所述第二应用认证所述客户端设备以执行与所述第二请求相对应的所述动作。
7.根据权利要求1所述的系统,包括所述代理界面,用于:
基于所述第三应用的授权策略确定所述第三应用的输出未被授权与所述第一应用一起呈现,所述第三应用安装在所述客户端设备上而未处于所述前台进程中;
将所述第三应用设置为所述客户端设备的所述前台进程,所述第一应用从所述前台进程变为在所述客户端设备上运行的非前台进程;
在所述客户端设备上显示所述第三应用的图形用户界面,该图形用户界面包括由所述第三应用生成的输出。
8.根据任何前述权利要求所述的系统,包括所述代理界面,用于:
基于所述第一应用的授权策略确定所述第一应用授权将所述第二应用的所述用户界面组件与所述第一应用的所述图形用户界面一起呈现,所述授权策略允许来自所述多个应用中的第一子集的用户界面组件与所述图形用户界面一起呈现并且限制来自所述多个应用的第二子集的用户界面组件与所述图形用户界面一起呈现;以及
响应于确定所述第一应用授权将所述第二应用的所述用户界面组件与所述第一应用的所述图形用户界面一起呈现,在所述客户端设备上与所述第一应用的所述图形用户界面一起显示包括来自所述第二引用的所述输出的所述用户界面组件。
9.根据任何前述权利要求所述的系统,包括所述代理界面,用于:将所述动作数据结构提供给所述第二应用以使所述第二应用:
监视在与所述第一应用的所述图形用户界面一起呈现的来自所述第二应用的所述用户界面组件上的交互事件;以及
响应于检测到所述交互事件,处理所述交互事件以更新所述用户界面组件。
10.根据任何前述权利要求所述的系统,包括:
所述自然语言处理器,用于经由数字助理应用接收所述数据分组,所述数据分组包括由所述客户端设备的所述传感器检测到的所述输入音频信号,所述客户端设备在所述前台进程中显示与所述第一应用相对应的所述数字助理应用的所述图形用户界面;以及
所述代理界面,用于在所述数字助理应用的所述图形用户界面内显示包括指示从解析所述输入音频信号中识别出的所述请求的子组件的用户界面组件以及包括来自与所述第二应用相对应的代理的所述输出的用户界面组件。
11.根据任何前述权利要求所述的系统,包括:
所述自然语言处理器,用于接收所述数据分组,所述数据分组包括由所述客户端设备的所述传感器检测到的所述输入音频信号,所述客户端设备在所述前台进程中显示与所述第一应用相对应的第一代理的图形用户界面;以及
所述代理界面,用于显示包括来自所述第二应用的所述输出的用户界面组件作为在所述第一代理的图形用户界面上的覆盖物。
12.根据任何前述权利要求所述的系统,包括所述代理注册表,用于维持所述多个应用的所述多个动作清单,所述多个动作清单具有动作清单的第一子集和动作清单的第二子集,所述第一子集包括由所述数据处理系统的管理员定义的动作清单,所述第二子集包括由处理所述多个应用中的一个应用的代理服务提供的动作清单。
13.根据任何前述权利要求所述的系统,包括所述动作处理机,用于将所述动作数据结构提供给所述第二应用以使所述第二应用:
解析所述动作数据结构以识别待执行的动作;
通过执行从所述动作数据结构中识别出的动作,生成输出;以及
向待与被授权与所述第二应用一起呈现的所述第一应用的图形用户界面一起呈现的所述用户界面组件提供所述输出。
14.一种用于在应用上渲染视觉组件的方法,包括:
通过具有一个或多个处理器的数据处理系统,维持多个应用的多个动作清单,所述多个动作清单中的至少一个动作清单指示在执行动作时渲染所述多个应用中的一个应用的用户界面组件;
通过所述数据处理系统,接收包括由客户端设备的传感器检测到的输入音频信号的数据分组,所述客户端设备在所述客户端设备上的前台进程中显示第一应用的图形用户界面;
通过所述数据处理系统,解析所述数据分组的所述输入音频信号以识别请求;
通过所述数据处理系统,从所述多个动作清单中选择通过所述多个应用中的第二应用执行与所述请求相对应的所述动作的动作清单,所述第二应用安装在所述客户端设备上而未处于所述前台进程中;
通过所述数据处理系统,根据所述动作清单生成动作数据结构;
通过所述数据处理系统,将所述动作数据结构提供给所述第二应用以使所述第二应用解析所述动作数据结构并且执行所述动作以生成输出;
通过所述数据处理系统,基于所述第二应用的授权策略,确定来自执行所述动作的所述第二应用的输出被授权与所述第一应用的图形用户界面一起呈现;
通过所述数据处理系统,响应于确定所述第二应用的所述输出被授权与所述第一应用一起呈现,针对选自所述多个动作清单的所述动作清单识别所述第二应用的用户界面组件;以及
通过所述数据处理系统,将包括来自所述第二应用的所述输出的所述用户界面组件与被授权与所述第二应用一起呈现的所述第一应用的图形用户界面一起显示在所述客户端设备上。
15.根据权利要求14所述的方法,包括:
通过所述数据处理系统,维持所述多个应用的所述多个动作清单,所述多个动作清单中的至少一个动作清单具有用于在执行所述动作时访问所述用户界面组件的地址模板,所述地址模板定义第一部分和第二部分,所述第一部分与所述多个应用中的一个应用相对应,所述第二部分包括在执行所述动作时的输入变量;
通过所述数据处理系统,解析所述数据分组的所述输入音频信号以识别定义要由所述第二应用执行的所述请求的参数;
通过所述数据处理系统,根据所述动作清单的所述地址模板,生成用于执行所述动作清单的所述动作的地址,所述地址包括第一子字符串和第二子字符串,所述第一子字符串与所述第二应用相对应,所述第二子字符串具有用于控制所述动作的执行的参数;以及
通过所述数据处理系统,生成包括由所述数据处理系统根据所述地址模板生成的所述地址的所述动作数据结构。
16.根据权利要求14所述的方法,包括:
通过所述数据处理系统,维持所述多个应用的所述多个动作清单,所述多个动作清单中的至少一个动作清单具有用于在执行所述动作时访问所述用户界面组件的地址模板,所述地址模板定义第一部分和第二部分,所述第一部分与所述多个应用中的一个应用相对应,所述第二部分包括在执行所述动作时的输入变量;
通过所述数据处理系统,解析所述数据分组的所述输入音频信号以识别定义要由所述第二应用执行的所述请求的参数;
通过所述数据处理系统,根据所述动作清单的所述地址模板,生成用于执行所述动作清单的所述动作的地址,所述地址包括第一子字符串和第二子字符串,所述第一子字符串与所述第二应用相对应,所述第二子字符串具有用于控制所述动作的执行的参数;以及
通过所述数据处理系统,使用根据所述动作清单的所述地址模板生成的所述地址,针对选自所述多个动作清单的所述动作清单识别所述第二应用的所述用户界面组件。
17.根据权利要求14、15或16所述的方法,包括:
通过所述数据处理系统,针对用于执行与第二请求相对应的所述动作的所述动作清单,确定所述客户端设备未经过所述第二应用认证;以及
通过所述数据处理系统,响应于确定所述客户端设备未经过所述第二应用认证,在所述客户端设备上呈现提示界面以向所述第二应用认证所述客户端设备以执行与所述第二请求相对应的所述动作。
18.根据权利要求14至17中任一项所述的方法,包括:
通过所述数据处理系统,基于所述第三应用的授权策略确定所述第三应用的输出未被授权与所述第一应用一起呈现,所述第三应用安装在所述客户端设备上而未处于所述前台进程中;以及
通过所述数据处理系统,响应于确定所述第三应用的所述输出未被授权与所述第一应用一起呈现,将第二动作数据结构提供给所述第三应用以使所述第三应用:
作为所述客户端设备的所述前台进程启动,所述第一应用从所述前台进程变为在所述客户端设备上运行的非前台进程;
解析所述第二动作数据结构以根据所述第二动作数据结构执行第二动作;以及
在所述客户端设备上显示所述第三应用的图形用户界面,该图形用户界面包括从执行所述第二动作生成的输出。
19.根据权利要求14至18中任一项所述的方法,包括:
通过所述数据处理系统,经由数字助理应用接收所述数据分组,所述数据分组包括由所述客户端设备的所述传感器检测到的所述输入音频信号,所述客户端设备在所述前台进程中显示与所述第一应用相对应的所述数字助理应用的所述图形用户界面;以及
通过所述数据处理系统,在所述数字助理应用的所述图形用户界面内显示包括指示从解析所述输入音频信号中识别出的所述请求的子组件的用户界面组件以及包括来自与所述第二应用相对应的代理的所述输出的用户界面组件。
20.根据权利要求14至19中任一项所述的方法,包括:通过所述数据处理系统,将所述动作数据结构提供给所述第二应用以使所述第二应用:
监视在与所述第一应用的所述图形用户界面一起呈现的来自所述第二应用的所述用户界面组件上的交互事件;以及
响应于对所述交互事件的检测,处理所述交互事件以更新所述用户界面组件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/030930 WO2020226619A1 (en) | 2019-05-06 | 2019-05-06 | Rendering visual components on applications in response to voice commands |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112262370A true CN112262370A (zh) | 2021-01-22 |
Family
ID=66776878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980002177.6A Pending CN112262370A (zh) | 2019-05-06 | 2019-05-06 | 响应于语音命令在应用上渲染视觉组件 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11360738B2 (zh) |
EP (2) | EP4435587A2 (zh) |
CN (1) | CN112262370A (zh) |
WO (1) | WO2020226619A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113181657A (zh) * | 2021-04-30 | 2021-07-30 | 北京读我网络技术有限公司 | 一种跨平台渲染方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112262370A (zh) | 2019-05-06 | 2021-01-22 | 谷歌有限责任公司 | 响应于语音命令在应用上渲染视觉组件 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8165886B1 (en) * | 2007-10-04 | 2012-04-24 | Great Northern Research LLC | Speech interface system and method for control and interaction with applications on a computing system |
WO2013012107A1 (ko) * | 2011-07-19 | 2013-01-24 | 엘지전자 주식회사 | 전자 기기 및 그 제어 방법 |
US20140214967A1 (en) * | 2011-08-26 | 2014-07-31 | Nippon Hoso Kyokai | Receiver and reception method |
WO2015039000A1 (en) * | 2013-09-13 | 2015-03-19 | Qualcomm Incorporated | Wireless communication device having deterministic control of foreground access of the user interface |
US20150112962A1 (en) * | 2012-05-31 | 2015-04-23 | Doat Media Ltd. | System and method for launching applications on a user device based on the user intent |
US20160203002A1 (en) * | 2015-01-09 | 2016-07-14 | Microsoft Technology Licensing, Llc | Headless task completion within digital personal assistants |
US20170116990A1 (en) * | 2013-07-31 | 2017-04-27 | Google Inc. | Visual confirmation for a recognized voice-initiated action |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190133100A (ko) * | 2018-05-22 | 2019-12-02 | 삼성전자주식회사 | 어플리케이션을 이용하여 음성 입력에 대한 응답을 출력하는 전자 장치 및 그 동작 방법 |
CN112262370A (zh) | 2019-05-06 | 2021-01-22 | 谷歌有限责任公司 | 响应于语音命令在应用上渲染视觉组件 |
-
2019
- 2019-05-06 CN CN201980002177.6A patent/CN112262370A/zh active Pending
- 2019-05-06 EP EP24193531.1A patent/EP4435587A2/en active Pending
- 2019-05-06 WO PCT/US2019/030930 patent/WO2020226619A1/en unknown
- 2019-05-06 EP EP19729113.1A patent/EP3752917B1/en active Active
- 2019-05-06 US US16/466,254 patent/US11360738B2/en active Active
-
2022
- 2022-06-10 US US17/837,896 patent/US11675566B2/en active Active
-
2023
- 2023-05-08 US US18/144,740 patent/US12079543B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8165886B1 (en) * | 2007-10-04 | 2012-04-24 | Great Northern Research LLC | Speech interface system and method for control and interaction with applications on a computing system |
WO2013012107A1 (ko) * | 2011-07-19 | 2013-01-24 | 엘지전자 주식회사 | 전자 기기 및 그 제어 방법 |
US20140214967A1 (en) * | 2011-08-26 | 2014-07-31 | Nippon Hoso Kyokai | Receiver and reception method |
US20150112962A1 (en) * | 2012-05-31 | 2015-04-23 | Doat Media Ltd. | System and method for launching applications on a user device based on the user intent |
US20170116990A1 (en) * | 2013-07-31 | 2017-04-27 | Google Inc. | Visual confirmation for a recognized voice-initiated action |
WO2015039000A1 (en) * | 2013-09-13 | 2015-03-19 | Qualcomm Incorporated | Wireless communication device having deterministic control of foreground access of the user interface |
US20160203002A1 (en) * | 2015-01-09 | 2016-07-14 | Microsoft Technology Licensing, Llc | Headless task completion within digital personal assistants |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113181657A (zh) * | 2021-04-30 | 2021-07-30 | 北京读我网络技术有限公司 | 一种跨平台渲染方法及装置 |
CN113181657B (zh) * | 2021-04-30 | 2024-04-05 | 北京读我网络技术有限公司 | 一种跨平台渲染方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20220308830A1 (en) | 2022-09-29 |
WO2020226619A1 (en) | 2020-11-12 |
EP4435587A2 (en) | 2024-09-25 |
US12079543B2 (en) | 2024-09-03 |
EP3752917A1 (en) | 2020-12-23 |
EP3752917B1 (en) | 2024-09-18 |
US20230280974A1 (en) | 2023-09-07 |
US20210334067A1 (en) | 2021-10-28 |
US11675566B2 (en) | 2023-06-13 |
US11360738B2 (en) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210304075A1 (en) | Batching techniques for handling unbalanced training data for a chatbot | |
US11775254B2 (en) | Analyzing graphical user interfaces to facilitate automatic interaction | |
US9954746B2 (en) | Automatically generating service documentation based on actual usage | |
US12079543B2 (en) | Rendering visual components on applications in response to voice commands | |
US11922209B2 (en) | Invoking functions of agents via digital assistant applications using address templates | |
EP3529740B1 (en) | Using distributed state machines for human-to-computer dialogs with automated assistants to protect private data | |
US20210141820A1 (en) | Omnichannel virtual assistant using artificial intelligence | |
US10275456B2 (en) | Determining context using weighted parsing scoring | |
CN110710158B (zh) | 验证与数字助理应用交接的代理的操作状态 | |
CN110637300B (zh) | 在联网环境中延迟的双因素认证 | |
CN110692040A (zh) | 在网络系统中激活远程设备 | |
CN110741362A (zh) | 音频查询的重叠处理的协调 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |