买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
摘要:本发明涉及用于跨多个平台显露虚拟助理服务的方法和系统。公开了用于将虚拟助理技能作为能够跨多个平台解释的可创作内容项显露的技术。在实施例中,查询系统包括执行引擎和多个包装器服务,包括a用于在第一虚拟助理平台的第一协议和目标协议之间转换消息的第一包装器服务和b用于在第二虚拟助理平台的第二协议和目标协议之间转换消息的第二包装器服务。查询系统可以接收针对技能的规范以及来自多个虚拟助理平台的调用该技能的请求。包装器服务将请求转换为执行引擎能够消耗的目标协议,并将来自执行引擎的响应转换为该请求源自的虚拟助理平台能够消耗的协议。
主权项:1.一种包括指令的非瞬态计算机可读介质,所述指令当由一个或多个硬件处理器执行时,使得执行包括以下的操作:由包括执行引擎和多个包装器服务的查询系统接收针对技能的规范,其中所述多个包装器服务包括a用于在第一虚拟助理平台的第一协议和目标协议之间转换消息的第一包装器服务以及b用于在第二虚拟助理平台的第二协议和所述目标协议之间转换消息的第二包装器服务,其中针对所述技能的所述规范定义状态图,所述状态图包括表示自然语言交互中的不同状态的节点集合和用于基于根据自然语言输入确定的意图在节点之间过渡的边;由所述第一包装器服务将来自所述第一虚拟助理平台的请求转换为所述目标协议,其中所述请求调用所述技能;由所述执行引擎基于针对所述技能的所述规范和被转换为所述目标协议的所述请求来生成响应;由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议;以及将被转换为所述第一协议的所述响应发送到所述第一虚拟助理平台。
全文数据:用于跨多个平台显露虚拟助理服务的方法和系统相关申请;通过引用并入本申请涉及于2017年9月22日提交的申请号为15712,480的美国专利申请,该申请通过引用并入本文。技术领域本公开涉及虚拟助理。具体地,本公开涉及一种框架,通过该框架可以创作和部署虚拟助理应用,使得应用能够跨多个平台解释。背景技术虚拟助理virtualassistant是用于执行自动化任务的软件代理,有时被称为技能、能力或动作。虚拟助理可以经由语音命令和或文本命令从用户接受指令。例如,虚拟助理可以通过智能扬声器或另一个启用麦克风的网络主机接收语音命令以获得天气预报。可替代地,虚拟助理可以经由文本命令从用户接收命令,诸如通过聊天界面或短消息服务SMS消息。响应于接收到命令,虚拟助理可以从相关联的网络服务获得天气预报并将天气预报呈现给发出请求的用户。许多虚拟助理提供商已经发行了作为使开发人员能够为虚拟助理创建新技能的平台的虚拟助理框架。虚拟助理框架一般包括应用编程接口API、代码样本、库、文档和其它工具的集合,以促进创建新技能。例如,虚拟助理框架可以提供用于将音频流转换为单词并对音频流执行自然语言处理的工具。因此,虚拟助理框架允许开发人员通过自然语言界面快速显露expose服务。许多虚拟助理平台与其它虚拟助理平台不交叉兼容。因此,开发人员通常为开发人员希望通过其显露服务的每个平台实现单独的技能。例如,开发人员可以创建通过一个供应商的智能扬声器系列显露天气预报的一种技能。然后,开发人员可以创建通过另一个供应商的智能扬声器系列显露天气预报的单独技能。这种方法可能是耗时的,并且产生多维护场景。如果更新或扩展服务,那么还必须为每个被支持的平台更新每个单独的技能。而且,显露相同底层服务的技能可以在行为上从一个平台转移到另一个平台。不同的技能可以具有不同的用户界面、不同的能力、不同的调用和或不同的错误。这种不同的行为使可用性、文档化、可管理性和性能变得复杂。本部分中所描述的方法是可以追求的方法,但不一定是先前已经构想或追求的方法。因此,除非另有说明,否则不应当假定本部分中描述的任何方法仅仅因为它们被纳入本部分中就有资格作为现有技术。附图说明在附图的各个图中,实施例是通过示例而不是限制的方式进行图示的。应当注意的是,本公开中对“实施例”或“一个实施例”的引用不一定是指相同的实施例,并且它们意味着至少一个。在附图中:图1图示了根据一个或多个实施例的系统;图2图示了根据一个或多个实施例的用于生成虚拟助理技能的示例操作集合;图3图示了根据一个或多个实施例的用于执行平台不可知的服务规范的示例梯形图;图4图示了根据一个或多个实施例的用于在平台不可知的环境中维护基于上下文的虚拟助理对话的示例操作集合,以及图5示出了图示根据一个或多个实施例的计算机系统的框图。具体实施方式在以下描述中,出于说明的目的,阐述了许多具体细节以便提供透彻的理解。可以在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中所描述的特征可以与在不同的实施例中所描述的特征组合。在一些示例中,参考框图形式描述众所周知的结构和设备,以避免不必要地模糊本发明。1.一般概述2.多平台虚拟助理系统3.虚拟助理服务创建和发布4.交叉平台执行5.基于上下文的虚拟助理对话6.硬件概述7.其他;扩展1.一般概述描述了用于将虚拟助理服务作为能够跨多个平台解释的可创作内容项显露的技术。用户可以为虚拟助理服务创作author平台不可知的规范,诸如交互式自然语言技能和动作。可以在不知道任何特定于平台的代码或实现细节的情况下创建平台不可知的规范。可以定义平台不可知规范并将其视为状态图。创作工具可以允许用户将节点状态添加到状态图,包括虚拟助理系统应当对其进行响应的文本、期望什么输入、基于用户输入过渡到什么状态,以及执行什么操作。在实施例中,查询系统包括执行引擎,该执行引擎解释interpret平台不可知的规范,以跨多个虚拟助理平台提供虚拟助理服务。执行引擎可以跟踪状态并在每个状态执行适当的逻辑以执行指定的功能。被执行的功能可以使执行引擎基于用户输入前进到下一个适当的状态。查询系统可以接受用户输入并以各种协议返回输出,所述各种协议可以从一个虚拟助理平台到下一个虚拟助理平台而变化。在实施例中,查询系统包括包装器服务wrapperservice集合。包装器服务用作执行引擎和虚拟助理平台之间的桥梁。包装器服务可以将从虚拟助理平台接收的消息转换为执行引擎能够消耗consumable的协议本文称为“目标协议”。包装器服务可以将来自执行引擎的响应转换为请求源自的虚拟助理平台能够消耗的协议。包装器服务允许使用创作工具创作一次并跨多个虚拟助理平台解释的实施虚拟助理服务的单个内容项。本说明书中所描述的和或权利要求中所阐述的一个或多个实施例可以不包括在这个“一般概述”部分中。2.多平台虚拟助理系统图1图示了根据一个或多个实施例的系统100。如图1中所示,系统100包括规范编辑器110、规范储存库120、查询系统140和虚拟助理平台150a-150b。在一个或多个实施例中,系统100可以包括比图1中所示的组件更多或更少的组件。图1中所示的组件可以在彼此本地或彼此远离。图1中所示的组件可以在软件和或硬件中实现。每个组件可以分布在多个应用和或机器上。多个组件可以被组合到一个应用和或机器中。关于一个组件描述的操作可以替代地由另一个组件执行。在一个或多个实施例中,系统100基于来自诸如用户160a-160b之类的一个或多个用户的输入执行虚拟助理服务。如本文使用的,虚拟助理服务可以是基于可以遵循自然语言格式的语音或文本输入来执行一个或多个自动化任务的技能、能力、动作或其它应用。示例虚拟助理服务包括但不限于进行旅行安排、访问云服务、发起音频文件的回放、控制智能家庭设备、给出指示、显示所请求的图像以及在账户之间转移资金。可以基于与用户160a-160b中的一个用户的对话来执行用于虚拟助理服务的一个或多个步骤。对话可以包括由用户接收的输入和由系统100生成的输出。对话可以包括来自用户160a-160b中的一个用户的初始请求。对话可以包括来自系统100的解决用户请求的响应。对话可以包括由系统100生成的对来自用户160a-160b的附加信息的请求。在一个或多个实施例中,虚拟助理平台150a包括被配置为访问和或向用户160a-160b提供虚拟助理服务的硬件和或软件。虚拟助理平台可以接收和处理来自用户的自然语言输入。自然语言输入可以是音频或基于文本的输入。例如,用户可以经由语音或文本输入询问“今天天气如何?”。作为另一个示例,用户可以经由语音或文本输入命令“将我的恒温器上的温度增加两度”。在实施例中,可视助理平台被集成到智能扬声器中。智能扬声器可以是语音命令设备,该设备监听一个或多个“热词”以提供虚拟助理的免提激活。一旦被激活,智能扬声器就接收来自用户的语音输入。智能扬声器还可以向用户回放音频。智能扬声器可以向查询系统140传送信息以及从查询系统140传送信息。智能扬声器可以被实现为独立设备,或者实现为诸如智能电话、平板电脑或计算机之类的数字设备的一部分。在一个或多个实施例中,虚拟助理平台提供音频接口和或可视界面。例如,虚拟助理平台150a包括音频接口152a和可视界面154a。虚拟助理平台150b包括音频接口152b和可视界面154b。音频接口是指被配置为促进用户和虚拟助理平台之间的音频通信的硬件和或软件。诸如音频接口142a-142b之类的音频接口可以包括用以播放音频的扬声器。播放的音频可以包括包括遵循自然语言格式的对话的言语verbal答案和言语问题。音频接口可以包括用以接收音频的麦克风。接收的音频可以包括从用户160a-160b接收的请求和其它信息。可视界面是指被配置为促进用户和虚拟助理平台之间的可视通信的硬件和或软件。可视界面渲染用户界面元素并且经由用户界面元素接收输入。可视界面的示例包括图形用户界面GUI和命令行界面CLI。用户界面元素的示例包括复选框、单选按钮、下拉列表、列表框、按钮、切换键toggle、文本字段,日期和时间选择器、命令行、滑块、页面和表单。诸如可视界面154a-154b之类的可视界面可以呈现消息传送界面。消息传送界面可以用于接受来自用户的键入的输入。消息传送界面可以用于向用户显示文本。可视界面可以包括显示图像诸如地图和图片的功能。可视界面可以包括上传图像的功能。作为示例,用户160a可以上传动物的图片连同自然语言文本“这是什么?”。在一个或多个实施例中,虚拟助理平台150a-150b通信地耦合到查询系统140。查询系统140可以支持根据不同协议进行通信的若干不同虚拟助理平台。例如,查询系统140可以通信地耦合到来自不同供应商的智能扬声器。附加地或可替代地,查询系统140可以通信地耦合到基于文本的平台,诸如可通过聊天界面访问的虚拟助理。不同的虚拟助理平台可以使用不同的API、库和代码示例来处理自然语言输入。虚拟助理平台150a-150b可以使用语音识别技术将语音输入转换为文本。例如,虚拟助理平台可以数字化和或过滤接收到的语音输入。虚拟助理平台可以将语音输入与存储的模板声音样本进行比较,以识别单词或短语。虚拟助理平台可以将语音输入分离成用于与特定语言中使用的声音进行比较的组成部分。虚拟助理平台可以将语音输入中的话语utterance映射到意图。这个上下文中的意图表示执行满足用户的口语请求的动作的请求,如在话语中实施的。话语可以是语音输入中的口语单词或短语。在一个或多个实施例中,虚拟助理平台150a-150b生成请求消息并将其传送到查询系统140。取决于由虚拟助理平台实现的协议,请求消息的格式可以从一个虚拟助理平台到下一个虚拟助理平台而变化。例如,一个虚拟助理平台可以生成JavaScript对象表示法JSON请求,该JSON请求包括从语音输入中提取的意图集合,这些意图是根据由平台实现的协议来构造的。不同的虚拟助理平台可以生成使用不同的格式和协议将话语映射到意图的可扩展标记语言XML对象。还可以使用其它请求消息格式,这些请求消息格式一般在虚拟助理平台的不同提供商供应商之间变化。查询系统140包括多个包装器服务,诸如包装器服务142a和包装器服务142b。包装器服务用作虚拟助理平台和执行引擎143之间的桥梁。例如,虚拟助理平台150a可以是基于从用户160a接收的语音输入创建JSON请求的智能扬声器。可以基于由供应商平台支持的协议来格式化JSON请求。包装器服务142a可以是web服务或其它应用可以将JSON请求转换为执行引擎143能够消耗的目标协议。虚拟助理平台150b可以是基于从用户160b接收的语音输入创建请求的智能扬声器。虚拟助理平台150b可以由不同的供应商设计,该不同的供应商根据与虚拟助理平台150a不同的协议来格式化请求。包装器服务142b可以被实现为将来自虚拟助理平台150b的请求转换为执行引擎143能够消耗的目标协议的独立web服务应用。还可以部署其它包装器服务,以提供对附加虚拟助理平台的支持。在实施例中,执行引擎143包括解释器144。解释器144解释针对虚拟助理服务诸如技能和能力的规范。解释器144可以基于与最终用户的对话来加载和解释规范。例如,用户可以通过发出以下语音命令来调用SetThermostat虚拟助理服务:“将楼下温度设置为72度”。包装器服务142a-142b中的一个可以将请求转换为执行引擎143能够消耗的目标协议。所使用的包装器服务可以取决于服务于请求的虚拟助理平台而变化。响应于接收到转换后的请求,解释器144可以加载针对SetThermostat服务的规范。然后,解释器可以根据规范执行一个或多个操作,诸如向配对的恒温器发送信号以将保持温度设置为72度。所执行的操作可以取决于从自然语言输入中提取的意图和规范而变化。在实施例中,查询系统110从用户通信设备120检索数据。作为示例,查询系统可以查询用户通信设备120,以经由用户通信设备120的全球定位系统GPS功能来确定位置。作为另一个示例,查询系统110可以通过访问与存储到用户通信设备120的日历应用相关联的数据来查询用户通信设备120,以确定用户在特定时间是否空闲。执行引擎143还可以基于上下文确定将执行的操作。执行引擎143可以基于分析用户输入来确定上下文。执行引擎143可以基于用户输入历史146来确定上下文。执行引擎143可以基于状态来确定上下文。在实施例中,上下文对象145是存储关于对话的上下文信息的对象。可以在对话过程中在虚拟助理平台和查询系统140之间来回传送上下文对象。上下文对象可以存储反映由执行引擎143执行的最后操作的信息。上下文对象可以存储反映用户输入历史146的信息。上下文对象可以存储反映当前状态147和或状态过渡历史148的信息。在实施例中,用户输入历史146是在一个或多个对话过程中用户输入的记录。用户输入历史146可以包括关于一系列语音输入的序列的信息。用户输入历史146以按照类型对用户输入进行分类。例如,用户每天早上8点提出与天气有关的请求。在实施例中,上下文对象145存储状态信息。每个状态可以被指派相应的状态标识号码。查询系统可以使用状态信息来确定与特定状态相关联地执行的一个或多个操作。例如,在状态1中,用户通信设备播放音频“你好”,并接受用户响应。在状态2中,用户通信设备播放音频“今天你好吗?”。在实施例中,上下文对象145存储关于当前状态147的信息。当前状态是在特定时间与特定上下文对象相关联的状态。当前状态可以与唯一状态标识符相关联。当前状态116可以由例如数字、十六进制或言语描述来表示。在实施例中,上下文对象145存储状态过渡历史148。状态过渡历史可以包括有序的状态序列。状态过渡历史可以包括当前对话中的先前状态集合。状态过渡历史可以包括之前对话中的一系列状态。状态过渡历史可以将状态过渡与由执行引擎143检索出的用户输入和或信息相联系。在实施例中,查询系统140远离虚拟助理平台150a-150b实现。查询系统140可以在云网络上执行。查询系统140可以在本地执行虚拟助理服务和或从一个或多个外部服务器检索信息。作为示例,查询系统140可以访问外部web服务、云应用和智能家庭设备。在实施例中,规范编辑器110是用于配置虚拟助理服务诸如技能、能力、动作和或其它应用的应用。规范编辑器110可以允许几乎没有编码的情况下以平台不可知的方式定义针对新的虚拟助理服务的规范。执行引擎143可以跨若干不同的虚拟助理平台解释同一个规范。包装器服务可以处理到不同虚拟助理平台协议的转换。分离允许更好的可管理性和灵活性。例如,如果开发人员130想要修改现有服务,那么可以更新对应的规范而不必修改包装器服务142-b的逻辑。此外,可以通过更新对应的包装器服务来处理对虚拟助理平台协议的改变。其它包装器服务和技能规范不需要更新。也可以支持新的虚拟助理平台。在实施例中,规范定义了状态图。可以在运行时期间解释状态图,以生成与用于执行特定任务的应用对应的代码。规范编辑器110可以渲染用户界面元素并经由用户界面元素接收输入。如前面所指示的,可视界面的示例包括图形用户界面GUI和命令行界面CLI。用户界面元素的示例包括复选框、单选按钮、下拉列表、列表框、切换键、触发器、文本字段、日期和时间选择器、命令行、滑块、页面和表单。在实施例中,规范编辑器110显示可移动组件,诸如文本框和连接箭头。规范编辑器110可以允许开发人员130重新排列组件。组件与状态信息相关联。通过重新排列状态定义组件,开发人员130可以修改由执行引擎143与特定虚拟助理服务相关联地执行的操作。在实施例中,针对虚拟助理服务的规范包括状态定义112。状态定义是描述特定状态的规范的元素。状态定义112可以包括与状态相关联地请求的信息。每个状态可以表示状态图内的不同节点。作为示例,状态定义112可以定义一个或多个状态的一系列音频消息。例如,一个状态可以包括音频消息“你的地址是什么?”。另一个状态可以包括音频消息“你的名字是什么?”。另一个状态可以包括音频消息“你的姓氏是什么?”。状态定义可以包括与状态相关联的预期用户输入。作为示例,在特定状态中,执行引擎可以被配置为接收地址。状态定义可以将用户输入与特定变量相关联。在前面的示例中,规范可以被解释为将输入值指派给变量address地址。状态定义可以定义与要在特定状态下接收的信息对应的槽slot。作为示例,状态定义可以定义用于传递经由用户输入接收的名称的槽{name}。在实施例中,状态关系106定义两个或更多个状态之间的关系。视觉上,状态关系106可以经由UI呈现为边,诸如连接状态节点的线或箭头。状态关系106可以定义状态定义中的不同节点之间的过渡。过渡可以表示对话中的状态流。作为示例,在特定状态中,执行引擎143可以被配置为在解释规范时接收“是”或“否”响应。基于响应是“是”还是“否”,执行引擎可以生成包括指示或再见消息的响应消息。在实施例中,执行引擎143包括被配置为基于规范生成可执行代码的硬件和或软件。作为示例,执行引擎143可以生成程序的Node.js实现,以执行由状态图定义的一系列操作。执行工程师143可以将状态图和相关联的元数据变换为可以由解释器144运行的可执行代码。执行引擎143可以使用与节点和连接器相关联地存储的预生成的代码块来生成代码。执行引擎143可以生成代码,以包括由用户经由查询系统定义界面定义的定制代码。在实施例中,可执行代码可以由使用不同协议进行通信的不同虚拟助理平台调用。例如,可执行代码可以通过JSON请求、HTTP请求、XML请求来调用,这些请求可以根据不同的平台协议来格式化。包装器服务可以将请求转换为调用为特定规范生成的可执行代码的目标协议。因此,可以定义单个技能规范并跨多个平台显露单个技能规范。规范储存库120被配置为存储针对虚拟助理服务的规范。响应于用户向查询系统140注册或启用虚拟助理服务,可以存储规范。规范储存库120可以是用于存储数据的任何类型的存储单元和或设备例如,文件系统、数据库、表的集合,或任何其它存储机制。另外,规范储存库120可以包括多个不同的存储单元和或设备。多个不同的存储单元和或设备可以是或可以不是相同类型或位于相同的物理站点。3.虚拟助理服务创建和发布如前面所提到的,规范编辑器110允许用户诸如开发人员130以最少编码或不编码来定义和编辑针对虚拟助理服务的规范。用户可以通过GUI生成状态图来创建规范。该技能可以跨各种平台被发布和访问,其中各种平台包括智能扬声器、基于聊天的界面、桌面客户端和SMS消息。图2图示了根据一个或多个实施例的、用于定制虚拟助理应用的示例操作集合。图2中所示的一个或多个操作可以被修改、重新排列或完全被省略。因而,图2中所示的操作的特定顺序不应当被解释为限制一个或多个实施例的范围。在实施例中,规范编辑器110呈现用于生成针对虚拟助理服务的规范的图形组件操作202。规范编辑器110可以呈现用于定义虚拟助理服务的一个或多个属性的GUI。作为示例,规范编辑器允许开发人员130输入服务的名称和描述。在实施例中,规范编辑器110呈现GUI,开发人员130通过该GUI定义虚拟助理服务的状态图。规范编辑器110可以呈现表示与相应状态对应的节点的GUI元素。可以用文本预先填充节点。可替代地或附加地,节点可以是用于接收定制用户输入的空白文本框。规范编辑器110可以呈现用于将状态链接到流程图中的连接器,诸如箭头。在实施例中,规范编辑器110接收定义针对虚拟助理服务的规范的用户输入操作204。在示例中,规范编辑器110接收定义用于规范的状态图的输入。规范编辑器110可以提示用户拖放文本框和连接器,以创建流程图样式的状态图。规范编辑器110可以允许用户从状态图中添加或移除节点。规范编辑器110可以允许用户重新排列节点出现在状态图中的次序。规范编辑器110可以允许用户插入或排列箭头以定义状态图中的流程。在实施例中,特定状态可以定义有用于查询系统呈现给用户的消息。例如,与状态1对应的节点可以包含文本“你今天想做什么?”。当上下文对象处于状态1时,虚拟助理平台播放或呈现消息“你今天想做什么?”。可以留下呈现消息的方式供虚拟助理平台确定。例如,智能扬声器可以使用内置音频文件样本来读取消息。基于聊天的界面可以将消息呈现为文本。基于SMS的界面可以向用户发送文本消息。状态图内的单个节点可以适应不同的平台,并且包装器服务将消息转换为适当的协议。可替代地或附加地,状态可以定义有与预期用户响应对应的变量。状态可以由特定类型的预期输入来表示。状态可以与开放式问题相关联。在与开放式问题相关联的状态中,系统可以接受任何响应即,一个单词或一百个单词。状态可以与有效响应的具体集合相关联。作为示例,节点包含文本:。节点与其中预期“是”或“否”的用户响应的状态相对应。可替代地或附加地,状态可以定义有将执行的操作。当上下文对象处于特定状态时,执行引擎143可以被配置为执行特定操作。状态可以与任务诸如生成数据对象、执行计算和或与第三方服务交互相关联。作为示例,当状态可以通过查询天气应用来定义获得天气报告的操作时。规范编辑器110可以允许用户将类型指派给节点。作为示例,节点与其中系统被配置为接收开放式响应的状态相对应。查询系统可以允许用户指定与节点相关联的变量的名称和类型。作为另一个示例,用户录入文本。该节点与变量UserRole用户角色相关联。该节点是被配置为接受两个响应中的一个的类型。规范编辑器110可以以定制执行代码的形式接收用户输入。作为示例,用户对用于接收事件报告的节点进行配置。规范编辑器110允许用户录入生成代表性状态转移REST服务调用以在第三方系统中添加该事件的定制实现逻辑。规范编辑器110可以以元数据的形式接收用户输入。规范编辑器110可以允许用户录入元数据指定信息,诸如在其中查找特定数据片段的表,或者在执行查询时使用的web应用。规范编辑器110可以用于定义平台不可知的规范。平台不可知的规范可以跨多个虚拟助理平台诸如不同的智能扬声器和基于聊天的平台运行。作为示例,在不调用任何特定于平台的代码或协议的情况下定义状态图。解释器144可以跨多个平台解释状态图规范。这种方法允许自然语言技能和能力被编写一次并跨若干不同的平台运行。自然语言交互也可以在单个对象中被修订,而不是每个支持的平台一个对象。在实施例中,规范编辑器110确定规范是否完成操作206。规范编辑器110可以显示具有诸如“完成规范”、“导出”或“制作我的应用”之类的标签的按钮。响应于用户点击按钮,规范编辑器110确定状态图完成。如果用户未点击该按钮,那么查询系统定义界面可以确定状态图未完成。在实施例中,如果状态图未完成,那么规范编辑器110继续接收配置规范的用户输入操作204,如上所述。在实施例中,如果规范完成,那么规范编辑器110将针对虚拟助理服务的规范存储在规范储存库120中操作208。在一些情况下,规范编辑器110可以生成可以由若干不同虚拟助理平台调用的平台不可知的可执行代码。可执行代码可以在运行时期间由解释器144生成,或者可以由规范编辑器110的某个其它组件预先生成。可执行代码可以通过在流程图上执行的变换处理和相关联的元数据来生成。作为示例,解释器144生成与状态图的每个状态对应的实现块。特定的状态可以与实现块诸如switch语句中的case或者函数对应。实现块可以包括将接收到的与变量对应的输入保存到上下文对象的代码。实现块可以包括生成包括将被读取的文本的响应对象的代码。实现块可以包括状态图中指定的任何定制代码。实现块可以包括用于分析上下文对象并且在接收到分组时执行适当的执行块的代码。在实施例中,解释器144为状态图中的每个状态指派唯一标识ID号。状态机生成器可以指派数字和或字母以识别特定状态。顺序状态可以被给予顺序ID号。在实施例中,规范编辑器110将服务发布到虚拟助理平台操作210。作为示例,虚拟助理平台接收新服务可用的消息。该消息可以识别关于如何调用服务的名称和或其它信息。虚拟助理平台可以将服务注册为新技能、能力或动作。然后,用户可以通过向虚拟助理平台发出语音或文本命令来调用所注册的服务。对于复杂软件,可以将自然语言技能和其它虚拟助理服务制成在用户定义的对象中实施的内容项。访问软件系统的消费者可以将定制技能创作为内容项。例如,用户可以创建自然语言流程来批准购买订单、在工作订单中录入时间部件,或无数其它任务。然后,所有员工都能够在任何被支持的平台上运行这些技能。4.交叉平台执行在实施例中,查询系统140支持来自多个虚拟助理平台的查询。例如,查询系统140可以接受来自不同智能扬声器、SMS消息传送平台和或基于聊天的界面的查询。可以根据不同的协议来格式化查询。智能扬声器可以与SMS消息不同地格式化查询,SMS消息可以与基于聊天的查询不同地被格式化。附加地或可替代地,不同的VAP服务提供商可以遵循不同的标准和协议。来自一个提供商供应商的智能扬声器可以与来自不同提供商供应商的智能扬声器不同地格式化查询。图3图示了根据一个或多个实施例的、用于执行平台不可知的服务规范的示例梯形图。图3中所示的一个或多个操作可以被修改、重新排列或完全被省略。因而,图4中所示的操作的特定顺序不应当被解释为限制一个或多个实施例的范围。在实施例中,VAP150a接收调用虚拟助理服务的自然语言输入操作302。作为示例,用户160a询问“今天天气如何?”来调用天气服务。作为另一个示例,用户命令“将恒温器设置为72度”来调用恒温器服务。作为另一个示例,用户命令“订购意大利辣香肠披萨”来调用披萨递送服务。可以通过自然语言输入显式地或隐式地调用其它服务。在实施例中,VAP平台150a基于自然语言输入来生成VAP请求消息操作304。VAP请求消息可以包含或以其它方式识别由用户160a接收的自然语言输入。作为示例,VAP消息将自然语言输入映射到一个或多个意图。语音输入“订购大的意大利辣香肠披萨”可以映射如下“Application=OrderPizzaservice应用=订购披萨服务,size=large尺寸=大,toppings=pepperoni顶部配料=意大利腊香肠”。映射可以从一个语音助理服务到另一个语音助理服务而变化。在实施例中,规范编辑器110允许开发人员130将样本话语映射到规范的意图。映射可以被发布或以其它方式提供给被支持的VAP平台包括VAP平台150a和或相关联的包装器服务。不同的VAP平台可以应用特定于平台的自然语言分析。作为示例,智能扬声器可以将语音输入内的短语映射到意图。基于聊天的界面可以将文本输入映射到意图。VAP请求消息格式可以从一种格式到下一种格式而变化。作为实例,智能扬声器平台将语音输入映射到JSON消息内的元素。作为另一个示例,来自不同平台的智能扬声器将语音输入映射到XML对象内的元素。请求消息可以遵循由VAP协议定义的格式。如前面所提到的,不同的VAP可以实现不同的协议。在实施例中,包装器服务142a将VAP请求消息转换为执行引擎143能够消耗的目标协议操作306。转换处理可以涉及根据目标协议提取和或重新格式化被包含在VAP请求消息内的输入。作为示例,来自智能扬声器平台的语音输入被提取并被映射到请求对象中的意图。作为另一个示例,来自聊天界面的文本输入被提取并被映射到请求对象中的意图。目标协议可以根据实现而变化。示例格式是JSON对象。传入的JSON、XML、HTTP或其它请求内包含的信息可以被提取并被映射到JSON对象中的元素。然而,可以使用其它格式,包括XML对象、数据库对象等。在实施例中,包装器服务142a是用作VAP平台150a的端点的web服务。包装器服务142a可以被配置为专门处理由VAP平台150a实现的协议中的入站inbound和出站outbound请求。可以部署其它包装器服务以支持使用不同协议进行通信的VAP平台。作为示例,包装器服务142b将来自基于聊天的界面的传入请求转换为目标协议。可以部署其它包装器服务以处理来自不同提供商供应商的基于SMS的虚拟助理和或VAP的请求。因此,包装器服务端点可以从一个VAP到下一个VAP而变化。在实施例中,转换后的请求包括上下文对象。上下文对象可以跟踪对话中的当前状态。包装器服务142a可以将自然语言输入映射到上下文对象中的意图。作为示例,请求“我想要中等大小的披萨”将“中等大小”映射到上下文对象内的尺寸属性。作为另一个示例,请求“我想要意大利辣香肠披萨”将“意大利辣香肠”映射到上下文对象内的顶部配料属性。执行引擎143可以使用上下文对象来确定如何在状态图中的不同节点之间过渡。在实施例中,执行引擎143基于转换后的请求来生成响应对象操作308。可以通过执行如状态图规范中定义的一个或多个任务来生成响应对象。在一些情况下,响应可以包括从外部服务获得的信息。作为示例,响应对象包括从外部web服务获得的天气信息。作为另一个示例,响应对象包括从恒温器或正在被配置的其它智能设备获得的确认。在实施例中,执行引擎143基于状态图规范和当前上下文来生成响应对象。可以根据上下文对象确定当前上下文。作为示例,请求“我想要意大利辣香肠披萨”提示询问“什么尺寸?”的响应,因为这个信息没有被包括在自然语言输入中或被映射到对应的意图。作为另一个示例,请求“我想要中等大小的披萨”提示询问“你想要什么顶部配料?”的响应。在又一个示例中,请求“我想订购披萨”提示响应“你想要什么顶部配料?”接着是“什么尺寸?”,反之亦然,这取决于状态图中所定义的流程。可以根据服务规范中定义的过渡和节点确定响应消息。在下面的第5部分中进一步描述用于执行基于上下文的虚拟助理对话的技术。在实施例中,响应对象是根据目标协议生成的,该目标协议是平台不可知的。响应对象可以遵循由目标协议定义的结构化格式。作为示例,目标协议定义模式,诸如JSON模式或XML模式。模式可以包括用于包含响应的元素,该响应可以取决于VAP而经由扬声器、文本消息和或显示来递送。在实施例中,包装器服务142a从执行引擎143接收响应对象操作310。然后,包装器服务142a可以将响应对象转换为发出请求的VAP能够消耗的响应消息。转换格式可以遵循由VAP实现的协议。作为示例,包装器服务142a生成响应消息,该响应消息使智能扬声器播放自然语言响应作为与用户160a的对话的一部分。作为另一个示例,包装器服务142a生成响应消息,该响应消息使得聊天界面将自然语言消息显示为与用户160a的聊天对话的一部分。作为另一个示例,包装器服务142a生成作为文本交换的一部分被发送到用户160a的文本消息。VAP协议可以以多种方式不同。例如,不同的VAP协议可以依赖不同的文件格式、模式和或加密方案。在实施例中,包装器服务142a将平台通用的响应对象转换为特定于平台的格式。转换可以涉及将对象转换为平台支持的文件格式,根据平台定义的模式来格式化文件,以及使用平台支持的加密方案来加密文件。因此,VAP响应消息的格式可以从一个平台到下一个平台而变化。在实施例中,包装器服务142a将VAP响应消息传送到VAP150a操作312。响应消息可以包含用于呈现给用户160a的自然语言输出。在实施例中,VAP150将自然语言输出呈现给用户160a操作314。这个操作可以包括向用户160a播放、发短信或显示自然语言输出。执行引擎143可以为VAP150a和或其它VAP执行若干不同的规范。执行引擎143可以基于从用户包括用户160a-160b接收的自然语言输入来选择要加载的服务规范。调用可以是显式的例如,“请启动SetThermostat服务”或隐式的例如,“请将恒温器设置为72度”。可以针对每个传入的请求重复图3中描绘的操作集合。执行引擎143可以在执行期间考虑上下文,如下面进一步描述的。5.基于上下文的虚拟助理对话图4图示了根据一个或多个实施例的、用于执行基于上下文的虚拟助理对话的示例操作集合。图4中所示的一个或多个操作可以被修改、重新排列或完全被省略。因而,图4中所示的操作的特定顺序不应当被解释为限制一个或多个实施例的范围。在实施例中,查询系统140发起上下文对象操作402。查询系统140可以创建与特定对话相对应的上下文对象。查询系统140可以为上下文对象分配存储器。查询系统140可以为将被存储到上下文对象的信息建立字段。在实施例中,查询系统140确定初始状态操作404。查询系统140可以定义用户输入不可知的初始状态。作为示例,用户输入不可知的初始状态是基于基本上空白的上下文对象的。在用户输入不可知的初始状态下,查询系统140可以等待用户输入。可替代地,查询系统140可以基于用户输入来确定初始状态。作为示例,查询系统140接收语音输入“制作列表”。查询系统140识别列表制作应用的初始状态。在实施例中,查询系统140识别将从用户请求的与初始状态相关联的信息操作406。查询系统140可以使用上下文对象来识别与初始状态相关联的信息。作为示例,上下文对象指定当前状态是A987。上下文对象进一步指定:在状态A987中,将从用户请求用户的名字。在实施例中,查询系统140通过VAP请求来自用户的信息操作408。查询系统140可以向VAP传送呈现请求识别出的信息的查询的指令。查询系统140可以基于由VAP实现的协议来格式化请求。VAP可以播放请求该信息的音频。作为示例,VAP经由智能扬声器播放音频信息“午餐你想吃什么?”。可替代地或附加地,查询系统140可以向VAP传送经由可视界面显示文本查询的指令。作为示例,VAP经由消息传送界面显示文本“午餐你想吃什么?”。在实施例中,查询系统140接收并解析用户输入操作410。VAP可以从用户接收包括语音输入的音频流。VAP可以基于音频流向查询系统140传送请求消息。VAP可以将音频流转换为文本。可替代地或附加地,VAP可以从用户接收文本输入。VAP可以包括在向查询系统140的请求消息中输入的文本。通过解析用户输入,查询系统140可以识别用户输入的不同部分。查询系统140可以执行自然语言分析以解释用户输入。查询系统140可以基于当前状态来隔离用户输入中的相关单词或短语。查询系统140可以将接收到的文本与和能够由查询系统执行的任务相关联的模板语言进行比较。这些功能中的一个或多个可以替代地由VAP执行。作为示例,VAP可以将话语映射到一个或多个意图集合。查询系统140可以充分利用由VAP实现的自然语言分析来执行诸如语音识别之类的复杂任务。在实施例中,查询系统140确定用户输入是否改变上下文操作412。如果用户输入包括所请求的信息,那么查询系统140可以确定用户输入改变了上下文。作为示例,状态7与接收地址相关联。一旦接收到地址,上下文对象就被更新为下一个状态,即状态8。如果用户输入包括新的请求,那么查询系统140可以确定用户输入改变了上下文。作为示例,系统接收用户输入“等一下,我想发送电子邮件,而不是文本消息”。因而,上下文已经改变。状态应当被修改以反映新的上下文。在实施例中,查询系统140修改上下文对象操作414。查询系统140可以通过存储信息和或更新当前状态来基于用户输入修改上下文对象。在实施例中,查询系统140更新上下文对象的当前状态。查询系统140可以基于在上下文对象处于第一状态时正在接收的语音输入将上下文对象从第一状态修改为第二状态。查询系统140可以递增状态标识号码。作为示例,查询系统140接收与状态1相关联的用户输入。因而,查询系统140将状态标识号码递增到状态2。在递增状态标识号码时,上下文对象可以确定与新的当前状态相关联的操作。查询系统140可以基于当前状态来识别将执行的代码块。修改上下文对象还可以包括将信息存储到上下文对象。查询系统140可以将用户输入与变量相关联地存储到上下文对象,如下所述。在实施例中,查询系统140鉴于当前状态、状态过渡历史和或用户输入历史来分析用户输入操作416。查询系统140可以基于分析来确定用户输入的上下文。在实施例中,查询系统140鉴于当前状态来确定预期的响应。查询系统140可以基于当前状态来检索存储的预期响应类型。作为示例,当前状态是R77。在状态R77中,查询系统140被配置为接收银行账号。因而,查询系统140从用户输入中选择十一位的号码。在实施例中,查询系统140鉴于状态过渡历史来分析用户输入。查询系统140可以基于当前对话中的一个或多个先前状态来确定用户输入的上下文。作为示例,当上下文对象处于状态1时,查询系统140获得旅行者JoeSmith的名字以添加到保留。在状态2中,查询系统140获得旅行者的护照号码。因为紧接着前面状态识别出旅行者JoeSmith,所以查询系统140确定护照号码是JoeSmith的。可替代地或附加地,查询系统140可以基于之前对话中的一个或多个先前状态来确定用户输入的上下文。在实施例中,查询系统140鉴于用户输入历史来分析用户输入。查询系统140可以基于当前对话中的用户输入历史来确定用户输入的上下文。可替代地或附加地,查询系统140可以基于之前对话中的用户输入历史来确定用户输入的上下文。作为示例,在之前的对话中,用户请求了健康市场HealthMart的方向。当提示输入位置时,用户选择了J街道位置。因而,查询系统将当前对健康市场的方向的请求解释为对J街道健康市场位置的方向的请求。在实施例中,查询系统140确定与用户输入的至少一部分对应的变量操作418。查询系统140可以基于上下文对象来识别变量。作为示例,上下文对象包括用于接收变量accountnumber账号的槽。查询系统140确定收到的号码是账号,与accountnumber槽相对应。可替代地或附加地,查询系统140可以基于用户输入中的上下文来识别值。作为示例,用户说:“我的账号是12345678”。基于数字和单词“账号”的组合,查询系统140将12345678识别为与accountnumber槽对应的值。在实施例中,查询系统140将用户输入的对应部分与变量相关联地存储操作420。查询系统140可以将与变量对应的用户输入存储到上下文对象。可替代地或附加地,查询系统140可以将与变量对应的用户输入存储到数据储存库。查询系统140可以将用户输入的所选部分存储到与变量对应的槽中。在实施例中,查询系统140将用户输入的至少一部分映射到对应的变量。查询系统140可以基于当前状态将用户输入映射到变量。查询系统140可以基于之前的状态将用户输入映射到变量。基于映射,查询系统140可以将输入与变量相关联地存储。可替代地或附加地,查询系统140可以基于映射来执行查询。作为示例,查询系统140接收到用户输入“告诉我我的支票帐户的余额”。系统将请求映射到例程lookupBalance。该例程包括accountnumber槽。系统将“主要支票账户”映射到accountnumber槽。在实施例中,查询系统140可以丢弃语音输入的一部分而不将该部分映射到任何变量。作为示例,查询系统140接收到语音输入“我是乘客”。查询系统140将输入的一部分“乘客”映射到对应的变量于userrole用户角色。查询系统140丢弃语音输入的剩余部分,“我是”。在实施例中,查询系统140识别将从用户请求的附加信息操作422。查询系统140可以基于存储到上下文对象的信息诸如当前状态和或用户输入历史识别将从用户请求的附加信息。查询系统140可以将接收到的输入与预期的响应类型进行比较。基于所预期的响应类型,查询系统140可以确定是否已经接收到所需的信息。在实施例中,基于状态过渡来识别将从用户请求的附加信息。上下文对象可以被更新为与将被系统接受的新变量相关联的新状态。作为示例,在状态5中,系统接收到名字和姓氏。在接收到名字和姓氏后,上下文对象被更新为状态6。在状态6中,系统被配置为请求地址。在实施例中,基于接收到的一个或多个用户输入来选择将从用户请求的附加信息。可以基于两个或更多个用户输入的接收次序来选择将从用户请求的附加信息。在实施例中,基于两个或更多个用户输入的接收之间的时间来选择将从用户请求的附加信息。作为示例,查询系统140接收到两个语音输入。第一个语音输入是“今天的日程表是什么?”。用户当前在旧金山。用户有在圣何塞SanJose的约会。查询系统140确定并呈现响应“你将前往圣何塞”。系统接收到第二个语音输入“天气怎么样?”。如果在第一个语音输入的同一天接收到第二个语音输入,那么系统会呈现请求,“您是问圣何塞还是旧金山的天气?”。另一方面,如果在第一次语音输入之后第二天接收到第二语音输入,那么查询系统呈现旧金山的天气,而不请求附加信息。在实施例中,基于在第一语音输入和第二语音输入之间缺少改变上下文对象的任何中间用户输入,选择将从用户请求的附加信息。在特定状态中,上下文对象可以被配置为接受两个或更多个变量。如果未接收到所需的变量,那么上下文对象不被更新到下一个状态。查询系统140可以请求与和当前状态相关联的一个或多个变量对应的附加信息。作为示例,在状态5中,系统被配置为接收名字和姓氏。在状态5中接收到的用户响应包括名字但没有姓氏。因而,查询系统140确定将从用户请求姓氏。在实施例中,如果将从用户请求附加信息,那么系统请求附加信息操作408,如上所述。如果不从用户请求附加信息,那么系统可以终止对话。系统可以在结束对话之前生成退出语句。作为示例,系统可以发送使智能扬声器播放说出“订单已确认。再见。”的音频的退出消息。以下详细示例说明根据一个或多个实施例的操作。以下详细示例不应当被解释为限制任何权利要求的范围。系统接收来自用户的语音输入“预订飞往巴黎的航班”。语音输入“预订航班”调用虚拟助理应用BookTravel。BookTravel应用包括状态集合,每个状态具有唯一状态标识符。上下文对象被设置为状态0001,与BookTravel应用的第一状态相对应。当上下文对象处于状态0001时,系统请求出发日期。为了请求出发日期,系统经由智能扬声器播放音频“您想要什么时候离开?”。当上下文对象处于状态0001时,系统被配置接收并存储与出发日期对应的用户输入。上下文对象指定出发日期应当以MMDDYYYY的形式存储在槽DepartureDate中。系统接收到用户输入“我想在12月5日离开”。系统将语音输入转换为文本。系统执行自然语言分析以识别文本中的日期。系统将当前年份附加到接收到的输入以生成变量12052017。系统将值12052017存储到DepartureDate槽。将上下文对象从状态0001更新到状态0002。当上下文对象处于状态0002时,系统被配置为请求返回日期。为了请求返回日期,系统经由智能扬声器播放音频“您想要什么时候返回?”。当上下文对象处于状态0002时,系统被配置接收并存储与返回日期对应的用户输入。输入应当以MMDDYYYY的形式存储到槽ReturnDate。系统接收到用户输入“我想停留十天”。系统将语音输入转换为文本。系统执行自然语言分析以确定用户正在提供停留时间。系统将停留长度转换为返回日期,生成变量12152017。系统将值12152017存储到ReturnDate槽。将上下文对象从状态0002更新到状态0003。当上下文对象处于状态0003时,除非已经从用户接收到目的地,否则系统被配置为请求目的地。系统分析被存储到上下文对象的用户输入历史。系统确定已经在用户的初始请求中指定了目的地。系统将目的地巴黎存储到Destination目的地槽。将上下文对象被更新到状态0004。当上下文对象处于状态0004时,系统被配置为识别航班信息以向用户呈现航班信息。系统执行对第三方旅行预订应用的查询。系统将Destination,DepartureDate和ReturnDate槽中的变量传递给旅行预订应用。系统从由旅行预订应用呈现的航班集合中选择航班。系统生成并播放音频消息:“好的,我在法国航空公司上找到了到巴黎的往返航班,十二月5日离开并于十二月15日返回。经济舱是800美元。我要预订吗?”。当上下文对象处于状态0004时,系统被配置为接收“是”或“否”响应。系统接收到语音输入“是”。系统根据当前状态分析用户输入。基于当前状态,系统确定“是”与预订所选航班的指令相对应。将上下文对象更新到状态0005。当上下文对象处于状态0005时,系统被配置为预订所选航班。系统向旅行预订应用传送请求以购买所选航班的往返机票。当上下文对象处于状态0005时,系统被进一步配置为播放最终消息。系统经由智能扬声器播放消息“好的,您的航班已预订。再见。”系统终止对话。6.硬件概述根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行该技术,或者可以包括诸如被永久性编程以执行该技术的一个或多个专用集成电路ASIC、现场可编程门阵列FPGA或网络处理单元NPU的数字电子设备,或者可以包括被编程以根据固件、存储器、其它存储装置或组合中的程序指令来执行该技术的一个或多个通用硬件处理器。这种专用计算设备还可以组合定制硬连线逻辑、ASIC、FPGA或NPU与定制的编程来实现该技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和或程序逻辑来实现该技术的任何其它设备。例如,图5是图示可以在其上实现本发明的实施例的计算机系统500的框图。计算机系统500包括总线502或者用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。计算机系统500还包括耦合到总线502以用于存储信息和将由处理器504执行的指令的主存储器506,诸如随机存取存储器RAM或其它动态存储设备。主存储器506还可以用于在将由处理器504执行的指令的执行期间存储临时变量或其它中间信息。这种指令在被存储在处理器504可访问的非瞬态存储介质中时,该指令使计算机系统500变为被定制用以执行指令中所指定的操作的专用机器。计算机系统500还包括耦合到总线502以用于为处理器504存储静态信息和指令的只读存储器ROM508或者其它静态存储设备。提供了诸如磁盘或光盘的存储设备510,并且存储设备510耦合到总线502以用于存储信息和指令。计算机系统500可以经由总线502耦合到诸如阴极射线管CRT的显示器512以用于向计算机用户显示信息。包括字母数字键和其它键的输入设备514耦合到总线502,用于向处理器504传送信息和命令选择。另一个类型的用户输入设备是光标控件516,诸如鼠标、轨迹球或者光标方向键,用于向处理器504传送方向信息和命令选择并且用于控制显示器512上的光标移动。这种输入设备通常具有在两个轴第一个轴例如x和第二个轴例如y中的两个自由度,这允许设备在平面内指定位置。计算机系统500可以使用定制硬连线逻辑、一个或多个ASIC或FPGA、固件和或程序逻辑来实现本文所描述的技术,定制硬连线逻辑、一个或多个ASIC或FPGA、固件和或程序逻辑与计算机系统结合,使得计算机系统500成为或者将计算机系统500编程为专用机器。根据一个实施例,由计算机系统500响应于执行被包含在主存储器506中的一条或多条指令的一个或多个序列的处理器504而执行本文的技术。可以从诸如存储设备510的另一个存储介质将这种指令读取到主存储器506中。执行被包含在主存储器506中的指令的序列使得处理器504执行本文所述的处理步骤。在替代实施例中,硬连线的电路系统可以代替软件指令或者与软件指令组合使用。如在本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带,或者任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带、内容可寻址存储器CAM以及三元内容可寻址存储器TCAM。存储介质与传输介质截然不同但是可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线502的引线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信中产生的那些波。各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器504以供执行。例如,最初可以在远端计算机的磁盘或固态驱动器上携带指令。远端计算机可以将指令加载到该远端计算机的动态存储器中并且使用调制解调器经电话线发送指令。位于计算机系统500本地的调制解调器可以在电话线上接收数据并且使用红外线发射器将数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收的指令可以可选地在被处理器504执行之前或之后被存储在存储设备510上。计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网络ISDN卡、线缆调制解调器、卫星调制解调器或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口518可以是提供到兼容的局域网LAN的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口518发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以通过本地网络522提供到主计算机524或者到由互联网服务提供商ISP526操作的数据装置的连接。ISP526进而通过现在通常被称为“互联网”528的全球分组数据通信网络提供数据通信服务。本地网络522和互联网528两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上并通过通信接口518的信号是传输介质的示例形式,其中这些信号将数字数据携带到计算机系统500或者从计算机系统500携带数字数据。计算机系统500可以通过网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、ISP526、本地网络522和通信接口518传送用于应用程序的所请求的代码。接收到的代码可以在其被接收时由处理器504执行,和或存储在存储设备510或其它非易失性存储装置中以供以后执行。7.其他;扩展实施例针对具有一个或多个设备的系统,设备包括硬件处理器并且被配置为执行本文所描述的和或下面权利要求中任何一项所述的任何操作。在实施例中,非瞬态计算机可读存储介质包括指令,该指令当由一个或多个硬件处理器执行时,使得执行本文所描述的和或任何权利要求中所述的任何操作。可以根据一个或多个实施例使用本文描述的特征和功能的任何组合。在前述说明书中,已经参考许多具体细节描述了实施例,这些具体细节可以因实现而异。因而,说明书和附图被认为是说明性的而不是限制性的意义。本发明的范围的唯一且排他的指示以及申请人所预期作为本发明的范围的内容,是从本申请产生的一组权利要求的以该组权利要求产生的具体形式的书面范围和等效范围,该组权利要求包括任何后续的校正。
权利要求:1.一种包括指令的非瞬态计算机可读介质,所述指令当由一个或多个硬件处理器执行时,使得执行包括以下的操作:由包括执行引擎和多个包装器服务的查询系统接收针对技能的规范,其中所述多个包装器服务包括a用于在第一虚拟助理平台的第一协议和目标协议之间转换消息的第一包装器服务以及b用于在第二虚拟助理平台的第二协议和所述目标协议之间转换消息的第二包装器服务;由所述第一包装器服务将来自所述第一虚拟助理平台的请求转换为所述目标协议,其中所述请求调用所述技能;由所述执行引擎基于针对所述技能的所述规范和被转换为所述目标协议的所述请求来生成响应;由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议;以及将被转换为所述第一协议的所述响应发送到所述第一虚拟助理平台。2.如权利要求1所述的介质,其中所述响应包括文本集合,并且其中用于由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议的指令包括用于格式化将由所述第一虚拟助理平台经由智能扬声器读出的文本的指令。3.如权利要求1所述的介质,其中所述响应包括文本集合,并且其中用于由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议的指令包括用于格式化将由所述第一虚拟助理平台通过聊天界面或短消息服务文本消息中的至少一个呈现的文本的指令。4.如权利要求1所述的介质,其中来自所述第一虚拟助理平台的所述请求包括通过智能扬声器接收的语音输入。5.如权利要求1所述的介质,其中针对所述技能的所述规范定义状态图,所述状态图包括表示自然语言交互中的不同状态的节点集合和用于基于根据自然语言输入确定的意图在节点之间过渡的边。6.如权利要求5所述的介质,其中通过在规范编辑器的图形用户界面内输入的流程图来定义所述规范。7.如权利要求5所述的介质,其中用于生成所述响应的指令包括用于执行在所述状态图的节点中定义的至少一个操作以从网络服务获得信息并生成包括所述信息的响应对象的指令。8.如权利要求1所述的介质,其中用于生成所述响应的所述指令包括用于基于与用户的自然语言交互的当前状态来更新上下文对象的指令。9.如权利要求1所述的介质,其中所述第一虚拟助理平台和所述第二虚拟助理平台是由不同供应商设计的智能扬声器。10.如权利要求1所述的介质,其中所述第一虚拟助理平台和所述第二虚拟助理平台中的至少一个经由基于文本的界面进行交互。11.如权利要求1所述的介质,其中所述执行引擎包括将针对所述技能的所述规范转换为可执行指令集合的解释器。12.如权利要求1所述的介质,其中,响应于从所述第一虚拟助理平台接收到所述请求,由所述执行引擎加载针对所述技能的所述规范。13.如权利要求1所述的介质,所述指令还引起包括将所述技能发布到所述第一虚拟助理平台和所述第二虚拟助理平台的操作;其中针对所述技能的相同规范被用于在所述第一虚拟助理平台和所述第二虚拟助理平台上启用自然语言能力。14.如权利要求1所述的介质,其中针对所述技能的所述规范启用一个或多个自然语言能力;其中调用所述技能的所述请求调用所述一个或多个自然语言能力的特定自然语言能力。15.如权利要求1所述的介质,其中用于由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议的指令包括用于生成数据对象的指令,所述数据对象包括遵循由虚拟助理平台能够消耗的格式的一个或多个属性-值对,以使智能扬声器输出对语音输入的自然语言响应。16.如权利要求1所述的介质,其中所述指令还使得执行包括以下的操作:由所述第二包装器服务将来自所述第二虚拟助理平台的第二请求转换为所述目标协议,其中所述第二请求调用所述技能;由所述执行引擎基于针对所述技能的所述规范和被转换为所述目标协议的所述第二请求来生成第二响应;由所述第二包装器服务将所述第二响应转换为所述第二虚拟助理平台的所述第二协议;以及将被转换为所述第二协议的所述第二响应发送到所述第二虚拟助理平台。17.如权利要求1所述的介质,其中所述指令还使得执行包括以下的操作:由所述查询系统接收针对第二技能的第二规范;由所述第一包装器服务将来自所述第一虚拟助理平台的第二请求转换为所述目标协议,其中所述第二请求调用所述第二技能;由所述执行引擎基于针对所述第二技能的所述第二规范和被转换为所述目标协议的所述第二请求来生成第二响应;由所述第一包装器服务将所述第二响应转换为所述第一虚拟助理平台的所述第一协议;以及将被转换为所述第一协议的所述第二响应发送到所述第一虚拟助理平台。18.如权利要求1所述的介质,所述指令还引起包括以下的操作:接收更新后的针对所述技能的规范;在不更新所述第一包装器服务的情况下由所述第一包装器服务将来自所述第一虚拟助理平台的第二请求转换为所述目标协议,其中所述第二请求调用所述技能;由执行引擎基于更新后的针对所述技能的规范和被转换为所述目标协议的所述请求来生成第二响应;在不更新所述第一包装器服务的情况下由所述第一包装器服务将所述第二响应转换为所述第一虚拟助理平台的所述第一协议;以及将被转换为所述第一协议的所述第二响应发送到所述第一虚拟助理平台。19.一种系统,包括:一个或多个硬件处理器;包括指令的一个或多个非瞬态计算机可读介质,所述指令当由一个或多个硬件处理器执行时,使得执行包括以下的操作:执行包括执行引擎和多个包装器服务的查询系统,所述多个包装器服务包括a用于在第一虚拟助理平台的第一协议和目标协议之间转换消息的第一包装器服务以及b用于在第二虚拟助理平台的第二协议和所述目标协议之间转换消息的第二包装器服务;由所述查询系统接收针对技能的规范;由所述第一包装器服务将来自所述第一虚拟助理平台的请求转换为所述目标协议,其中所述请求调用所述技能;由所述执行引擎基于针对所述技能的所述规范和被转换为所述目标协议的所述请求来生成响应;由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议;以及将被转换为所述第一协议的所述响应发送到所述第一虚拟助理平台。20.一种方法,包括:由包括执行引擎和多个包装器服务的查询系统接收针对技能的规范,其中所述多个包装器服务包括a用于在第一虚拟助理平台的第一协议和目标协议之间转换消息的第一包装器服务以及b用于在第二虚拟助理平台的第二协议和所述目标协议之间转换消息的第二包装器服务;由所述第一包装器服务将来自第一虚拟助理平台的请求转换为所述目标协议,其中所述请求调用所述技能;由所述执行引擎基于针对所述技能的所述规范和被转换为所述目标协议的所述请求来生成响应;由所述第一包装器服务将所述响应转换为所述第一虚拟助理平台的所述第一协议;以及将被转换为所述第一协议的所述响应发送到所述第一虚拟助理平台。21.一种包括用于执行如权利要求1-18中任一项所述的操作的部件的装置。
百度查询: 甲骨文国际公司 用于跨多个平台显露虚拟助理服务的方法和系统
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。