首页> 中国专利> 用于信道响应的多模式信道不可知渲染的机器人平台

用于信道响应的多模式信道不可知渲染的机器人平台

摘要

一种用于渲染信道响应的系统,包括:模板库和机器人服务器程序。所述模板库包括多个卡模板,所述多个卡模板用于将实体渲染为在不同信道中的卡以执行机器人的机器人技能。所述卡模板中的每个卡模板包括实体数据被绑定到的一个或多个实体属性,并且所述卡模板包括针对不同实体和不同信道的不同模板,从而允许在实现机器人技能的机器人的多个信道中渲染实体以及其对应的实体属性。所述机器人服务器程序接收调用所述机器人的机器人技能的输入;确定待渲染为卡的实体以执行所述机器人技能;基于所述信道和所述实体来选择卡模板;将所述实体数据绑定到所选择的卡模板的所述实体属性,以及生成并且发送信道响应。

著录项

说明书

背景技术

当今的机器人是执行自动化任务的软件程序。示例性机器人是聊天机器人,其是一种在其中聊天客户端程序与服务器侧机器人程序交换消息的机器人。机器人程序可以例如使用

机器人程序可以被设计为在各种不同的通信信道上进行通信。这些通信信道是促进在用户与另一用户或者用户与机器人之间进行通信的服务。允许用户与机器人进行通信的示例性通信信道包括但不限于:SMS、电子邮件、

这些信道中的每个信道都可以支持视觉卡和语音卡中的一者或者这两者。对于视觉卡,卡的组件中的每个组件的外观和感知都由信道固定,这是存在问题的,因为自定义是受限的。例如,开发者常常在他们能够用于文本的字体或大小以及能够呈现给用户的图像类型方面受到限制。另外,每个信道在机器人响应中可能具有其自己的表示卡的格式,该格式与另一信道的格式不同,并且支持语音的信道可能各自具有其自己的本地语音标记语言,以控制如何向用户读出语音。这些变型要求为每个信道的响应格式编写代码,以便渲染在不同信道中具有相同实体和实体属性的卡。

关于这些和其他一般考虑,已经描述了实施例。同样地,尽管已经讨论了相对具体的问题,但是应当理解,实施例不应当限于解决在背景中所识别的具体问题。

发明内容

以下呈现了简化的概述,以便提供对在本文中所描述的一些方面的基本理解。该发明内容并不是对所要求保护的主题的详尽概述。其既不旨在标识所要求保护的主题的关键或重要元素,也并不旨在描绘其范围。其唯一目的是以简化的形式提出一些概念,作为稍后提出的更详细描述的序言。

根据本公开的一个方面,提供了一种用于渲染信道响应的系统,包括:处理器和存储器。模板库被存储在所述存储器中,并且机器人平台程序在处理器上操作。所述模板库包括多个卡模板,所述多个卡模板用于将实体渲染为在不同信道中的卡以执行机器人的机器人技能。每个卡模板包括实体数据被绑定到的一个或多个实体属性。所述多个卡模板包括用于不同实体和用于不同信道的不同卡模板,从而允许在针对执行机器人技能的机器人的多个不同信道中渲染实体以及其对应的实体属性。机器人服务器程序被配置为:从通过多个不同信道中的信道进行通信的计算设备接收调用机器人的机器人技能的输入;从模板库中,从多个卡模板中选择卡模板,所述卡模板是至少基于将被渲染以执行机器人的机器人技能的实体以及要在其中渲染实体的信道来选择的;将所述实体数据绑定到所选择的卡模板的一个或多个实体属性,并且生成信道响应;以及将所述信道响应发送到所述信道。

根据本公开的另一方面,一种用于通过平台来渲染信道响应的方法,包括:从通过信道进行通信的计算设备接收输入;根据所述输入来确定待渲染的实体以便执行由所述输入调用的机器人的机器人技能;所述实体具有与其相关联的多个卡模板以用于渲染在不同信道中的卡中的实体,并且所述实体具有在所述多个卡模板的每个卡模板中表示的一个或多个实体属性。

附图说明

将参考附图来描述根据本公开的各种实施例,在附图中:

图1示出了根据本公开的实施例的用于渲染各种信道中的实体的机器人平台的示意性表示。

图2示出了用于针对被存储在数据库中的数据的示例性数据模型。

图3A-3C示出了示例性卡,其中的每个卡表示在计算设备上的特定信道中渲染的一个或多个实体。

图4示出了根据本公开的实施例的用于执行机器人平台程序的示例性方法。

图5示出了根据本公开的实施例的用于基于图像模板来创建图像的示例性方法。

图6示出了根据本公开的实施例的示例性计算系统。

具体实施方式

在下文的详细描述中,参考形成其一部分的附图,并且在附图中通过图示的方式示出了特定实施例。对这些实施例进行了足够详细的描述,以使得本领域技术人员能够实践该技术,并且应当理解,在不背离本公开的主旨和范围的情况下,可以利用其他实施例,并且可以进行结构、逻辑和电气改变。因此,以下详细描述不应当被视为限制性的,并且范围仅由所附权利要求以及其等同物来限定。附图中相似的数字指代相似的组件,这从使用的上下文中应当是显而易见的。

本公开的各方面提供了一种机器人平台,其使得机器人开发者能够以视觉卡、语音卡和Web UI卡的形式来生成动态内容,并且跨各种不同信道和画布来呈现该内容。这些视觉卡和语音卡向用户提供了用户界面,所述用户界面可以是例如丰富的图形用户界面和/或语音。

本公开的各方面提供了一种机器人平台,其促进了更大的自定义能力并且允许开发者向卡提供丰富的图形内容。机器人平台允许开发者使用熟悉的呈现技术(诸如HTML和CSS)利用这种丰富的图形内容来创建视觉卡。卡的创建提供了允许开发者提供丰富的图形用户界面的自定义能力,以及通过各种信道附加该丰富内容的能力。

本公开的各方面提供了一种平台,在该平台中,能够访问模板库以创建跨支持不同卡格式的各种不同信道的信道响应。模板库允许机器人实现其机器人技能,从而跨多个信道使用相同的卡配置向用户显示或读出其实体,而不必为每个不同的信道编写代码。

图1示意性示出了机器人平台20,其用于渲染各种信道中的实体以执行在机器人平台20上实现的机器人的机器人技能。图1还示意性示出了与机器人平台20通信的计算设备50。计算设备50包括输入设备52和输出设备54。输入设备52允许用户通过文本或语音来输入数据,并且可以包括以下中的一个或多个:麦克风、键盘、相机和触摸屏。输出设备54可以包括显示器和扬声器中的一个或多个。计算设备50包括处理器和存储器,并且可以是膝上型计算机、智能电话、平板计算机、台式计算机或无头设备。计算设备50的处理器执行机器人客户端程序56。

计算设备50可以通过各种不同的通信信道10与机器人平台20进行通信。这些通信信道中的每个通信信道都可以由服务器来实现,并且每个通信信道都提供促进在计算设备50与机器人平台20之间的通信的服务。信道的示例包括但不限于:SMS、电子邮件、

机器人平台20为多个机器人提供了平台,以实现其各自的机器人技能。特定机器人的机器人技能定义了机器人的功能,并且包括机器人在与用户通信时所执行的步骤。在向用户呈现卡的情况下,所述机器人技能包括在卡内渲染具有某些实体属性的一个或多个实体。机器人平台20包括在处理器80上执行的机器人平台程序30。机器人平台程序30包括特定于信道的实现机制32、机器人技能机制34和渲染器36。机器人程序30可以取回针对服务的信息,诸如机器人服务60、语言生成服务46和模板引擎38,并且可以利用认证机制42来执行认证。机器人平台程序30从模板库40a中取出卡模板,以用于生成针对不同信道的信道响应,模板库40a可以容纳于被存储在存储器90中的数据库40中。

模板库40a包括多个卡模板,其用于将实体渲染为在不同信道中的卡,以供机器人执行其机器人技能。个体模板描述了在信道10上示出视觉卡的情况下卡如何被视觉地构造、在无头设备或其他支持语音的设备上读出语音卡的情况下卡如何被说出、或者甚至在信道10支持视觉卡和语音卡两者的情况下卡应当如何被视觉地构造和如何被读出。为了显示卡,不同信道中的每个信道可以具有包含固定组件的不同格式。如上文所讨论的,在常规系统中,这些组件的固定性质限制了自定义,并且因为其格式取决于信道而不同,因此开发者不能够在没有额外编码的情况下跨不同的信道在单个卡中呈现他的或她的实体。借助于本公开的模板库,机器人开发者不必编写该额外代码,并且使得能够在多个信道上呈现他或她希望渲染为卡的实体。模板库40a还增加了自定义这些卡的能力。

模板库中所包含的模板可以包括其中卡的组件如在其在其中被呈现的特定信道所定义的那样而构造的标准卡模板、语音标记语言模板,或者其可以是包含HTML和/或CSS的图像卡,其使机器人开发者能够创建丰富的内容并且将该内容呈现在其卡中。机器人开发者可以在他的或她的机器人执行其机器人技能时指定他们希望在卡中示出的实体属性,并且可以在模板库40a内创建并且容纳模板,从而能够跨多个信道呈现其实体数据。因此,模板库40a包含有关当机器人执行其机器人技能时开发者偏好其实体针对特定信道、画布和实体如何进行显示的信息。此外,希望以相同方式显示相同实体的不同机器人能够使用相同的模板。

图2示出了针对包含模板库40a的数据库40的示例性数据结构。所述数据结构示出了针对数据库40中所容纳的数据的示例性组织结构。参考图2,在模板库40a中定义的模板首先通过其实体类型来组织,并且各种实体类型被包含在实体类型集合210中。所述实体类型由平台20的本体来指示,并且由平台20实施的各种机器人可以在实施其机器人技能时使用这些实体类型中的一种或多种。例如,天气机器人的技能可以包括通过在卡中渲染天气实体来向用户提供当前天气,在这种情况下,所述实体类型为“天气”。关于来自通信信道10中的一个通信信道的传入通信,实体是给定实体类型的实例,并且根据从信道10接收到的传入通信的上下文来确定实体,这可以取决于各种因素,诸如用户输入的内容以及用户已经利用机器人完成的轮次的数量。所述实体类型可以由平台20基于由传入通信所调用的机器人的机器人技能来确定。一些示例性实体类型包括天气、股票、食谱等。

每个实体都具有实体属性,其是实体的属性。这些实体属性具有与其关联的实体数据,并且所述实体数据可以是随时间而变化的动态数据。例如,股票实体和天气实体各自具有其数据随着时间而变化的实体属性,诸如股票价格或者当前或未来时间的温度和降水。通过取回所述动态数据并且将其绑定到与实体相关联的实体属性,机器人平台能够渲染具有最新数据的卡。

返回到图2,然后可以由模板渲染器来组织模板库40a,并且每个实体类型210能够具有一对多的模板渲染器。所述模板渲染器被包括作为模板渲染器集合220的一部分。模板渲染器采用从模板库中选择的模板,并且通过将实体数据绑定到所选择的模板的实体属性来渲染模板中的实体。个体模板渲染器处理一类模板,并且适于渲染在其类之内的模板。对于不同的信道、不同的画布和不同的卡类型,可能存在不同的模板渲染器,以允许实体以不同的方式在不同的信道和画布上显示,同时遵守这些信道期望的不同标准。例如,可能期望取决于卡中所呈现的实体的数量而以不同的方式来呈现实体。如果卡中存在多于一个实体,则能够选择模板渲染器以缩短的形式呈现实体数据,从而处理信道或计算设备的输出设备54的尺寸限制。模板渲染器集合220保持针对个体模板渲染器的所有模板,并且每个模板渲染器可以例如每个信道、画布、卡类型和被渲染的单个/多个实体具有一个模板。

每个模板渲染器可以具有一对多的模板。模板集合230包括所有这些模板。模板定义了当机器人实现其机器人技能时如何在卡中格式化实体。模板可以定义机器人开发者希望显示的实体属性(即,开发者希望在卡中示出或说出的实体属性)以及这些属性在卡内的布置。模板库40中的模板遵守为其创建模板的特定信道的标准,但是还通过包含用于提供丰富的图形内容的图像模板而提供额外的灵活性。模板集合230还允许机器人开发者使用实体属性的相同集合来创建用于跨各种信道生成信道响应的模板。模板集合230包括针对不同实体、不同信道、不同画布、不同卡类型和被呈现的单个/多个实体的不同模板。参考图1,可以由在开发者环境70中的机器人开发者来创建模板,开发者环境70使用模板生成程序72来将开发者想要显示的实体和实体属性关联到适合于在开发者想要渲染实体的信道中创建信道响应的模板。

模板库40a中所包括的模板可以包括标准模板(即,由信道指定的格式的模板)、图像模板和语言生成模板。在图3A中示出了基于标准模板生成的示例性卡,其图示了在计算设备50的输出设备54上所显示的卡310中所表示的天气实体320。所述标准模板包括当在机器人通过其进行通信的特定信道10中执行机器人的机器人技能时开发者选择用于在卡中示出的实体的实体属性。当机器人开发者使用模板生成程序72来创建模板时,开发者可以将他或她希望显示的特定实体属性指示给模板生成程序72,并且然后模板生成程序为机器人生成模板。模板能够重复使用任意多次,并且也可以被不同的机器人利用和重复使用。

当实现机器人技能以使用标准模板利用模板渲染器来渲染实体时,实体数据被绑定到模板的实体属性。该实体数据可以是用于生成动态内容的动态数据。例如,在天气机器人的情况下,当前温度是一种类型的动态数据,其可以被绑定到标准模板以创建具有动态内容的卡。例如,标准模板自身可以包括诸如实体类型和实体属性之类的属性、在其中渲染实体的信道、在其上正在渲染实体的画布、在渲染单个还是多个实体、以及卡类型(即,卡中的组件的配置)。

图像模板是包括用于生成图像的HTML和/或CSS的模板,所述图像能够被插入到被为其创建图像模板的信道所接受的卡格式中。例如,针对特定信道的标准卡可以包括标题组件、字幕组件和图像组件。HTML和/或CSS可以被包含在模板中,以生成能够被插入到图像组件中的图像。HTML和/或CSS能够被用于创建丰富的图形图像,所述图形图像具有例如覆盖有具有开发者所指定的特定字体和尺寸的文本的图片。HTML和/或CSS也能够被用于创建丰富的web用户界面(UI),用户能够通过例如点击执行某些动作的按钮来与所述UI交互。如果开发者选择,则当使用模板生成程序72来创建模板时,开发者能够将该HTML和/或CSS包括在模板中。

当实现机器人技能以使用图像模板来渲染实体时,实体数据被绑定到HTML和/或CSS内所包含的实体属性。该实体数据可以是动态数据,在这种情况下,根据HTML和/或CSS来创建动态图像。所述图像模板可以包括以下属性:诸如在其中渲染实体的信道、画布类型、被渲染的实体类型和实体属性、正在渲染单个还是多个实体、卡类型、利用HTML和/或CSS创建的图像的尺度、以及与图片相关联的HTML和CSS。图3B和图3C图示了示例性卡,其中使用包含HTML和/或CSS的模板来显示丰富的内容。

所述语言生成模板是用于在支持语音的信道中创建信道响应的模板。所述语言生成模板包含语音标记语言,诸如语音合成标记语言(SSML),其被用于在信道响应中渲染语言。如上文所解释的,不同信道中的每个信道可以具有其自己的本地语音标记语言。所述语言生成模板包括语音标记语言,其用于在特定信道和画布中适当地回复。当利用模板渲染器渲染语言生成模板时,实体数据被绑定到在语音标记语言内所包含的实体属性。该实体数据可以是动态数据,从而根据语音标记语言来创建动态语音。语言生成模板可以包括以下属性:诸如在其中渲染实体的信道、画布类型、被渲染的实体类型和实体属性、正在渲染单个还是多个实体、卡类型、以及与语音相关联的语音标记语言。

返回到图2,卡类型集合250描述了可用的不同卡类型。模板库40可以包括用于不同卡类型的不同模板。卡类型是卡中的组件的配置。卡类型可以例如是音频卡(例如,流音乐)、多实体卡、单实体卡等。所述信道中的每个信道可以允许多种格式,其中能够在给定的画布中显示卡的组件。例如,可能存在提供更多或更少细节或者不同类型细节的不同卡类型。卡类型集合250包括用于不同格式的不同卡类型。

动作260是用户与卡进行交互的方式。在由机器人平台实现的特定机器人的机器人技能中指定了动作,并且能够根据机器人技能将这些动作绑定到某些实体类型。动作可以例如采取用户能够使用输入设备52按下的按钮的形式。在对动作的选择后,用户将获得机器人平台20的运行时访问与所选择的动作相关联的实体。动作还可以启动外部URL,当用户选择外部URL时,不需要访问机器人平台20。如果卡包括多个实体,则针对所述实体中的每个实体来渲染动作。机器人技能机制34确定是否绑定这些动作。

实体可以被组织成类级别继承层级,其中基本实体能够具有多个子实体。该类级别继承层级使得能够为基本实体建立模板,所述模板将被应用于其子实体。该优点在于减少了必须被创建的模板总数,因为不必为每个实体都定义模板。相反,基类定义了实体在特定信道和画布中应当看起来如何,并且然后子类可以使用基模板渲染器和模板。所述类级别继承层级的示例性用法是:基类实体是人员类型,并且子类实体是雇员、管理者和承包者。在这种情况下,在本体中有四种类型。不必为这些类型中的三种类型定义特定的模板(以及其相关联的模板渲染器),亦即:雇员、管理者和承包者类型。给定类型层级,如果没有为这些子类实体定义的模板,则平台将确定基类实体,并且将选取模板渲染器并且取出针对人员类型的模板。尽管已经针对类级别继承描述了简单的基类子类关系,但是应当理解,类级别继承层级能够进一步扩展,其中子类是针对另一子类的基类。在这种情况下,当针对子类实体缺少模板时,机器人平台程序30可以遍历层级的多个级别,直到找到基类模板为止。

现在返回到图1,特定于信道的实现机制32从信道10接收用户查询作为输入。特定于信道的实现机制32检查被包含在用户查询中的分组,并且根据接收到的查询的上下文,特定于信道的实现机制32确定正在发送查询的用户是谁、用户正在尝试调用什么机器人和机器人技能、发送查询的信道、在其上显示实体的画布、以及是否存在被渲染为卡的单个或多个实体。然后,特定于信道的实现机制将该信息传递给机器人技能机制34和渲染器36。

机器人技能机制34实现针对正在被调用的机器人特定的机器人技能。所述机器人技能定义了机器人的功能,并且包括机器人在与用户交流时所执行的步骤。在向用户呈现卡的情况下,所述机器人技能包括机器人生成卡的能力,所述卡包括机器人技能确定应当作为对用户输入的响应而渲染的特定实体的实体属性。例如,如果特定于信道的实现机制32根据用户查询的上下文中确定正在调用天气机器人,则所述机器人技能机制执行针对天气机器人的技能。机器人技能机制34还可以例如基于用户输入的上下文、机器人已经与用户通信的“轮次”的数量、与用户的先前交互等,来确定哪个实体渲染。机器人技能机制34可以以编写机器人的语义对话语言(SCL)进行通信。在这种情况下,机器人平台20解释并且执行该语言。

机器人技能机制34取出针对根据用户查询的上下文而确定的特定实体的实体数据,并且将该实体数据传递给渲染器36。可以从机器人服务60中取出实体数据,机器人服务60可以是机器人技能机制34调用以取回实体数据的外部服务。从机器人服务取回的实体数据可以是用于生成具有动态内容的实体的动态数据。例如,在天气机器人的情况下,动态数据可以包括温度、降水、高/低温度等。机器人技能机制34还确定动作是否应当被绑定到正在被渲染的实体。该确定是基于技能开发者为其机器人提供的自定义逻辑进行的。

渲染器36从特定于信道的实现机制32或机器人技能机制34接收信道和画布信息,并且从机器人技能机制34接收实体类型信息。渲染器36然后基于实体、信道、画布和正在被渲染的单个/多个实体来确定适当的模板渲染器和模板。以调用天气机器人的情况为例。特定于信道的实现机制32确定应当渲染天气实体,并且确定特定的信道、特定的画布以及正在渲染的单个实体。渲染器36获取该信息并且取出具有天气实体类型的模板,并且使用模板的属性找到针对特定信道、特定画布和单个实体的模板。在这种情况下,从模板数据库中取出的(一个或多个)特定模板将是开发者指定的模板,并且将具有期望的卡类型。如果有多个模板能够用于特定信道、特定画布和单个实体,则通过确定开发者是否为该情况指定了特定的渲染器ID,来使用由开发者指定的特定模板。如果开发者尚未指定特定模板,则所述系统将选取适当的模板或者将选取默认模板。

一旦渲染器36取出适当的模板,渲染器36就使用相关联的模板渲染器来绑定由机器人技能机制34获得的实体数据以渲染模板响应。通过这样做,渲染器调用模板引擎38以创建图像,或者在必要时调用语言生成服务46。然后,模板响应被发送到特定于信道的实现机制32以生成信道响应。然后,特定于信道的实现机制32通过生成能够由信道10解释的适合于信道的分组来使模板响应适应于适当的信道10。特定于信道的实现机制32然后将信道响应发送给信道10。

模板引擎38是渲染器36调用的服务,以便基于在图像模板中所包括的HTML和/或CSS来生成图像。当渲染器36选择具有HTML和/或CSS的图像模板时,HTML、渲染器36首先将实体数据绑定到被包含在HTML和/或CSS中的实体属性。然后,渲染器36将绑定的HTML和/或CSS发送到模板引擎38。模板引擎38生成能够被插入到适当的卡组件中的图像。可以使用例如用于在无头环境中捕获HTML和/或CSS的图像的屏幕快照技术来捕获图像,其示例包括无头

由模板引擎38执行的图像生成所花费的时间可能比接收信道响应所期望的时间更多。为了考虑该额外时间,模板引擎38可以提交用于图像转换的后台作业,同时还创建了引用图像将被存储在图像容器44中的位置的统一资源定位符(URL)。然后,将URL与模板响应一起发送给特定于信道的实现机制32。特定于信道的实现机制32然后通过生成能够由信道10解释的信道适当的分组,使模板响应适应于适当的信道10。然后,特定于信道的实现机制32将信道响应发送给信道10。一旦创建了图像,所述图像就被存储在图像容器44中,图像容器44例如可以被存储在机器人平台20的存储器90中。在信道10准备渲染图像时创建图像并且将其存储在图像容器44中,并且此时,信道可以使用指向图像的URL来访问所述图像被存储在图像容器44中的位置。

语言生成服务46是渲染器36调用以基于模板中所包括的语音标记语言来生成语音的服务。当渲染器36选择具有语音标记语言的模板时,所述渲染器将实体数据绑定到语音标记语言的实体属性,并且然后将绑定的语音标记语言发送到语言生成服务46。所述语言生成服务采用所述绑定的语音标记语言,并且生成适当的自然语言,并且将其以语音标记语言的形式返回到渲染器36。然后,所述渲染器基于其从语言生成服务46接收到的语音标记语言来生成模板响应。

然后,将模板响应发送给特定于信道的实现机制32,以生成信道响应。然后,特定于信道的实现机制32通过生成能够由信道10解释的信道适当的分组来使所述模板响应适应于适当的信道10。特定于信道的实现机制32然后将所述信道响应发送给信道10。

认证机制42被用于返回关于已认证用户的信息,机器人技能机制34可以使用该信息来确定用户的偏好。这些用户偏好继而能够由机器人技能机制34用于确定要显示的实体。能够根据用户查询的上下文来确定特定用户。特定于信道的实现机制根据所述上下文来确定所述用户,并且调用认证机制42来对用户进行认证并且将信息传递给机器人平台20。以这种方式,机器人技能机制34能够迎合用户的特定偏好。例如,如果用户偏爱某项汽车服务,则机器人技能机制能够使用该信息来渲染针对所述特定汽车服务的实体。

机器人平台20还可以包括用于高速缓存模板响应的高速缓存48。在将实体数据绑定到卡模板的一个或多个实体属性以创建模板响应之后,可以将该模板响应存储在高速缓存48中,以供以后针对相同实体的请求时使用。高速缓存48可以针对被存储在高速缓存48中的模板响应使用独有的签名散列。在调用数据库40中的模板库之前,所述渲染器可以参考高速缓存48以查看正在渲染的当前实体的散列是否与高速缓存48中的模板响应相匹配。如果存在匹配,则能够重复使用高速缓存中的模板响应。被存储在高速缓存48中的用于模板响应的散列包括时间戳,从而能够确定散列是否已经到期。这确保了将最新信息作为信道响应返回,这在动态数据的情况下尤其重要。

图3A-3C示出了示例性卡,所述卡中的每个卡表示在计算设备50上的特定信道10和画布中渲染的一个或多个实体。在图3A-3C中所示的计算设备50是智能电话,但是计算设备50可以是能够显示或读出卡的任何计算设备50。图3A示出了卡310,其中已经以信道10支持的标准卡格式渲染了单个实体320。在图3A中,天气机器人正在与用户进行交互,并且用户查询“向机器人询问Seattle的天气”已经被发送到机器人平台20。基于所述用户查询的上下文,机器人平台20已经确定信道和画布(智能手机),并且正在调用天气技能。机器人平台20已经从模板库40中取出适当的模板,并且已经基于取出的模板生成了信道响应。信道10已经向用户渲染了机器人响应,其在图3A中被显示。在图3A中所示的示例性实体320是天气实体320,其实体属性包括位置、温度、高温/低温、降水、风速和湿度。当然,天气实体并不限于这些特定的实体属性。图3B示出了在用于食谱机器人的卡中渲染的多个实体342、344、346,并且图3C示出了在用于相同食谱机器人的卡310中渲染的单个实体372。图3B和图3C图示了基于正在被渲染的实体的数量在针对实体的格式上的差异。

图4示出了用于执行机器人平台20的机器人平台程序30的示例性方法。在该方法中,机器人正在实现其机器人技能以渲染实体,并且从模板库中取出模板以生成机器人客户端程序56通过其与机器人平台20进行通信的信道的适当信道响应。参考图4,在步骤410处,机器人平台20从信道10接收输入。所述输入可以是来自计算设备50的用户查询,并且所述输入调用具有能够由平台20的机器人技能机制34实现的机器人技能的机器人,以渲染将最终将由计算设备50的输出设备54显示或读出的卡的一个或多个实体。

在步骤420中,机器人平台20根据所述输入的上下文来识别在执行机器人的机器人技能时要渲染的实体。除了识别待渲染的实体之外,机器人平台20还可以基于所述输入的上下文、发送所述查询的用户的身份、用户尝试调用的机器人技能、发送查询所通过的信道、在其上显示或读出实体的画布、以及是否存在被渲染为卡的单个或多个实体。

在步骤430中,机器人平台20基于信道和待渲染以执行机器人技能的实体,从模板库中的多个卡模板中选择卡模板。除了信道和实体之外,还可以基于画布、被渲染的实体的数量和卡类型来选择模板。因此,可以访问模板库以根据机器人开发者的偏好取出模板以渲染实体,从而针对特定信道和画布来显示他的或她的实体。如上文所讨论的,模板库中所包含的模板可以包括其中卡的组件如在呈现其特定信道所定义的那样被构造的标准卡模板,语言生成卡;或者其可以是使开发者能够创建丰富的内容并且将该内容呈现在其卡中的图像卡。在模板中指定了待显示在卡中的实体属性,并且这些模板允许机器人开发者跨多个信道来显示其模板。选择用于渲染实体的卡模板可以是由机器人开发者创建并且存储在模板库40a中的模板,或者是已经存在于模板库40a中的模板,机器人开发者可以重复使用所述模板来执行他的或她的机器人的机器人技能。

在步骤440中,机器人平台20将实体数据绑定到所选择的模板的一个或多个实体属性,以渲染模板响应。所述实体数据可以是从机器人服务60取回的动态数据,其允许包含动态内容的信道响应被发送给信道。可以使用服务器侧渲染技术(诸如

在步骤450中,机器人平台20生成信道响应并且将所述信道响应发送给用户。可以通过生成能够由信道10解释的信道适当的分组,通过获得模板响应并且将其适应于适当的信道10,来生成信道响应。在图4中所图示的方法使得能够通过指定期望为实体显示的实体属性来跨支持不同卡格式的各种不同的信道来创建信道响应。

在步骤430中所选择的模板包括HTML和/或CSS的情况下,机器人平台20使用HTML和/或CSS来创建图像并且返回所述图像,从而可以将其在卡中渲染。使用包含HTML和/或CSS内容的模板的图像创建过程增强了自定义,并且允许开发者创建能够在各种信道和画布上所显示的丰富的图形内容。在图5中图示了用于创建该图像的示例性过程。在步骤510中,在步骤430中所选择的卡模板是包含HTML和/或CSS的卡模板。在步骤520中,将实体数据绑定到信道响应的一个或多个实体属性的步骤440包括将所述实体数据绑定到HTML和/或CSS内容中的实体属性。在步骤530中,创建引用图像将被存储的位置的URL。然后,在步骤540中,URL被包含在发送给该信道的信道响应中。在步骤550中,基于HTML和/或CSS内容而生成的图像被存储在URL指向的位置。然后,在步骤560中,一旦机器人客户端程序56准备在计算设备50上渲染所述图像,则客户端计算设备50能够使用URL来取回图像。这种创建图像的异步方法补偿了根据HTML和/或CSS创建图像所需的额外时间。

在步骤430中所选择的模板包括语音标记语言的情况下,将实体数据绑定到实体属性的步骤440包括将所述实体数据绑定到所述模板的语音标记语言中所包含的实体属性。在这种情况下,所述模板渲染器可以调用语言生成服务,以便基于在模板中所包含的语音标记语言来生成语音。所述语言生成服务采用所绑定的语音标记语言并且生成适当的自然语言,并且将其以语音标记语言的形式返回到渲染器。然后,基于从所述语言生成服务接收到的语音标记语言来生成模板响应。

图6示意性示出了能够实施上文所描述的方法和过程中的一个或多个的计算系统600的非限制性实施例。以简化的形式示出了计算系统600。计算系统600可以体现图1的机器人平台20。计算系统800可以采用以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备、以及可穿戴计算设备,诸如智能手表和头戴式增强现实设备。

计算系统600包括逻辑处理器602、易失性存储器603和非易失性存储设备604。计算系统600可以可选地包括显示子系统606、输入子系统808、通信子系统610和/或在图6中未示出的其他组件。

逻辑处理器602包括被配置为执行指令的一个或多个物理设备。例如,所述逻辑处理器可以被配置为执行作为一个或多个应用、程序、例程、库、对象、组件、数据结构或者其他逻辑结构的一部分的指令。可以实施这样的指令以执行任务、实现数据类型、转换一个或多个组件的状态、达到技术效果、或者以其他方式达到期望的结果。

所述逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。另外地或替代地,所述逻辑处理器可以包括一个或多个硬件逻辑电路或固件设备,其被配置为执行硬件实现的逻辑或固件指令。逻辑处理器602的处理器可以是单核或多核,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑处理器的个体组件可选地可以被分布在两个或更多个单独的设备之中,所述设备可以远程地定位和/或被配置用于协调处理。所述逻辑处理器的各方面可以由以云计算配置而配置的可远程访问的联网计算设备进行虚拟化并且执行。在这样的情况下,将理解,这些虚拟化方面在各种不同机器的不同物理逻辑处理器上运行。

非易失性存储设备604包括一个或多个物理设备,其被配置为保存由逻辑处理器可执行以实现在本文中所描述的方法和过程的指令。当实施这样的方法和过程时,非易失性存储设备604的状态可以变换——例如以保存不同的数据。

非易失性存储设备604可以包括可移动和/或内置的物理设备。非易失性存储设备904可以包括光学存储器(例如,CD、DVD、HD-DVD、蓝光光盘等)、半导体存储器(例如,ROM、EPROM、EEPROM、FLASH存储器等)、和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)、或者其他大容量存储设备技术。非易失性存储设备604可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址和/或内容可寻址的设备。将意识到,即使当非易失性存储设备604被断电时,非易失性存储设备604也被配置为保存指令。

易失性存储器603可以包括包含随机存取存储器的物理设备。易失性存储器603通常被逻辑处理器602用于在软件指令的处理期间临时存储信息。将意识到,当易失性存储器603被断电时,易失性存储器603通常不继续存储指令。

逻辑处理器602、易失性存储器603和非易失性存储设备604的各方面可以被集成在一起成为一个或多个硬件逻辑组件。这样的硬件逻辑组件可以包括例如现场可编程门阵列(FPGA)、特定于程序和应用的集成电路(PASIC/ASIC)、特定于程序和应用的标准产品(PSSP/ASSP)、片上系统(SOC)、以及复杂的可编程逻辑设备(CPLD)。

术语“模块”、“程序”、“机制”和“引擎”可以被用于描述计算系统600的一方面,计算系统600通常由处理器在软件中实现以使用易失性存储器的一部分来执行特定功能,所述功能涉及专门配置所述处理器来执行功能的转换性处理。因此,可以经由逻辑处理器602使用易失性存储器603的部分来执行由非易失性存储设备604保持的指令,来实例化模块、程序或引擎。将理解,可以根据相同的应用、服务、代码块、对象、库、例程、API、函数等来实例化不同的模块、程序、机制和/或引擎。类似地,可以通过不同的应用、服务、代码块、对象、例程来实例化相同的模块、程序、机制和/引擎。术语“模块”、“程序”、“机制”和“引擎”可以包含个体或成组的可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。

当被包括时,显示子系统606可以被用于呈现由非易失性存储设备604保存的数据的视觉表示。所述视觉表示可以采用图形用户界面(GUI)的形式。当在本文中所描述的方法和过程改变了由非易失性存储设备所保存的数据,并且因此转换了非易失性存储设备的状态时,显示子系统606的状态同样可以被转换为可视地表示基础数据中的变化。显示子系统606可以包括实际上利用任何类型的技术的一个或多个显示设备。这样的显示设备可以在共享外壳中与逻辑处理器602、易失性存储器603和/或非易失性存储设备604相组合,或者这样的显示设备可以是外围显示设备。

当被包括时,输入子系统608可以包括一个或多个用户输入设备或者与之接口,诸如键盘、鼠标、触摸屏或游戏控制器。在一些实施例中,所述输入子系统可以包括所选择的自然用户输入(NUI)组件或者与之接口。这样的组件可以是集成的或外围的,并且输入动作的转导和/或处理可以在板上或板外进行处理。示例性NUI组件可以包括用于语音和/或话语识别的麦克风;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感测组件;和/或任何其他合适的传感器。

当被包括时,通信子系统610可以被配置为将在本文中所描述的各种计算设备彼此以及与其他设备通信地耦合。通信子系统610可以包括与一种或多种不同的通信协议相兼容的有线和/或无线通信设备。作为非限制性示例,所述通信子系统可以被配置用于经由无线电话网络、或者诸如在Wi-Fi连接上的HDMI的有线或无线局域网或广域网进行通信。在一些实施例中,所述通信子系统可以允许计算系统600经由诸如互联网的网络向其他设备发送消息和/或从其他设备接收消息。

在本文中所使用的术语仅出于描述特定实施例的目的,并不旨在进行限制。如在本文中所使用的,单数形式“一”、“一个”和“该”也意图包括复数形式,除非上下文另外明确指出。将进一步理解的是,当在本说明书中使用时,术语“包括”、“包含”、“具有”、“含有”和/或“具有”指定存在所阐述的特征、整数、步骤、操作、元素和/或组件,但是不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、组件和/或其群组。

在所附权利要求中的对应结构、材料、动作以及所有功能元件的单元或步骤的等价物(如果有的话)旨在包括与具体要求保护的其他要求保护的元件组合地执行功能的任何结构、材料或动作。出于图示和描述的目的给出了该描述,但是并不意图以所公开的形式穷举或限制本发明。在不背离本技术的范围和主旨的情况下,许多修改和变型对于本领域普通技术人员将是显而易见的。选取和描述实施例是为了最好地解释本技术的原理和实际应用,并且使得本领域的其他普通技术人员能够理解具有各种修改的各种实施例的技术,这些修改适合于预期的特定用途。

尽管已经描述了特定实施例,但是本领域技术人员将理解,存在等同于所描述的实施例的其他实施例。因此,应当理解,该技术并不限于所图示出的特定实施例,而是仅由所附权利要求的范围来限制。

概念

概念1、提供了一种用于渲染信道响应的系统。所述系统包括:处理器和存储器。模板库被存储在所述存储器中。所述模板库包括多个卡模板,所述多个卡模板用于将实体渲染为在不同信道中的卡以执行机器人的机器人技能。所述多个卡模板中的每个卡模板包括实体数据被绑定到的一个或多个实体属性,并且所述多个卡模板包括针对不同实体和针对不同信道的不同卡模板,从而能够在针对执行机器人技能的机器人的多个不同信道中渲染实体以及其对应的实体属性。机器人平台程序是在处理器上执行的。所述机器人平台程序可以被配置为:从通过所述多个不同信道中的信道进行通信的计算设备接收调用所述机器人的机器人技能的输入。所述机器人服务器平台程序还可以被配置为:根据所述输入来确定待渲染为卡的实体以执行所述机器人的机器人技能。所述机器人服务器平台程序还可以被配置为:从所述模板库中,从所述多个卡模板中选择卡模板,至少基于所述信道和待渲染以执行所述机器人的机器人技能的实体来选择卡模板。所述机器人服务器平台程序还可以被配置为:将所述实体数据绑定到所选择的卡模板的一个或多个实体属性,并且生成信道响应。所述机器人服务器平台程序还可以被配置为将信道响应发送到所述信道。

概念2、任意先前和/或随后的(一个或多个)概念的系统,其中,所述多个卡模板包括用于在单个信道的不同画布中将所述实体渲染为卡的不同卡模板。

概念3、任意先前和/或随后的(一个或多个)概念的系统,其中,所述多个卡模板还包括不同的卡模板,所述不同的卡模板用于在包含单个实体的卡中渲染所述实体,以及用于在包含超过一个实体的卡中渲染所述实体。

概念4、任意先前和/或随后的(一个或多个)概念的系统,其中,所述实体数据是动态内容,并且所述机器人服务器程序还被配置为从机器人服务接收所述动态内容。

概念5、任意先前和/或随后的(一个或多个)概念的系统,其中,所述多个卡模板包括一个或多个模板,所述一个或多个模板用于将待渲染的所述实体渲染为具有由所述信道指定的格式的视觉卡。

概念6、任意先前和/或随后的(一个或多个)概念的系统,其中,所述多个卡模板包括用于将所述实体渲染为语音卡的一个或多个模板。

概念7、任意先前和/或随后的(一个或多个)概念的系统,其中,所述多个卡模板包括具有HTML内容的一个或多个模板。

概念8、任意先前和/或随后的(一个或多个)概念的系统,其中,所述机器人服务器程序还被配置为:当所选择的卡模板包括HTML内容时:调用模板引擎以生成所述HTML内容的图像;生成指向所述图像的存储位置的统一资源定位(URL);在所述信道响应中发送所述URL;以及将所述图像存储在所述存储位置中。

概念9、任意先前和/或随后的(一个或多个)概念的系统,其中,所述系统还包括:高速缓存,其用于高速缓存绑定的卡模板,其中,实体数据在先前时间已经被绑定到卡模板,并且所述机器人服务器程序还被配置为:确定在针对待渲染的所述实体的所述高速缓存中是否存在绑定的卡模板,并且如果所述绑定的卡模板在所述高速缓存中,则从所述高速缓存中取回所述绑定的卡模板。

概念10、任意先前和/或随后的(一个或多个)概念的系统,其中,实体是在类级别层级中组织的,并且所述机器人服务器程序还被配置为:当在所述模板库中不存在针对待渲染的所述实体的卡模板时,确定在针对待渲染的实体为子类的类级别层级中是否存在基类实体的模板;以及如果存在针对基类实体的卡模板,则通过将所述实体数据绑定到针对基类实体的卡模板的一个或多个实体属性来渲染信道响应。

概念11、提供了一种用于由机器人平台渲染信道响应的方法。所述方法可以包括:从通过信道进行通信的计算设备接收输入。所述方法还可以包括:根据所述输入来确定待渲染的实体以便执行由所述输入调用的机器人的机器人技能;所述实体具有与其相关联的多个卡模板用于渲染在不同信道中的卡中的实体,并且所述实体具有在所述多个卡模板的每个卡模板中表示的一个或多个实体属性。所述方法还可以包括:从所述多个卡模板中选择卡模板用于渲染所述卡中的所述实体,所述卡模板是至少基于所述信道和待渲染的所述实体来选择的。所述方法还可以包括:将实体数据绑定到所选择的卡模板的所述一个或多个实体属性,并且生成信道响应。所述方法还可以包括:将所述信道响应发送到所述信道。

概念12、任意先前和/或随后的(一个或多个)概念的方法,其中,所述卡模板是进一步基于要在其中渲染所述实体的画布来选择的。

概念13、任意先前和/或随后的(一个或多个)概念的方法,其中,所述卡模板是进一步基于在单个卡中渲染的实体的数量来选择的。

概念14、任意先前和/或随后的(一个或多个)概念的方法,其中,所述实体数据是动态内容,并且所述方法还包括从机器人服务接收所述动态内容。

概念15、任意先前和/或随后的(一个或多个)概念的方法,其中,选择卡模板包括:为具有适合于所述信道的特定格式的视觉卡选择卡模板。

概念16、任意先前和/或随后的(一个或多个)概念的方法,其中,选择卡模板包括:为具有适合于所述信道的特定格式的语音卡选择卡模板。

概念17、任意先前和/或随后的(一个或多个)概念的方法,其中,选择卡模板包括选择具有用于在所述信道中显示的HTML内容的卡模板。

概念18、任意先前和/或随后的(一个或多个)概念的方法,其中,选择卡模板包括选择具有用于在所述信道中显示的HTML内容的卡模板概念18、任意先前和/或随后的(一个或多个)概念的方法,其中,所述方法还包括:调用模板引擎以生成HTML内容的图像;接收基于所述HTML内容生成的图像;以及存储所述图像并且生成针对所存储的图像的统一资源定位(URL)。

概念19、任意先前和/或随后的(一个或多个)概念的方法,还包括:确定是否高缓存了用于所选择的卡模板的绑定的模板,并且如果所述绑定的模板在所述高速缓存中,则从所述高速缓存中取回所述绑定的模板并且生成所述信道响应。

概念20、任意先前和/或随后的(一个或多个)概念的方法,其中,实体是在类级别层级中进行组织的,并且所述方法还包括:当从所述多个卡模板中选择卡模板时:当不存在针对实体的模板时,确定在所述实体为子类的所述类级别层级中是否存在针对基类实体的模板;以及如果存在针对基类实体的模板,则将所述实体数据绑定到针对更高类的所述模板的所述一个或多个实体属性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号