简介
本文档介绍如何配置客户语音门户(CVP)CVA功能。
先决条件
要求
Cisco 建议您了解以下主题:
- 思科统一联络中心企业版(UCCE)版本12.5
- 思科套装联络中心企业版(PCCE)版本12.5
- CVP版本12.5
- 思科虚拟化语音浏览器(CVVB)12.5
- 思科统一边界元素(CUBE)或语音网关(GW)
- Google对话流
使用的组件
本文档中的信息基于以下软件版本:
- 思科套装联络中心企业版(PCCE)版本12.5
- CVP版本12.5
- 思科虚拟化语音浏览器(CVVB)12.5
- Google对话流
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
背景
CVP 12.5引入了客户虚拟助理(CVA)功能,您可以使用第三方供应商的文本到语音转换(TTS)、自动语音识别(ASR)和自然语言处理(NLP)服务。
注:在此版本中仅支持Google NLP。
此功能支持类似于人际的交互,使您能够使用自然语言处理在交互式语音应答(IVR)中更快更有效地解决问题。
Cisco CVA提供以下交互模式:
- 本地交互:使用WAV文件在本地播放提示,使用DTMF语法捕获用户输入。
- 基于MRCP的交互:外部基于本地的媒体服务器通过媒体资源控制协议(MRCP)合成命令播放提示,以实现TTS功能。提示由ASR根据预定义的语法由外部媒体服务器识别。
- 自然语言理解(NLU):此功能使对话能够通过与基于云的自然语言处理(NLP)引擎进行交互来启动,该引擎经过培训可以理解自然语言。
架构
除了CVP综合呼叫流程中所需的组件之外,CVA还需要实施云服务、语音服务和特定CVP Call Studio元素。这是CVA中所需的所有组件的列表:
- 入口、出口、CUBE网关
- Unified Customer Voice Portal(Unified CVP)解决方案,包括Call Studio
- 统一联系中心企业版(Unified CCE)
- 思科虚拟化语音浏览器(VVB) — 语音服务
- 云服务(Google Dialogflow)
思科CVA呼叫流
Google Dialogflow支持三种主要的CVA呼叫流。
- 基于Google的IVR逻辑(对话流)
- 基于前提的意图(DialogflowIntent / DialogflowParam)
- 脚本
基于Google的IVR逻辑(Dialogflow)
托管IVR部署最适合计划将IVR基础设施迁移到云的客户。在托管IVR部署下,只有IVR业务逻辑驻留在云中,而代理注册到本地基础设施。
一旦部署了托管IVR,核心信号和媒体进程在云中发生;此外,CVP和Cisco VVB解决方案处于桥接模式,媒体将流式传输到云。一旦IVR完成并且需要座席,呼叫控制将转移回CVP以便进一步处理呼叫和队列处理。
以下是呼叫流程示例:
- 呼叫从CUBE或入口GW转到CVP呼叫服务器。然后,呼叫将从CVP发送到统一CCE/数据包CCE。
- CCE向CVP发送一个临时连接,同时指示使用Cisco VVB设置VRU/IVR处理。
- CCE指示CVP运行在VXML服务器上部署的呼叫工作室应用。CVP将呼叫发送到Cisco VVB,IVR处理开始。音频(RTP)现在在Cisco VVB和CUBE或入口网关之间建立。到目前为止,呼叫流程步骤与任何常规综合呼叫流程相同。后续步骤对于CVA Dialogflow呼叫流程是唯一的。
- 通过在Cisco VVB上使用Speech Server将客户语音流传输到Google Dialogflow。
a.在Dialogflow收到数据流后,即进行识别,并委托NLU服务确定意图。
b. NLU服务识别意图。意图识别基于在云中创建的虚拟代理进行。
c. Dialogflow通过以下方式之一将后续提示返回至Cisco VVB(取决于call studio应用配置):
音频:Dialogflow返回API响应中的音频负载。
Text:Dialogflow返回响应的文本提示,该提示必须由TTS服务合成。
d. Cisco VVB向主叫方播放提示以获取其他信息。
e.当呼叫方响应时,Cisco VVB会将此响应流传输到Dialogflow。
f. Dialogflow执行以下两种方式之一,执行完成并再次以提示进行响应:
音频:Dialogflow通过使用webhook执行音频,返回API响应中的音频负载。
Text:Dialogflow返回文本提示符,其中包含执行文本,以响应use webhook。这由TTS服务合成。
g.对话流对整个对话执行情景管理和会话管理。
除非客户请求座席转接或呼叫已断开,否则流量控制将保留在Dialogflow中。
基于预置的意图(DialogflowIntent / DialogflowParam)
基于内部部署意图的部署更适合需要在其内部系统处理个人身份信息(PII)或任何其他敏感数据的客户。通常,在此类部署中,个人身份信息(PII)不会发送到云中进行处理;相反,收集的方式是始终在本地保留和处理信息。在此调用流程中,大多数进程控制发生在VXML服务器上。此呼叫流允许:
- 本地参数提示/序列
- 本地DTMF检测
- 扩展当前应用程序
- 本地执行
此调用流使用call studio的DialogflowIntent和DialogflowParm元素。第1步到第3步与前一个Dialogflow callflow相同。以下是后续步骤
- 客户语音通过Cisco VVB上的语音服务器流传输到Google Dialogflow。
- 在此场景中,语音服务器将语音传递到云ASR
- 在Google接收到流后,识别发生并将文本返回到VXML服务器。VXML服务器将此文本传递给Dialogflow,并参与NLU服务来确定意图。NLU标识已配置的目标。意图识别基于在云中创建的虚拟代理进行。
a. Google Dialogflow将意图返回到VXML服务器中部署的call studio应用程序。
b.如果所确定的意图需要处理敏感信息,例如信用卡号或个人识别码
输入时,Cisco VVB可以播放所需的提示并从最终客户处收集双音多频(DTMF)。
c.此敏感信息由本地业务应用程序收集,并发送到客户关系管理(CRM)数据库进行身份验证,以及
process.
d.一旦客户的PIN已通过身份验证,语音控制就可以传回云中的ASR服务。
e.VXML服务器通过call studio应用程序执行整个会话的情景管理和会话管理。
从本质上讲,此呼叫流程在根据客户输入定义每个阶段要采取的操作方面提供了更大的灵活性,并且完全由内部应用程序驱动。云服务主要用于语音识别和意图识别。一旦确定了意图,控制权就交回CVP业务应用程序进行处理,并决定下一步应该做什么。
脚本
此呼叫流程提供从语音到文本句子的客户输入转换,基本上是ASR。
配置
Dialogflow项目/虚拟代理
启动CVA配置之前,需要配置Google Dialogflow并将其连接到Cisco Speech Server。您需要Google服务帐户、Google项目和Dialogflow虚拟代理。然后,您可以教这个Dialogflow虚拟座席自然语言,这样座席可以使用自然语言处理来响应客户交互。
什么是对话流?
Google Dialogflow是一个对话式用户体验(UX)平台,为设备、应用和服务提供独特的自然语言交互。换句话说,Dialogflow是一个提供NLP/NLU(自然语言理解)服务的框架。思科与Google Dialogflow for CVA集成。
这对您意味着什么?也就是说,您基本上可以在Dialogflow上创建虚拟代理,然后将其与Cisco Contact Center Enterprise集成。
以下是创建虚拟代理或Dialogflow项目的步骤:
步骤1: 创建一个Google帐户/项目,或者从您的思科合作伙伴为您分配Google项目。
第二步:登录到Dialogflow。导航至 https://dialogflow.com/
第三步:创建新座席。选择新座席的名称和默认时区。保持语言设置为英语。点击创建代理。
在本示例中,虚拟代理处理银行事务,因此本实验的代理名称为BankingRoot。语言为英语,Timezone为默认系统时间。
第四步:点击CREATE选项卡。
第五步:创建虚拟代理后,您可以导入预构建的Google虚拟代理(如图所示),也可以教授代理如何与呼叫者通信。
第六步:此时,座席仍不知道如何响应任何用户输入。下一步是教它如何表现。首先,模拟座席的个性并让它响应hello默认欢迎意图,然后展示自身。创建代理后,您将看到此映像。
注意:hello可以定义为call studio应用程序元素Dialogflow中的默认欢迎方式。
步骤 7.单击Default Welcome Intent 。
步骤 8在培训短语中添加hello、Good Morning和Good Afternoon。在文本表单中键入它们,并在它们后按Enter键。
步骤 9现在向下滚动到Responses,然后单击ADD RESPONSES。
步骤 10选择文本响应。
就像您对培训短语所做的那样,添加适当的响应。这是用户从代理收到的第一条消息。为了使您的座席听起来更自然、更具有会话性,请考虑一个正常的会话,并想象一个座席会说些什么。不过,让用户知道交互是通过人工智能(AI)代理是一种很好的做法。在此场景中,我们以Cisco Live Banking应用程序为例,这样您就可以添加类似内容:欢迎使用Cisco Live!我是John Doe,Cisco Live Banking的虚拟助理。您要执行什么操作?您可以说“支票余额”、“创建新帐户”或“转帐”等内容。
步骤 11Click Save.
在创建更多意图之前,请创建图元。Entity是Dialogflow可用于回答用户请求的属性或参数 — 实体通常是意图中的关键字,例如帐户类型、日期、位置等。因此,在添加更多意图之前,请添加实体:帐户类型、存款类型和转帐类型。
步骤 12在Dialogflow菜单上,单击实体。
步骤 13在“实体”(Entities)窗口中,单击创建实体。
步骤 14在实体名称上键入AccountType。在“定义同义词”字段中,键入“当前”、“贷款和存款”,然后点击“保存”。
步骤 15返回到“对话框”(Dialogflow)菜单,然后再次单击“实体”(Entities)。然后,在“实体”(Entities)窗口中,单击“创建实体”(CREATE ENTITY)。
>
步骤 16 在实体名称上键入:DepositType。在“定义同义词”字段中,键入:现金和支票,然后点击保存。
步骤 17您可以创建更多实体,例如:TransferType和“定义同义词”字段类型:Cash、Pay Pal、PayTM和Wire Transfer等。
步骤 18.创建帐户持有人实体。在“实体名称”字段中键入AccountHolder;在“定义同义词”字段中。
步骤 19.现在,继续进行座席培训,了解银行系统中收到的所有可能问题以及典型回答。创建下一个目标:CheckBalance、TransferMoney。对于CheckBalance意图,您可以添加图中所示的培训短语:
您还可以添加以下响应:
步骤 20.您可以添加其余意图(TransferMoney、CreateAccount和Exit)、培训短语、参数和响应。
注意:有关Google Dialogflow配置的详细信息,请导航至:DialogFlow Virtual Agent
CVVB语音服务器配置
语音服务器是集成到Cisco VVB中的新组件。语音服务器通过最初由Google开发的开源远程过程调用(gRPC)系统与Google对话流交互
步骤1:如果您尚未在PCCE管理工作站(AW)、CVP和CVVB之间交换证书,请进行交换。如果您的部署在UCCE上,请在CVP新Operations Manager服务器(NOAMP)、CVP和CVVB之间交换证书。
注:有关PCCE证书交换,请参阅以下文档:PCCE解决方案中的自签名证书和管理SPOG的PCCE组件证书。有关UCCE,请参阅UCCE上交换的自签名证书。
第二步:在PCCE上,打开CCE Admin/Single Plane of Glass(SPOG)接口。如果您的部署在UCCE上,请在NOAMP服务器上执行以下步骤。
第三步:在Features下,选择Customer Virtual Assistant。
第四步:现在,您应该看到三个选项卡:文本到语音、自动语音识别和自然语言理解。
第五步:单击Natural Language Understanding,然后单击New。
第六步:在“新自然语言理解帐户”窗口中,选择Dialogflow作为服务提供商。
步骤 7.对于服务帐户名称,您需要提供与在Google Dialogflow中创建的虚拟代理相关的Google Project。
要识别与创建的虚拟代理相关的项目,请遵循以下过程:
a.登录您的DialogFlow帐户(dialogflow.com),选择所创建的代理,然后点击设置图标。
b.在右侧的“设置”窗口中向下滚动,您可以看到服务帐户和项目ID。复制项目ID,即需要在Speech Server配置中添加的服务帐户名称。
第8步:要使用Google Dialog流API来识别和响应客户意图,您需要获取与虚拟座席服务帐户关联的私钥。
创建服务帐户后,私钥将下载为JSON文件。按照以下过程获取虚拟代理私钥。
注意:必须创建新的服务帐户,而不是使用与项目关联的任何默认Google服务帐户。
a.在Google Project部分下,点击服务帐户URL。
b.这会将您转到Google云平台服务帐户页面。现在,您首先需要向服务帐户添加角色。点击页面顶部的Create Service Account按钮。
c.在弹出窗口中,输入服务帐户的名称。在本例中,输入BankingRootSA,然后单击CREATE。
d.点击选择角色。
e.在Dialogflow类别下,选择所需的角色。选择Dialogflow API Admin,然后点击Continue。
f.向下滚动并选择创建键。
g.在私钥窗口中,确保为密钥类型选择JSON,然后单击CREATE。
h.开始下载JSON文件。选中Save File复选框,选择要保存并确认的位置。
注意:此JSON文件只能下载一次,因此请确保保存文件并将其保存在安全的位置。如果丢失此密钥或密钥受损,您可以使用同一过程创建新密钥。JSON文件保存到C:\Download文件夹
i.完成后,您将看到一个弹出窗口,其中显示一条确认消息。单击 Close。
步骤 9在“NLU帐户”(NLU Account)窗口中单击NEXT后,需要提供身份验证密钥。
步骤10.添加说明。导航到下载JSON文件的文件夹。编辑文件,选择文件中的所有行,然后将其复制到“服务帐户密钥”字段。Click Save.
CVP Call Studio元素
CVP Call Studio版本12.5已增强并添加了这4个元素(如图所示)以简化CVA功能的配置。
以下是每个要素的简要说明:
对话流
创建对话流是为了从云参与和管理ASR、NLU和TTS服务。Dialogflow有助于模拟托管IVR部署,其中所有语音服务均由Google Dialogflow参与,并且整个业务逻辑由云控制和驱动。
DialogflowIntent
已为云服务创建了DialogflowIntent,用于识别(ASR服务)和意向识别(NLU服务)。一旦确定意图并将其传递到CVP VXML服务器,即可在CVP Call Studio脚本中执行意图和任何进一步操作。这里为应用开发人员提供了从云或从本地使用TTS服务的灵活性。
DialogflowParam
DialogflowParam与DialogflowIntent元素结合使用。在典型的现场部署IVR中,当确定客户意图并将其传递到VXML服务器时,需要参数识别,并且应该由CVP应用驱动。例如,一个典型的银行应用程序可以分析来自客户语音的未命中输入,并在整个交易处理之前请求剩余的强制输入。在上述场景下,DialogflowParam元素与DialogflowIntent元素结合使用,以处理已确定的目的并添加所需的参数。
脚本
已创建脚本,用于处理客户语音并将文本作为输出返回。它基本上执行识别功能,并提供文本作为输出。当仅需要ASR功能时,应使用此元素。
有关这些元素中每个元素下参数设置的详细信息,请参阅元素规范指南12.5版。
CVP Call Studio应用
基于云的意图处理 — 基于Google的IVR逻辑(Dialogflow)
当呼叫到达VXML应用程序时,Dialogflow元素会接管并开始处理语音输入。
与客户继续对话,只要谷歌虚拟代理能够识别意图并处理它们,媒体就会通过TTS服务转回。 对于来自客户的每个请求,流程在Dialogflow元素周围以循环方式继续,并且每个匹配的意图都针对一个决策框运行,以确定IVR处理是否应该继续,或者客户是否需要将呼叫转接给座席。
一旦触发了座席转接决策,该呼叫将被路由到CVP,并且控制被切换以将该呼叫置于队列中,然后将该呼叫转接给座席。
以下是示例call studio应用程序的配置步骤:
步骤1:将应用程序导入到Call studio或创建新应用程序。在本示例中,从Cisco Devnet Sample CVA Application-DFAudio导入了名为DFaudio的Call Studio应用程序。
第二步:在DFAudio应用程序上,选择Dialogflow元素,然后在右侧选择Settings选项卡。将服务帐户名称更改为先前已添加到Speech Server中的项目ID,在本例中为:bankingroot-iemspv
第三步:确保Audio Output参数被发送到true,以便将音频发送到Dialogflow虚拟代理而不是文本。
第四步:验证、保存应用程序并将其部署到VXML服务器。
第五步:现在将应用程序部署到VXML服务器内存中。在CVP VXML服务器上,打开Windows资源管理器,导航到C:\Cisco\CVP\VXMLServer,然后单击deployAllNewApps.bat。如果应用程序之前已部署到VXML服务器,请改为单击UpdateAllApps.bat。
基于前提的意图处理(DialogflowIntent / DialogflowParam)
在此示例中,呼叫流与银行应用程序相关,在该应用程序中,客户可以检查其帐户余额,并将一定金额的款项从储蓄帐户转移到另一个帐户。初始转录元件通过语音从客户收集识别数据并使用ANI号码对其进行验证。验证最终客户标识后,呼叫控制将移交给DialogFlowIntent元素,以便识别客户的请求。CVP Call Studio应用根据客户输入(例如要转移的金额),向最终客户请求剩余参数,以进一步处理意向。一旦汇款事务结束,客户可以选择结束呼叫,也可以请求座席转帐。
步骤1:将应用程序导入到Call studio或创建新应用程序。在本示例中,从Cisco Devnet Sample CVA Application-DFRemote导入了名为DFRemote的Call Studio应用程序。
第二步:在DFRemote应用程序中,选择DialogflowIntent(DFIntent)元素,然后在右侧选择Settings选项卡。将服务帐户名称更改为先前已添加到Speech Server中的项目ID,在本例中为bankingroot-iemspv
第三步:确保Input Mode参数设置为voice。您可以将其同时设置为voice和DTMF,但是对于此元素,必须设置为voice,因为未收集任何参数。使用DialogflowParam时,可以同时将其设置为两者。在此元素中,您实际上是从调用方收集输入参数的地方。
第四步:在本例中,当客户致电检查帐户余额时,应用程序要求客户按DTMF或语音提供帐户类型。此信息收集在DialogflowParam元素中(AccountType,如图所示)。为了收集所需的参数,请更改DialogflowParam设置。在输入模式中,选择dtmf+voice,以便主叫方可以输入或说出帐户类型。在Intent参数中,键入与目的相关的值,本例中为CheckBalance。在Variable设置中,
选择目的参数,本例中为AccountType。如果这是目的的最后一个参数,请将Last Parameter变量设置为true。有关DialogflowParam设置的详细信息,请参阅元素规范指南12.5版。
第五步:验证、保存应用程序并将其部署到VXML服务器。
第六步:现在将应用程序部署到VXML服务器内存中。在CVP VXML服务器上,打开Windows资源管理器,导航到C:\Cisco\CVP\VXMLServer,然后单击deployAllNewApps.bat。如果应用程序之前已部署到VXML服务器,请改为单击UpdateAllApps.bat。
步骤 7.将之前下载的JSON文件复制到C:\Cisco\CVP\Conf目录。jason文件名必须与项目名称匹配(本例中为bankingroot-iemspv.json)。
步骤 8如果需要这些服务,请添加Google TTS和ASR服务,如本例所示。如果您的部署在UCCE上,请通过NOAMP服务器添加TTS和ASR。在PCCE上,打开CCE Admin/Single Plane of Glass(SPOG)接口。
步骤 9在“功能”卡下,选择“客户虚拟助理”。
步骤 10首先添加TTS服务,然后按照相同步骤添加ASR服务。点击Text to Speech,然后点击New。
步骤 11选择Google作为服务提供商并添加服务帐户名称(与前面步骤中的NLU帐户相同的帐户名称)。单击 Next。
步骤 12将此TTS服务设置为默认值,并复制在前面的步骤中生成的NLU json文件的内容作为ASR和TTS json密钥。点击Save。
注意:TTS和ASR服务帐户不需要分配任何角色。但是,如果您对ASR和TTS使用相同的NLU服务帐户,则需要确保此服务帐户可以访问TTS和ASR API。
通常,这是使用DialogflowIntent和DialogflowParam时的处理流:
1. Call Studio / VXML应用程序从C:\Cisco\CVP\Conf\读取JSON文件
2. DialogflowIntent音频提示已播放,音频文件或音频设置中的TTS已转换为音频。
3.现在,当客户交谈时,音频会流式传输到识别引擎Google ASR。
4. Google ASR将语音转换为文本。
5.文本从VXML服务器发送到Dialogflow。
6. Google Dialogflow以文本形式将意图返回到VXML应用程序DialogflowIntent元素。
代理服务器配置
Cisco VVB中的Google 软件开发工具包(SDK)使用gRPC协议与Google Dialogflow进行交互。gRPC使用HTTP/2进行传输。
由于基础协议是HTTP,如果Cisco VVB和Google Dialogflow之间没有直接通信,您需要配置HTTP代理建立端到端通信。
代理服务器应支持HTTP 2.0版本。Cisco VVB显示CLI命令以配置代理主机和端口配置。
步骤1:配置httpsProxy主机。
set speechserver httpsProxy host <hostname>
第二步:配置httpsProxy端口。
set speechserver httpsProxy port <portNumber>
第三步:使用Show httpsProxy命令验证配置。
show speechserver httpsProxy host
show speechserver httpsProxy port
第四步:在代理配置后重新启动Cisco Speech Server服务。
utils service restart Cisco Speech Server
此外,如果已实施Premise Based Intent Processing(DialogflowIntent / DialogflowParam)部署模式,并且CVP VXML服务器和Google Dialogflow之间没有直接互联网连接,则需要在CVP VXML服务器上配置代理服务器。
步骤1:登录到CVP VXML服务器。
第二步:运行regedit命令。
第三步:导航至HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\VXMLServer\Parameters\Java\Options。
第四步:将这些行附加到文件。
-Dhttps.proxyHost=<您的代理IP/主机>
-Dhttps.proxyPort=<您的代理端口号>
第五步:重新启动服务Cisco CVP VXML服务器。
故障排除
如果您需要对CVA问题进行故障排除,请查看本文档Troubleshoot Cisco Customer Virtual Assistant中的信息。
相关信息
思科文档
Google文档
技术支持和文档 - Cisco Systems