使用被设计为与服务应用接口的多个聊天服务器来管理客户关系的制作方法

文档序号:21108471发布日期:2020-06-16 21:32阅读:281来源:国知局
使用被设计为与服务应用接口的多个聊天服务器来管理客户关系的制作方法

优先权要求

本专利申请与于2018年4月20日提交的标题为“managingcustomerrelationshipusingmultiplechatserversdesignedtointerfacewithserviceapplications”的美国非临时专利申请序列no.15/957,932相关并要求其优先权,该申请与本专利申请的申请人相同。

本公开涉及客户关系管理(crm),并且更具体地涉及使用被设计为与服务应用接口的多个聊天服务器来管理客户关系。



背景技术:

聊天服务器一般可在诸如万维网(www)之类的网络上访问并基于类似于自然语言的格式的输入进行操作。在常见的场景中,聊天服务器从最终用户(人类)接收输入并以交互方式提供对应的响应。聊天服务器在形成相应的响应时可以采用诸如人工智能之类的技术,这在相关领域中也是众所周知的。

聊天服务器常常被设计为与服务应用接口,通常用于为最终用户提供增强的功能或方便的用户界面。服务应用的示例包括旅行应用、天气应用、宾馆预订应用等。

在常见的场景中,聊天服务器取决于与最终用户的交互式对话中的具体上下文来调用由适当的服务应用提供的服务。例如,如果最终用户参考旅行进行在线聊天对话,那么聊天服务器可以使用与旅行、天气等相关的服务应用的服务来为最终用户服务。

本公开的各方面针对使用被设计为与服务应用接口的多个聊天服务器来管理客户关系。

附图说明

将参考下面简要描述的附图来描述本公开的示例实施例。

图1a是图示其中可以实现本公开的若干方面的示例环境的框图。

图1b是图示现有方法的框图,其中最终用户与多个聊天服务器接口。

图2是图示示例实施例中本公开的一些特征的框图。

图3是图示根据本公开一方面的使用多个聊天服务器来管理客户(最终用户)关系的方式的流程图。

图4是图示根据本公开实施例的接口单元的内部体系架构的框图。

图5a-图5j一起描绘了在一个实施例中在接口单元中实现的样本配置数据。

图6a-图6c描绘了本公开一个实施例中的示例用户界面。

图7a-图7c描绘了在每个阶段与图6a-图6c的用户界面体验对应的事件。

图8是图示数字处理系统的细节的框图,其中本公开的各方面通过适当可执行模块的执行而可操作。

在附图中,相同的附图标记一般指示完全相同、功能相似和/或结构相似的元件。元件首次出现的附图由对应附图标记中最左边的(一个或多个)数位表示。

具体实施方式

1.概述

根据本公开一方面提供的接口单元促进在单个聊天会话中基于多个聊天服务器为用户提供服务。在实施例中,接口单元在聊天会话上从用户接收对于聊天对话的请求、识别用于该聊天对话的第一合适的聊天服务器,并将从最终用户接收到的关于该聊天会话的第一输入序列转发到第一合适的聊天服务器。作为结果生成的消息将作为对应的响应转发回最终用户。接口单元然后将接收到的第二输入序列转发到第二聊天服务器,以接收与第二输入序列对应的第二消息序列。接口单元将第二消息序列作为对第二输入序列的相应响应转发。

根据本公开的另一方面,接口单元的操作由可以由管理员配置的配置数据控制。在实施例中,配置数据指示可用于多个广泛目的中的每个广泛目的的聊天服务器的相应集合。第一输入序列和第二输入序列中的每一个被封装在相应的网络分组中,其中目的地字段指示该网络分组在接口单元处终止。第一消息序列和第二消息序列中的每一个被封装在相应的分组中,其中源字段指示该分组起源于接口单元。配置数据指示第一聊天服务器和第二聊天服务器出于第一广泛目的而被包含在第一聊天服务器集合中。接口单元检查配置数据,以确定第一输入序列将被转发到第一聊天服务器并且第二输入序列将被转发到第二聊天服务器。

根据本公开的又一方面,配置数据还指示针对在聊天对话中表现的各个多个意图中的每个意图所需的相应动作。接口单元可以确定在聊天对话中的对应时间实例处表现出的当前意图的序列,以及通过检查配置数据来确定针对每个当前意图要执行的相应动作。接口单元可以执行确定的对应动作。

根据另一方面,输入和消息中的每一个均根据自然语言,其中以自然语言将输入转发到聊天服务器集合,并且也以自然语言从聊天服务器集合接收消息。在实施例中,每个意图由对应的聊天服务器与响应分组一起提供。在另一个实施例中,从第一聊天服务器到第二聊天服务器的切换基于配置数据中的条目。

根据另一方面,在完成第一目的的处理后,接口单元将表示聊天事务的当前状态的元数据集合转发到聊天服务器集合中的每一个,作为服务于第一目的的一部分。接口单元取决于从聊天服务器集合中的每一个接收到的相应响应来确定合适的聊天服务器的集合,并将合适的聊天服务器的集合中的一个设置为第二聊天服务器。

为了说明,下面参考示例描述本公开内容的若干方面。但是,相关领域的技术人员将认识到,本公开内容可以在没有一个或多个具体细节的情况下或者利用其它方法、部件、材料等来实践。在其它情况下,未详细示出众所周知的结构、材料或操作,以避免模糊本公开内容的特征。此外,所描述的特征/方面可以以各种组合来实践,但是为了简洁在此仅描述一些组合。

2.示例环境

图1a是图示其中可以实现本公开的若干方面的示例环境的框图。示出的框图包含客户端系统110a-110m(其中m可以是任何正整数)、web服务器120a-120n(其中n可以是任何正整数)、通信网络125和云基础设施135。云基础设施135进而被示为包含crm系统130a-130q(其中q可以是任何正整数)、定制服务提供商145a-145s(其中s可以是任何正整数)和聊天服务器140a-140p(其中p可以是任意正整数)。

仅仅为了说明,在图1a中仅示出了代表性数量/类型的系统。许多环境常常包含在数量和类型上都多得多的系统,这依赖于环境被设计的目的。下面更详细地描述图1的每个方框。

通信网络125表示提供web服务器120a-120n、客户端系统110a-110m和云基础设施135之间的连接性的网络。通信网络125可以是互联网(包括全球连接的互联网)、互联网和内联网的组合等。可以使用诸如在相关领域中是众所周知的传输控制协议(tcp)和/或互联网协议(ip)之类的协议来实现通信网络125。

一般而言,在tcp/ip环境中,tcp/ip分组被用作基本运输单位,其中源地址被设置为指派给分组源自的源系统的tcp/ip地址,并且目的地地址被设置为分组最终被递送到的目标系统的tcp/ip地址。当将分组的目的ip地址设置为目标系统的ip地址时,该ip分组被说成定向到目标系统,使得最终通过通信网络125将分组递送到目标系统。当分组包含指定目标应用的内容(诸如端口号)时,分组也可以被说成定向到这种应用。

客户端系统110a-110m中的每一个表示用户使用来与聊天服务器140a-140p和crm系统130a-130q进行交互的系统,诸如终端、个人计算机、工作站、移动设备、计算平板电脑等。与聊天服务器的聊天以“自然语言”进行,这意味着对应的内容以人类通常使用的交流方式使用语言来表示,诸如英语、德语、法语、西班牙语、印地语和卡纳达语。

关于聊天,可以使用ip分组来实现接口,其中来自客户端系统的分组被定向到相应聊天服务器处的聊天服务器,并且来自聊天服务器的分组被定向到相应的客户端系统。类似地,ip分组也可以被用于与crm系统接口,但是根据用于对应交互的合适接口。

web服务器120a-120n中的每一个表示向外部系统提供服务的服务器,诸如web/应用服务器。在说明性实施例中,假设web服务器120a-120n实现由聊天服务器访问的各种旅行相关的服务,诸如航班预约、宾馆预订、出租车预约等,但是web服务器可以实现并提供在对应环境中合适的任何服务。

云基础设施135被示为托管客户关系管理(crm)系统130a-130q和聊天服务器140a-140p。如相关领域中众所周知的那样,云基础设施135一般使得能够通过互联网对crm系统130a-130q和聊天服务器140a-140p的共享池进行普遍访问。

聊天服务器140a-140p实现聊天服务器,其使得能够以自然语言进行用户交互。因此,每个聊天服务器以自然语言接收输入并且还以自然语言生成输出。(以自然语言)生成的输出被转发到对应的客户端系统。

crm系统130a-130q表示常规系统,其在形式上补充对客户(最终用户)关系的管理。每个crm系统通常被用于维护各种客户(最终用户)的身份和联系信息,以及管理与任何购买、订阅、问题或营销工作相关的客户交互。

定制服务提供商145a-145s是可通过互联网访问的公共web服务。一些示例性定制服务提供商是天气预报服务、地图服务等。

关于最终用户可以使用聊天服务器的方式以及这种方法的问题继续描述。

3.现有方法

图1b是图示现有方法的框图,其中最终用户与多个聊天服务器接口。该框图被示为包含最终用户150、聊天服务器160a-160c和效用服务器170a-170c。

在现有方法中,聊天服务器被配置为与一个或多个效用服务器交互并向最终用户150(来自客户端系统110a-110m之一)提供响应。效用服务器是为最终用户提供服务的web应用。例如,效用服务器可以包括提供旅行预订服务、宾馆预订服务、天气更新服务的web应用。

作为示例,聊天服务器1160a被示为与两个效用服务器(即,旅行服务器170a和宾馆服务器170b)接口。因而,聊天服务器1160a被配置为至少向最终用户150提供关于旅行预订和宾馆预订服务的信息。

类似地,聊天服务器2160b被示为与一个服务器(即,宾馆服务器170b)接口。因而,聊天服务器2160b被配置为仅向最终用户150提供宾馆预订服务。

以类似的方式,聊天服务器3160c被示为与一个服务器(即,天气服务器170c)接口。因此,聊天服务器3160c被配置为仅向最终用户150提供天气预报服务。

这种先有方法涉及若干挑战。一个挑战是被配置为与一个或多个效用服务器接口的单个聊天服务器可能无法满足用户的需求。例如,由供应商提供的被配置为与旅行服务和宾馆服务接口的聊天服务器1160a可能不能满足提供天气预报服务的要求。类似地,由另一个供应商提供的被配置为与天气预报服务器170c交互的聊天服务器3160c可能不能提供宾馆服务或旅行服务。换句话说,现有方法无法提供用于集成由不同供应商提供的多个聊天服务器的解决方案。另一个挑战是现有方法缺乏将聊天服务器与客户关系管理(crm)应用系统集成在一起的方法。现有方法中的另一个挑战是聊天服务器之间缺乏集成。换句话说,在聊天对话期间,聊天服务器1160a不与聊天服务器2160b和/或聊天服务器3160c共享任何元数据,因而不会生成用户可能感兴趣但不是用户请求的一部分的附加选项。

本公开的各方面提供了一种使用被设计为与服务应用接口的多个聊天服务器来管理客户关系的方法。

4.示例实施例的框图

图2是图示示例实施例中本公开的一些特征的框图。示出的框图包含最终用户150、接口单元250、聊天服务器260a-260p、crm系统280a-280q和定制服务提供商270a-270s。

最终用户150使用聊天客户端与接口单元250交互。示例性聊天客户端包括facebookmessengertm、whatsapptm、linetm和wechattm。最终用户150和接口单元250之间的交互是双向通信,如245所表示的。

聊天服务器260a-260p中的每一个可以类似于聊天服务器160a-160c进行操作,并且与后端中的各种服务进行接口(虽然未示出)。换句话说,每个聊天服务器260a-260p在相应的路径256a-256p上接收自然语言的输入、适当地使用(调用)由效用服务器170a-170c提供的服务,并且还以自然语言在路径256a-256p中对应的一个上生成响应。在下面的描述中,聊天服务器260a-260p中的每一个被实现为聊天机器人(例如,dialogflow产品)或启用ai(人工智能)的处理引擎(例如,相关领域中众所周知的clarifai应用),因而能够以自然语言提供自动响应。此外,聊天服务器260a-260p中的每一个还能够提供附加信息(以下解释的“意图”)作为响应的一部分。

虽然未示出,但是每个聊天服务器可以能够直接向最终用户提供聊天会话,而无需分组内容遍历接口单元250。在这种情况下,输入/输出接口也可以类似于在路径256a-256p上接收/发送的分组。

定制服务提供商270a-270s中的每一个以与定制服务提供商145a-145s类似的方式通过互联网提供公共可用的web服务。crm系统280a-280q中的每一个以与crm系统130a-130q类似的方式管理客户(最终用户)关系。

根据本公开一方面提供的接口单元250在单个聊天会话中向最终用户150提供响应时与多于一个的对话服务器(当需要时)接口。单个聊天会话的特征在于以无缝的方式在对应的单个窗口中显示的消息序列(在任一方向上)(即,不要求用户采取任何动作在聊天服务器之间进行切换)。消息序列描绘对话中的用户输入和对应的响应(来自聊天服务器)。假设每个消息都包含在一个分组中(具有对应的tcp/ip报头)。

因此,接口单元250能够在与最终用户交互时利用任何聊天服务器的服务能力。接口单元250可以与具有与天气服务器170c的接口能力的聊天服务器3以及与具有与旅行服务器170a和宾馆服务器170b的接口能力的聊天服务器1进行交互,以在单个聊天会话上提供对单个最终用户(客户端系统)的响应。至少出于这样的原因,可以解决上面关于图1b提到的(一个或多个)问题。

每个用户输入可以是单个消息或消息的集合。在实施例中,假设用户输入是单个消息,那么该单个消息可以由多个系统处理(例如,由聊天服务器260a-260p、crm系统280a-280q和/或定制服务提供商270a-270s中的任何一个处理)以提供来自多个系统的响应。换句话说,一个或多个聊天服务器、crm系统和/或定制服务提供商可以无缝地处理单个用户输入以生成相应的消息,所有消息均作为对单个用户输入的响应而提供。

在实施例中,来自客户端系统110a-110m的分组被定向到接口单元250(在一个方向上),该接口单元进而将内容转发到适当的聊天服务器。接口单元250基于来自对应聊天服务器的消息响应来构造分组,并且在相反的方向上将这样构造的分组转发回发出请求的客户端系统(最终用户150)。相反的方向上的分组起源于接口单元250(根据ip协议)并且终止于客户端系统110a-110m。但是,如相关领域的技术人员通过阅读本文提供的公开内容将显而易见的,可以使用其它方法来实现替代实施例。

在另一个实施例中,使用管理员可定义/可配置的规则来控制接口单元250的操作,这简化了在对应上下文中合适的附加聊天服务器的集成。关于接口单元250的这种基于规则的实施方式继续描述。

4.基于规则的接口单元

图3是图示根据本公开一方面的使用多个聊天服务器(被设计为与服务器接口)来管理客户关系的方式的流程图。仅出于说明的目的而针对图2的接口单元250和聊天服务器260a-260p描述流程图。但是,在不脱离本发明的多个方面的范围和精神的情况下,其中许多特征也可以在其它环境中实现,如相关领域的技术人员通过阅读本文提供的公开内容将显而易见的。

流程图开始于步骤301,其中控制立即转到步骤310。在步骤310中,接口单元250维护配置数据,该配置数据指示可用于每个广泛目的的聊天服务器,以及在针对那个广泛目的的聊天对话中来自最终用户的消息识别出具体意图时需要采取的动作。广泛目的是指最终用户可能感兴趣的广泛服务/效用(可从单个服务提供商处获得)。每个广泛目的可以是旅行预订目的、宾馆预订目的、出租车预订目的等。在图1b中示出了由对应的效用服务器170a-170c实现的每个广泛目的。

意图表示最终用户当前正在与聊天服务器进行交互(经由交互单元250)的聊天对话的可识别状态。基于由接口单元250识别出的意图,可以触发对应的动作。在下面描述的实施例中,“意图”由聊天服务器确定并且被传送到接口单元250。在没有聊天服务器260a-260p传送的意图的情况下,为了简洁起见,意图被称为“空白意图”。配置数据指示出于对应目的在聊天的上下文中每个此类意图所需的操作。可以基于各种方法(在聊天服务器、接口单元和/或外部系统中实现)确定意图,尽管以下描述的(一个或多个)实施例为此目的而依赖从聊天服务器传送的唯一意图密钥。

在步骤320中,接口单元250以自然语言接收来自最终用户150的聊天对话的请求。该请求也可以指定广泛目的。在步骤340中,接口单元250检查配置数据以确定该控制将被转移到的合适的聊天服务器。接口单元250可以相应地选择在配置数据中指示为具有与请求中指定的广泛目的对应的服务能力的聊天服务器之一。

在步骤350,控制被转移到所确定的聊天服务器。转移控制意味着接口单元250此后将关于聊天对话的每个接收到的输入转移到所确定的聊天服务器并接收对应的响应。接口单元250将聊天对话的每个响应转发到从其接收请求的同一客户端系统(最终用户)。

在步骤360中,接口单元250确定在对话中表现出的意图。通过检查关于对话的请求/响应来确定意图。可以使用诸如人工智能(ai)之类的技术,尽管以下描述的实施例取决于聊天服务器生成的意图状态。意图的示例在以下各节中描述的配置数据中示出。

在步骤370中,接口单元250基于配置数据识别在具体意图被传送时需要采取的动作。此后,如下所述在步骤380和390中执行该动作。

在步骤380中,接口单元250检查所确定的动作是否是结束对话。在那种情况下,控制转移到步骤399,其中流程图结束。否则,控制转到步骤390。

在步骤390中,接口单元250执行识别出的动作,然后控制转移到步骤360。这种动作也可以是将控制转移到其它聊天服务器,这意味着接口单元250能够在同一聊天会话中使用所需数量的不同聊天服务器(如最终用户所经历的,通常是在为聊天会话建立的对应的单个窗口中)。类似地,如上所述,通过适当选择配置数据,可以生成多个消息(每个消息来自不同的聊天服务器)作为对单个消息的响应。

可以在对应的实施例中使用不同的方法来实现上述特征。关于示例实施例的细节继续描述。

5.接口单元的示例内部体系架构

图4是图示实施例中的接口单元250的细节的框图。示出的接口单元250包含配置数据405、主控制器410、逻辑控制器440a-440x、辅助模块420a-420(p+q)、引擎模块460a-460(p+q)。每个方框在下面进一步详细描述。

配置数据405可以存储在一个或多个文件中,并且控制接口单元250的操作。从下面的描述中将更加清楚,配置数据是可编辑和可修改后的,以便能够出于任何广泛目的而添加或删除聊天服务器或crm系统(以及相对于各个系统更改操作)。

主控制器410根据在配置数据405中指定的配置将在传入的聊天会话中接收到的分组传送到逻辑控制器440a-440x之一(其中x可以是任何正整数)。当最初建立聊天会话时,该会话根据配置数据被分配给逻辑控制器之一(和具体的聊天服务器)。主控制器410类似地从所分配的逻辑控制器接收分组并将分组转发到通信网络125,以使分组被递送到对应的客户端系统。因而,主控制器410维护聊天会话表,该聊天会话表指示当前(在那个时间点)向其分配了聊天会话的逻辑控制器和聊天服务器。

主控制器410还确定何时为会话改变逻辑控制器和/或聊天服务器(在更新聊天会话表之前),并相应地编排改变。在实施例中,主控制器410基于与每个响应相关联的配置数据和接收到的当前意图来确定何时/是否需要改变。当确定改变是必需的时,主控制器410将聊天会话的当前上下文转发到逻辑控制器440a-440x中的每一个,逻辑控制器440a-440x将这种上下文转发到相应的聊天服务器。这种上下文可以作为表示到目前为止在聊天会话上交换的素材数据的元数据发送。

可以检查来自每个聊天服务器的响应,以确定最合格的聊天服务器为下一个聊天服务器。在实施例中,来自聊天服务器的每个响应指示“权重”值,基于该“权重”值确定资格(eligibility)的程度。从其接收到最高值的聊天服务器可以被选为最合格的聊天服务器。聊天会话表可以相应地被更新以无缝地继续用户与新选择的聊天服务器的交互。

逻辑控制器440a-440x与x个(不同的)广泛目的对应,并且实现特定于对应广泛目的的任何附加逻辑。因此,在说明性示例中,可以分别提供单独的逻辑控制器以用于旅行、出租车、宾馆等的预约。在实施例中,如果逻辑控制器选择使用多于一个聊天服务器用于给定的广泛目的,那么逻辑控制器确定用于聊天会话的具体聊天服务器或crm系统,并且对于关于那个聊天会话的分组与对应的帮助器模块进行交互。

帮助器模块420a-420(p+q)促进在逻辑控制器和引擎模块之间的交互中包括定制逻辑。例行定制功能可以包括任何需要的数据转换(例如,xml到pdf等)以及促进与先前版本的兼容性的包装器功能等。

每个引擎模块460a-460(p+q)被设计为与聊天服务器260a-260p和crm系统280a-280q中对应的一个接口。每个引擎模块可以从从通信网络125接收的网络分组中剥离分组报头,并且附加适于将所得的云分组转发到对应的聊天服务器/crm系统的报头。每个引擎模块可以操作以提供与对应的聊天服务器/crm系统的任何其它分组/协议兼容性。

类似地,当从聊天服务器/crm系统接收到云分组时,引擎模块会将接收到的内容重新打包到适合递送到对应客户端系统的网络分组中。因而,每个引擎模块在网络125侧维护tcp/ip会话信息与在云侧的对应会话信息的会话映射,以实现在两个方向上都需要的重新打包。

在实施例中,每个聊天服务器和crm系统以针对用户的每个输入内容的响应内容和意图进行响应(转发到聊天服务器/crm系统)。根据本公开的各方面,意图也被传递给帮助器模块以采取适当的动作。通过阅读本公开,当将接收到的意图作为当前意图传递给帮助器模块时,用于确定这种当前意图的各种技术将是相关领域的技术人员显而易见的,其中一些基于根据先前通信的状态的持久性。如上所述,当前意图被发送回主控制器410,主控制器410确定关于相关联的(网络)分组等的进一步动作。

因此,可以认识到的是,配置数据405控制由接口单元250执行的许多动作。因而,在示例实施例中,关于样本配置数据继续描述。

5.样本配置数据

图5a-图5j一起描绘了在一个实施例中在接口单元中实现的样本配置数据。配置数据是根据json格式,其在互联网工程任务组(ietf)的t.bray所写的标题为“rfc8259:thejavascriptobjectnotation(json)datainterchangeformat”的文档中进行了详细描述。

广泛地说,为了说明,样本配置数据的定义仅出于三个广泛目的,即旅行、宾馆和出租车预订服务。通过阅读本文提供的公开内容,适于对应环境的配置数据的其它部分对于相关领域的技术人员将是显而易见的。

广泛地说,图5a-图5g的方框510、520、528、530、540、550和560分别涉及控制与聊天服务器260a-260c的通信。图5h的方框570涉及与crm系统258a-258q的接口。图5i的方框580涉及与定制服务提供商270a-270s的接口。图5j的方框590涉及可以使用客户端系统110a-110m访问接口单元250的各种类型的聊天客户端。每个方框在下面详细描述。

图5a的方框510指示数据部分与“旅行”目的相关,并且存在两个可用于旅行目的的聊天服务器(图5a的子方框511中的travel.ai和图5a的子方框512中的image.ai)。图5a的子方框513指示优先级为1,这意味着与具有更高优先级编号的其它模块相比,该旅行模块将被用作默认模块。子方框514指示“module1”逻辑控制器(假设为逻辑控制器440a)可以被主控制器410调用以用于旅行预约目的。

图5a的方框511和512中的每一个包含指示名称、描述(输入格式)、应用id、用于让相应引擎模块登录和使用由聊天服务器提供的服务的用户id/密码、在对应的聊天对话中表达的“意图”方框的标识符、以及被聊天客户端视为访问聊天服务器的url的文本。

图5a的方框511中的输入格式被示为nlp(自然语言处理),而图5a的方框512中的输入格式被示为图像。图5a的行515和516分别指示要在标记为“intents_1”(对于travel.ai)和“intents_2”(对于image.ai)的子模块中定义的意图。这两个子模块分别被示为图5d的方框530和图5e的方框540。

与(行515的)“intents_1”对应的图5d的方框530被示为包含分别在图5d的子方框531-535中描绘的五个意图。每个子方框被示为包含报头唯一意图键(为了与来自针对该子方框适用的聊天服务器的传入意图匹配而需要)、要在逻辑控制器中调用的功能的“名称”以及权重。权重被用作调用所命名的功能的阈值数字(例如,仅当接收到的权重超过指定的权重时)。

因此,子方框531被示为具有报头唯一意图键“start_intent”,“start”作为要在“intents_1”文件中调用的功能(如行515所指示的),以及0.7作为权重。类似地解释方框530的其余子方框532-535、方框540的子方框541-542、方框550和560的子方框。与上述相似地解释图5b的方框520和图5b的子方框521-524,并且为了简洁起见,不再重复描述。

分别继续参考图5h和5i的方框570和580,图5h的子方框571描绘了可以用于旅行目的的crm系统,并且图5h的子方框572描绘了可以用于宾馆目的的crm系统。每个子方框被示为包含名称、描述、应用id、用户id/密码组合(用于登录)。

图5i的方框580包含两个子方框581和582,其分别示出了可以使用rest/soap体系架构将消息发布到定制服务提供商(例如定制服务提供商270a和270b)和从其检索消息的方式。

图5j的方框590包含用于acme和beta分别作为文本和语音聊天客户端的两个子方框591和592。子方框591指示文本聊天客户端将作为acme网站/网页的一部分提供。每个子方框还指示与聊天客户端通信所需的凭证/端点细节。

下面举例解释在上述体系架构中使用这种配置数据的方式。

6.单个聊天会话的样本事务

图6a-图6c描绘了在本公开示例中提供的样本用户界面。图6a和图6b描绘了在2018年3月20日作为聊天会话的一部分提供的用户界面,而图6c描绘了在2018年3月28日作为另一个聊天会话的一部分提供的用户界面。

在与图6a和图6b对应的示例中,根据本公开的各方面,客户端系统110a处的最终用户被示为预订旅行票,然后无缝地向其提供使用不同聊天服务器预订宾馆的选项。例如,在图6a-图6c所示的acme网站中,当最终用户在图标/链接上点击(虽然未示出)时,为最终用户显示聊天客户端窗口显示600。acme聊天客户端窗口600包含去往/来自最终用户之间的所有消息的显示。

图7a和图7b描绘了在每个阶段与图6a和6b的用户界面体验对应的事件。图7c描绘了在每个阶段与图6c的用户界面体验对应的事件。

图7a-图7c被示为具有在图5a-图5k的配置数据中调用的各种文件/模块,以及在各种模块内实现的一些内部可执行模块。逻辑控制器440a-440x的模块被示为实现为.js文件。例如,在图7a-图7c中,逻辑控制器1440a的模块1和意图1被视为分别被实现为module1.js和intent1.js。帮助器模块(travel.ai帮助器420a、image.ai帮助器420b和osvccrm帮助器420c)被实现为java脚本中的类。引擎模块(travel.ai引擎460a、image.ai引擎460b和osvccrm引擎460c)可以以javascript库、javatm存档(jar)文件、其它编程语言等形式实现。

在601处,来自acme聊天客户端的最终用户被示为已经输入“您好”,其被表示为到主控制器410的事件701。响应于此,主控制器410被示为在702处调用了逻辑控制器1440a的module1.js(鉴于主控制器410解析子方框514)以处理网络分组/内容。鉴于子方框591,主控制器410触发从网络分组报头中的请求主体获取customerid的处理。

主控制器410更新内部聊天会话表以指示当前聊天会话被分配给逻辑控制器1440a。事件703描绘了travel.ai帮助器420a的调用(根据逻辑控制器1440a的实现来选择),其进而被示为在事件704中调用travel.ai引擎460a以处理网络分组。

travel.ai引擎460a剥离网络分组的报头,并且分组内容(包括“您好”)与聊天服务器260a的要求一致地被封装。travel.ai引擎在需要时检查配置数据以获取url、用户名和密码(子方框511),并且在事件705处将封装的分组(云分组)发送到与travel.ai帮助器420a对应的聊天服务器260a。为了使网络分组能够在相反的方向上重建,引擎模块更新会话映射。

在706处,聊天服务器260a被示为检查封装的分组并向travel.ai引擎460a转发假设表示文本“您好,请告知我有什么可以帮助您的”以及意图“+start_intent”的响应(传送意图)。

在事件707处,travel.ai引擎460a封装与travel.ai帮助器420a的要求一致的聊天服务器260a的响应(以及“+start_intent”)。此后,travel.ai引擎460a使用会话映射将封装的响应分组转发到travel.ai帮助器420a。在事件708处,travel.ai帮助器将封装的响应分组转发到逻辑控制器1440a的module1.js。

逻辑控制器的module.js/intent.js将上下文数据附加到从帮助器模块接收的封装响应分组中。上下文数据指示处理响应分组的逻辑控制器的模块和引擎。在709处,逻辑控制器1440a的module1.js将上下文数据附加到封装的响应包,从而指示封装的响应包已由module1和travel.ai引擎处理。此后,附加的响应分组被转发到主控制器410。

主控制器410识别附加的响应分组中的意图。此后,主控制器截断意图和上下文数据,在(根据配置数据并基于上下文数据选择的对应逻辑控制器的)intent.js中调用适当的过程,并将附加的响应与在事件702处获取的数据一起转发到适当的过程。

在710处,主控制器在附加的响应分组中识别意图“start_intent”并截断该意图。鉴于附加的响应分组中的上下文数据,主控制器410意识到截断的响应分组已经由travel.ai引擎和module1处理。在截断上下文数据之后,主控制器410解析(子方框511的)行515。其中的配置数据指示主控制器解析(方框530的)子方框531,以确定接下来要调用的intent1.js的过程“start”。因而,主控制器410将截短的响应分组与customerid(在702处获取)一起转发到(逻辑控制器1440a的)intent1.js的“start”。

响应于此,事件711描绘了osvccrm帮助器420c的调用(根据逻辑控制器1440a的实现来选择),其进而被示为在712处调用osvccrm引擎460c以处理识别出的意图。

每个引擎和帮助器都以适于如上所述的对应聊天服务器/crm系统的方式封装和重建网络分组或响应分组。为了简洁起见,不重复网络分组的封装和响应分组的重建。

在713处,osvccrm引擎460c在需要时检查配置数据以获取url、用户名和密码(子方框571)并与crm系统1280a接口。此后,osvccrm引擎460c将截断的响应分组发送到crm系统1280a。

在714处,crm系统1280a将响应(包含基于在702处获取的customerid从crm系统1280a检索到的最终用户的细节)转发到osvccrm引擎460c。

在715处,osvccrm引擎460c将响应从crm系统1280a转发到osvccrm帮助器420c,后者进而在事件716处转发到(逻辑控制器1440a的)intent1.js的“start”。

在717处,(逻辑控制器1440a的)intent1.js的“start”从crm系统1280a的响应中提取最终用户的姓名(例如,johndoe),并构造要发送到最终用户的问候消息。此后,(逻辑控制器1440a的)intent1.js的“start”将构造的响应消息发送到主控制器410。

在事件718处,主控制器410将重建的响应消息转发到与最终用户相关联的对应的acme聊天客户端。因而,重建的响应消息“您好,johndoe,请告知我有什么可以帮助您的?”在602处显示在最终用户的acme聊天客户端窗口上。

响应于此,在603处,用户被示为已经输入“我想预订从迪拜飞往纽约的航班”,其表示为到主控制器410的事件719。

在事件720处,示出主控制器410已调用逻辑控制器1440a的module1.js(鉴于主控制器410解析子方框514)以处理新的网络分组/内容。

事件721描绘了travel.ai帮助器420a的调用(根据逻辑控制器1440a的实现来选择),其又被示为在722处调用travel.ai引擎460a以封装新的网络分组。

travel.ai引擎460a在需要时检查配置数据以获取url、用户名和密码(子方框511),并且在事件723处将封装的分组(云分组)发送到与帮助器模块420a对应的聊天服务器260a。

在724处,聊天服务器260a被示为检查封装的分组并向travel.ai引擎460a转发假设表示文本“当然,我可以帮助您。您能告诉我您想要预订航班的日期吗?”的响应,没有意图被附加到响应。

在事件725处,travel.ai引擎460a封装了与travel.ai帮助器420a的要求一致的聊天服务器260a的响应。此后,travel.ai引擎460a将封装的响应包转发到travel.ai帮助器420a。

在事件726处,travel.ai帮助器将封装的响应分组转发到逻辑控制器1440a的module1.js。

在727处,逻辑控制器1440a的module1.js将封装的响应分组转发到主控制器410。

在728处,主控制器410识别出没有意图被附加到封装的响应分组,并且因此将封装的分组传递到与最终用户相关联的对应的acme聊天客户端。因此,封装的响应消息“当然,我可以帮助您。您能告诉我您想要预订航班的日期吗?”在604处显示在最终用户的acme聊天客户端窗口上。

响应于此,在605处,示出用户已经输入“本月30日”,这被表示为到主控制器410的事件729。

事件730被表示为类似于事件720-723的事件。以类似的方式,事件731被表示为类似于事件724-727的事件。在731处,聊天服务器260a转发假设表示文本“您想在一天中的什么时间旅行?”的响应,而没有意图附加到响应。

在732处,主控制器410识别出没有意图被附加到封装的响应分组,因而,封装的响应消息“您想在一天中的什么时间旅行?”在606处显示在最终用户的acme聊天客户端窗口上。

响应于此,在607处,用户被示为已经输入“早上6点”,其被表示为到主控制器410的事件733。

事件734与事件730相似。以类似的方式,事件735与事件731相似。在731处,聊天服务器260a转发假设表示文本“请从下面列出的可用航班中选择:'阿联酋航空-ek520'、阿提哈德航空-ey5411'”的响应,而没有意图附加到响应。

在736处,主控制器410识别出没有意图附加到封装的响应分组,因而,封装的响应消息“请从下面列出的可用航班中选择:'阿联酋航空-ek520'、'阿提哈德航空-ey5411'”在608处显示在最终用户的acme聊天客户端窗口上。

响应于此,最终用户从可用列表中选择一个航班,并且在609处,显示用户已选择“阿联酋航空-ek520”,这被表示为到主控制器410的事件737。

响应于此,在738处示出主控制器410已经调用逻辑控制器1440a的module1.js(鉴于主控制器410解析子方框514)以处理网络分组/内容。此外,在738处,网络分组被转发到逻辑控制器1440a的module1.js,然后经由travel.ai帮助器420a和travel.ai引擎460a被转发到聊天服务器260a。

在事件739处,聊天服务器260a被示为检查封装的分组并向travel.ai引擎460a转发假设表示文本“请确认以下细节:日期:2018年3月30日;时间:6:00am;航班:阿联酋航空–ek520;费用:1100美元。是或否”以及意图“get_customer_preference”的响应。封装的响应分组经由travel.ai帮助器420a转发到逻辑控制器1440a的module1.js。此外,逻辑控制器1440a的module1.js将上下文数据附加到封装的响应分组,指示封装的响应分组已由module1和travel.ai引擎460a处理。此后,附加的响应分组被转发到主控制器410。

在740处,主控制器在附加的响应分组中识别意图“get_customer_preference”,并从接收到的分组中截断该意图。鉴于附加的响应分组中的上下文数据,主控制器410知道截断的响应包已由travel.ai引擎460a和module1处理。因而,主控制器410解析(子方框511的)行515。其中的配置数据指示主控制器解析(方框530的)子方框534,以确定接下来要调用的intent1.js的过程“c$get_customer_info”。因而,主控制器410将截断的响应分组与customerid(在702处获取)一起转发到(逻辑控制器1440a的)intent1.js的过程“c$get_customer_info”。

响应于此,事件740还描绘了osvccrm帮助器420c的调用(根据逻辑控制器1440a的实现来选择),其进而被示为调用osvccrm引擎460c来处理识别出的意图。osvccrm引擎460c在需要时检查配置数据以获取url、用户名和密码(子方框571),并与crm系统1280a接口。此后,osvccrm引擎460c将截断的响应分组发送到crm系统1280a。

在741处,crm系统1280a将响应(包含基于在702处获取的customerid从crm系统1280a中检索到的最终用户的姓名、年龄、性别、用餐偏好)转发到osvccrm引擎460c。osvccrm引擎460c将响应从crm系统1280a转发到osvccrm帮助器420c,osvccrm帮助器420c进而转发到intent1.js(逻辑控制器1440a)的“c$get_customer_info”。响应于此,(逻辑控制器1440a的)intent1.js的“c$get_customer_info”从来自crm系统1280a的响应中提取最终用户的姓名、年龄、性别、用餐偏好(例如,分别是johndoe,35岁,男,蔬菜)并构造要发送给最终用户的确认消息。此后,(逻辑控制器1440a的)intent1.js的“c$get_customer_info”将构建的响应消息发送到主控制器410。

在事件742处,主控制器410将重建的响应消息转发到与最终用户相关联的对应的acme聊天客户端。因此,重建的响应消息“请确认以下细节:姓名:johndoe;年龄:35岁;性别:男;餐点:蔬菜;日期:2018年3月30日;时间:6:00am;航班:阿联酋航空–ek520;费用:1100美元。是或否”在610处显示在最终用户的acme聊天客户端窗口上。

响应于此,在611处,最终用户被示为通过选择“是”来确认细节,这被表示为到主控制器410的事件743。

响应于此,在744处,主控制器410被示为已经调用了逻辑控制器1440a的module1.js(鉴于主控制器410解析子方框514)并且module1.js经由travel.ai帮助器420a和聊天服务器260a向travel.ai引擎460a转发了网络分组(确认消息“是”)。

事件745与事件739相似。在事件745处,聊天服务器260a被示为检查封装的分组并根据在611确认的详细节预订航班。此后,聊天服务器260a向travel.ai引擎460a转发假设表示文本“您的航班已成功预订。这是您的航班行程”以及所预订航班的所有细节,并附加了意图“positive_end_intent”的响应。附加的响应分组被进一步转发到travel.ai帮助器420a,然后经由逻辑控制器1440a的module1.js转发到主控制器410。

在事件746处,主控制器410重建响应消息以显示航班行程并将重建的响应消息转发到与最终用户相关联的对应的acme聊天客户端。因而,分别在612a和612b处在最终用户的acme聊天客户端窗口上显示重建的响应消息“您的航班已成功预订”和“这是您的航班行程”。

当主控制器410识别出“positive_end_intent”时,主控制器向其余逻辑控制器440b-440x的对应模块广播元数据(在这个示例中,指示在逻辑控制器440a的特定模块中完成的任务的更新后的状况)。为了说明,假设其余逻辑控制器是440b和440c。

在事件748和749处,鉴于在事件745处附加的“positive_end_intent”,主控制器410被示为向其余逻辑控制器440b和440c的对应模块广播元数据(指示逻辑控制器440a的module1中的航班预订任务的完成)。在这个示例中,元数据可以包括起点和目的地、飞行时间、航班名称、最终用户的细节(姓名、年龄)等,并根据任何预先指定的约定带有适当的标签。在事件748处,逻辑控制器2440b的module2.js确定是否可以预订宾馆。在事件749处,逻辑控制器3440c的module3.js确定是否可以预订出租车。

响应于元数据的广播,基于事件748和749处的确定,逻辑控制器440b和440c中的每一个分别在事件751和752处发送置信水平。置信水平可以是0和1之间的任何数字(包括两者)。在这个示例中,当前事务日期被示为2018年3月20日(飞行旅行日期前10天)。因此,逻辑控制器2440b发送置信水平为0.8(因为可以在飞行日期前10天预订宾馆),而逻辑控制器3440c发送置信水平为0.4(因为可以在甚至可以在飞行旅行日期以后预订出租车)。因此,宾馆预订(在逻辑控制器2440b的module2.js中显示)可能是当前事务的下一个最合格的事务。

主控制器410选择具有最高置信水平/最高优先级或两者的组合的逻辑控制器作为下一个最合格的逻辑控制器。因而,主控制器410更新内部聊天会话表以指示当前聊天会话被分配给最合格的逻辑控制器。

主控制器410确定逻辑控制器2440b的module2.js已发送了由其余逻辑控制器440b-440x的对应模块所发送的那些当中最高的置信水平。

响应于此,主控制器410更新内部聊天会话表以指示当前聊天会话被分配给用于宾馆预订目的的逻辑控制器2440b。

在事件753处,主控制器410调用逻辑控制器2440b的module2.js(鉴于逻辑控制器2440b发送的最高置信水平)。响应于此,调用(根据逻辑控制器2440b的实施方式选择)hotel.ai帮助器420d(在图7a-图7c中未示出),其进而调用hotel.ai引擎460d(在图7a-图7c中未示出)。hotel.ai引擎460d在需要时检查配置数据以获取url、用户名和密码(子方框521),并将封装的分组(云分组)发送到与hotel.ai帮助器420d对应的聊天服务器260c。聊天服务器260c被示为检查广播的元数据并转发假设表示文本“嗨,johndoe,您想在2018年3月30日在纽约预订宾馆吗?是或否”的响应。

module2.js、hotel.ai帮助器420d、hotel.ai引擎460d和聊天服务器260c之间的事件未在图7b中示出,并且类似于如上面所解释的关于module1.js的交互。在事件754处,该响应分组被转发到主控制器410。所生成的响应分组在事件755处被转发给最终用户,其在613处显示在最终用户的acme聊天客户端窗口上。

因此可以认识到的是,分别来自聊天服务器260a和260c的消息612b和613被显示为对图6b中由最终用户提供的输入611的响应。

在614处,用户被示为选择“否”,因而,聊天会话在该点结束,而没有对逻辑控制器2440b的模块/意图的控制。

如果用户选择“是”,那么根据图5b的方框520,调用逻辑控制器2440b的对应模块/意图。通过阅读本文的公开内容,对应的操作对熟练技术人员将是显而易见的。

因此可以认识到的是,以上关于图6a-图6b描述的所有事务都是在单个聊天会话中执行的,这意味着用户体验处于与那里所描绘的相同的窗口中,并且交换的对应分组也将反映连续性。

在与图6c对应的另一个示例中,示出了客户端系统110a处的最终用户生成登机牌(护照已通过核实),然后根据本公开的各方面使用不同的聊天服务器无缝地预订出租车。

在620处,来自acme聊天客户端的最终用户被示为已经输入“您好”,其被表示为到主控制器410的事件760。事件761-776与事件702-717相似。

在事件777处,重建的响应消息“您好,johndoe,请告诉我是否有什么我可以帮助您的?”和航班行程分别在621a和621b处显示在最终用户的acme聊天客户端窗口上。在此,来自travel.ai的响应包括在612b处显示的最终用户的航班行程。

响应于此,在622处,用户被示为已经输入“您能给我发送登机牌吗?”,这被表示为到主控制器410的事件778。

事件779-782与事件702-705相似。在783处,聊天服务器260a被示为检查封装的分组并转发假设表示文本“当然,我可以帮助您。您能发送护照的扫描件进行核实吗?”以及到travel.ai引擎460a的意图“+issue_boarding_pass”(示例唯一意图键)的响应。事件784-786与事件707-709相似。

在事件787处,主控制器识别出附加的响应分组中的意图“issue_boarding_pass”并截断该意图。鉴于附加的响应分组中的上下文数据,主控制器410知道截断的响应包已由travel.ai引擎和module1处理。在截断上下文数据之后,主控制器410解析(子方框511的)行515。其中的配置数据指示主控制器解析(方框530的)子方框535,以确定接下来要调用的intent1.js的过程“c$issue_boarding_pass”。因而,主控制器410将截断的响应分组与(在702处获取的)customerid一起转发到(逻辑控制器1440a的)intent1.js的“c$issue_boarding_pass”。

响应于此,事件788描绘了osvccrm帮助器420c的调用(根据逻辑控制器1440a的实现来选择),其进而被示为在789处调用osvccrm引擎460c以处理识别出的意图。

在790处,osvccrm引擎460c在需要时检查配置数据以获取url、用户名和密码(子方框571)并与crm系统1280a接口。此后,osvccrm引擎460c将截断的响应分组发送到crm系统1280a。

在791处,crm系统1280a将响应(包含基于在702处获取的customerid从crm系统1280a中检索到的最终用户的护照的细节,如果有的话)发送到osvccrm引擎460c。

在792处,osvccrm引擎460c将响应从crm系统1280a转发到osvccrm帮助器420c,后者在事件793处转发到(逻辑控制器1440a的)intent1.js的“c$issue_boarding_pass”。

在794处,(逻辑控制器1440a的)intent1.js的“c$issue_boarding_pass”从来自crm系统1280a的响应中提取最终用户的护照的细节,并将提取出的护照的细节(如果有的话)转发到主控制器410。

假设crm系统1280a不包含最终用户的护照细节,继续进行描述。

在事件795处,主控制器410将截断的响应分组转发到与最终用户相关联的对应的acme聊天客户端。因而,重建的响应消息“当然,我可以为您提供帮助。您能发送护照的扫描件进行核实吗?”在623处显示在最终用户的acme聊天客户端窗口上。

响应于此,在624处,用户被示为已将表示为事件796的图像文件(例如,他的护照的副本)上传到主控制器410。

响应于此,主控制器410被示为在797处已经调用了逻辑控制器1440a的module1.js(鉴于主控制器410解析子方框514)以处理网络分组/内容。

逻辑控制器440a-440x的module.js被实现为根据输入类型选择相应的帮助器模块420a-420(p+q)和引擎模块460a-460(p+q)。例如,如果输入类型是图像,那么逻辑控制器1440a的module1.js调用image.ai帮助器420b;而如果输入类型是文本,那么逻辑控制器1440a的module1.js调用travel.ai帮助器420a。

事件798描绘了image.ai帮助器420b的调用(在624/事件796中根据图像输入类型选择),其进而被示为在799处调用image.ai引擎460b来处理网络分组。

在799a处,image.ai引擎460b在需要时检查配置数据以获取url、用户名和密码(子方框512),并且将封装的分组(云分组)发送到与image.ai帮助器420b对应的聊天服务器260b。

在事件799b处,聊天服务器260b被示为检查封装的分组并且将响应以及对应的意图转发到image.ai引擎460b。假设最终用户已上传真实护照副本,来继续描述。因而,聊天服务器260b生成登机牌并将其与意图“+positive_end_intent”一起发送到image.ai引擎460b。

在事件799c处,image.ai引擎460b封装与image.ai帮助器420b的要求一致的聊天服务器260b的响应(连同“+positive_end_intent”)。此后,image.ai引擎460b使用会话映射将封装的响应分组转发到image.ai帮助器420b。

在事件799d处,image.ai帮助器420b将封装的响应分组转发到逻辑控制器1440a的module1.js。

在799e处,逻辑控制器1440a的module1.js将上下文数据附加到封装的响应分组,从而指示封装的响应分组已由module1和image.ai引擎处理。此后,附加的响应分组被转发到主控制器410。

在799f处,主控制器410识别附加的响应分组中的意图“positive_end_intent”并截断该意图。鉴于附加的响应分组中的上下文数据,主控制器410知道截断的响应分组是由image.ai引擎460b和module1处理的。在截断上下文数据之后,主控制器410解析(子方框512的)行516。其中的配置数据指示主控制器解析(方框540的)子方框541,以确定接下来要调用的intent2.js的过程“c$image_success”。因此,主控制器410将截断的响应分组转发到(逻辑控制器1440a的)intent2.js的“c$image_success”。

事件799g描述了截断的响应被转发到travel.ai帮助器420a进行进一步处理。

在事件799h处,travel.ai帮助器420a重建与在621b/事件777处显示的细节对应的登机牌。此后,travel.ai帮助器420a将重建的响应分组连同意图“positive_end_intent”转发到(逻辑控制器1440a的)intent2.js的“c$image_success”,然后在799i处将其转发到主控制器410。

在事件799j处,重建的登机牌图像在625处显示在最终用户的acme聊天客户端窗口上。

在事件799l和799m处,鉴于在事件799h处附加的“positive_end_intent”,主控制器410被示出为向其余逻辑控制器440b-440x的相应模块广播元数据(指示逻辑控制器440a的module1中生成登机牌任务的完成)。假设其余逻辑控制器是440b和440c来继续描述。

响应于元数据的广播,其余逻辑控制器440b和440c中的每一个分别在事件799o和799p处发送置信水平。

假设下一个最合格的逻辑控制器是用于出租车预订的逻辑控制器3440c来继续描述。

主控制器410确定逻辑控制器3440c的module3.js已经发送了由其余逻辑控制器440b和440c的对应模块发送的那些当中最高的置信水平。

响应于此,主控制器410更新内部聊天会话表以指示当前聊天会话被分配给用于出租车预订目的的逻辑控制器3440c。

在事件799q处,主控制器410调用逻辑控制器3440c的module3.js(鉴于逻辑控制器3440c发送的最高置信水平)。

响应于此,调用taxi.ai帮助器420e(在图7a-图7c中未示出)(根据逻辑控制器3440c的实现来选择),其进而调用taxi.ai引擎460e(在图7a-图7c中未示出)。taxi.ai引擎460e在需要时检查配置数据以获取url、用户名和密码(方框528),并将封装的分组(云分组)发送到与taxi.ai帮助器420e对应的聊天服务器260d。聊天服务器260d被示为检查广播的元数据,并将假设表示文本“嗨,johndoe,您想在2018年3月30日从纽约机场预订出租车吗?是或否”的响应转发到module3.js。

module3.js、taxi.ai帮助器420e、taxi.ai引擎460e和聊天服务器260d之间的事件在图7c中未示出,并且类似于如上所述的关于module1.js的交互。在事件799r处,响应分组被转发到主控制器410。所生成的响应分组在事件799s处被转发到最终用户,其在626处被显示在最终用户的acme聊天客户端窗口上。

如果用户选择“否”,那么聊天会话在该点结束,而没有对逻辑控制器3440c的模块/意图的控制。

如果用户选择“是”,那么使用对应的意图(“intents_5”和“intents_6”)根据图5c的方框528调用逻辑控制器3440c的对应模块/意图,虽然未示出但可以以类似于分别如图5d和图5e的方框530和530中所示的方式实现。

在本公开的另一个实施例中,在事件791处,假设crm系统1280a包含最终用户的有效护照(例如,根据最终用户的先前交互的历史记录),那么重建的响应消息“当然,我可以帮助您那。您能发送护照的扫描件进行核实吗?”被替换为有效护照的细节并将其转发到主控制器410。如事件799h处所描述的,主控制器410调用travel.ai帮助器420a并重建登机牌。该处理如上所述继续。

还可以认识到的是,本公开的各方面使得能够在单个聊天会话中使用多个聊天服务器来无缝地为最终用户提供服务。

由于提供这种无缝接口的接口单元250基于配置数据,因此向管理员提供了关于各种系统之间的具体交互的更多控制。

通过利用聊天服务器提供的意图,接口单元被实现以利用由聊天服务确定的各种状态。

虽然在上面的示例中将接口单元250对多个聊天服务器的使用描述为受配置数据的控制,但是应当认识到的是,可以实现替代方法来以适于对应环境的其它方式来获得相似的特征。例如,最终用户可以在第一消息中预先指定票和宾馆预订的兴趣,例如,在图6a的603处,最终用户可以输入“我想预订从迪拜到纽约的航班,以及例如一些宾馆预订”。主控制器410可以将那个消息拆分为两个消息,一个消息用于航班预订,另一个消息用于宾馆预订,然后根据以上描述首先处理第一个消息。此后,基于方框520,主控制器410在第一个消息的处理的肯定完成时(例如,在接收到“positive_end_intent”时)自动服务第二个消息,而不是广播元数据。

可以使用各种方法来实现根据本公开的各方面的接口单元250。关于示例实施例继续描述,其中特征是通过执行适当设计的可执行模块可操作的。

8.数字处理系统

图8是图示数字处理系统800的细节的框图,其中本公开的各方面可通过执行适当的可执行模块来操作。数字处理系统800与接口单元250对应。

数字处理系统800可以包含一个或多个处理器(诸如中央处理单元(cpu)810)、随机存取存储器(ram)820、辅助存储器830、图形控制器860、显示单元870、网络接口880和输入接口890。除显示单元870之外的所有部件都可以经通信路径850彼此通信,路径850可以包含相关领域中众所周知的若干总线。下面更详细地描述图8的部件。

cpu810可以执行存储在ram820中的指令,以提供本公开内容的若干特征。cpu810可以包含多个处理单元,其中每个处理单元可能被设计用于具体的任务。可替代地,cpu810可以仅包含单个通用处理单元。

ram820可以使用通信路径850从辅助存储器830接收指令。ram820被示为当前包含构成共享环境825的软件指令和应用程序826。共享环境825包括操作系统、设备驱动程序、虚拟机等,它们为执行应用826提供(公共)运行时环境。上述各种模块可以包含在共享环境825中执行的应用程序826中。

图形控制器860基于从cpu810接收的数据/指令来向显示单元870生成显示信号(例如,以rgb格式)。显示单元870包含显示屏幕,以显示由显示信号定义的图像。输入接口890可以与可以用于提供适当输入(例如,用于编辑配置数据)的键盘和定点设备(例如,触摸板、鼠标)。网络接口880提供到网络的连接性(例如,使用互联网协议),并且可以用于与连接到网络(140/120)的(图1的)其它系统通信。

辅助存储器830可以包含硬盘驱动器835、闪存836和可移除的存储驱动器837。辅助存储器830可以存储数据(例如,配置数据的一部分,作为适当的文件)和软件指令(用于实现图2的流程图),这使得数字处理系统800能够提供根据本公开的若干特征。为了更高的执行速度,存储在辅助存储器830中的代码/指令或者可以在由cpu810执行之前被复制到ram820,或者可以由cpu810直接执行。

可以在可移除的存储单元840上提供一些或全部数据和指令,并且数据和指令可以由可移除存储驱动器837读取并提供给cpu810。可移除的存储单元840可以使用与可移除的存储驱动器837兼容的介质和存储格式来实现,使得可移除的存储驱动器837可以读取数据和指令。因此,可移除的存储单元840包括其中存储有计算机软件和/或数据的计算机可读(存储)介质。但是,计算机(或一般地说,机器)可读介质可以是其它形式(例如,不可移除、随机存取等)。

在本文档中,术语“计算机程序产品”用于一般性地指安装在硬盘驱动器835中的可移除的存储单元840或硬盘这些计算机程序产品是用于向数字处理系统800提供软件的装置。cpu810可以检索软件指令,并且执行指令,以提供上述本公开内容的各种特征。

如本文所使用的术语“存储介质”是指存储使机器以具体方式操作的数据和/或指令的任何非临时性介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储存储器830。易失性介质包括动态存储器,诸如ram820。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质,cd-rom、任何其它光学数据存储介质,具有孔图案的任何物理介质,ram、prom和eprom、flash-eprom、nvram、任何其它存储器芯片或盒。

存储介质不同于传输介质但可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括构成总线850的导线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。

贯穿本说明书对“一个实施例”、“实施例”或类似语言的引用意味着结合该实施例描述的特定特征、结构或特性包括在本公开内容的至少一个实施例中。因此,短语“在一个实施例中”、“在实施例中”和类似语言贯穿本说明书的出现可以但不一定都指相同的实施例。

此外,本公开内容的所描述的特征、结构或特性可以以任何合适的方式在一个或多个实施例中组合。在上述描述中,提供了众多具体细节,诸如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的示例,以提供对本公开内容实施例的透彻理解。

虽然以上已经描述了本公开内容的各种实施例,但是应当理解,它们仅仅作为示例给出,而不是限制。因此,本公开内容的宽度和范围不应当由上述示例性实施例中任何一个限制,而是应当仅根据以下权利要求及其等同物来限定。

应当理解的是,附件中示出的突出本公开内容的功能和优点的附图和/或屏幕截图仅仅是为了示例的目的而给出的。本公开内容足够灵活和可配置,使得其可以以不同于附图中所示的方式使用。

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