目录

简介

先决条件

要求

使用的组件

背景

架构

思科CVA呼叫流

基于Google的IVR逻辑（对话流）

基于前提的意图(DialogflowIntent / DialogflowParam)

转录

配置

对话流项目/虚拟代理

什么是对话流？

CVVB语音服务器配置

CVP Call Studio元素

对话流

对话流意图

DialogflowParam

转录

CVP Call Studio应用

基于云的意图处理 — 基于Google的IVR逻辑（对话流）

内建式意图处理(DialogflowIntent / DialogflowParam)

代理服务器配置

故障排除

相关信息

思科文档

Google文档

简介

本文档介绍如何配置客户语音门户(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网关

- 统一客户语音门户（统一CVP）解决方案，包括Call Studio

- 统一联系中心企业版(Unified CCE)

- 思科虚拟化语音浏览器(VVB) — 语音服务

- 云服务(Google Dialogflow)

思科CVA呼叫流

Google Dialogflow支持三个主要CVA呼叫流。

- 基于Google的IVR逻辑（对话流）

- 内部部署目的(DialogflowIntent / DialogflowParam)

- 转录

基于Google的IVR逻辑（对话流）

托管IVR部署最适合计划将其IVR基础设施迁移到云的客户。在托管IVR部署下，仅IVR业务逻辑驻留在云中，而座席注册到本地基础设施。

托管IVR部署后，核心信号和媒体流程在云中发生；此外，CVP和Cisco VVB解决方案处于桥接模式，媒体将流传输到云。一旦IVR完成并需要座席，呼叫控制将转回CVP，以进一步处理呼叫和队列处理。

以下是呼叫流的示例：

1. 呼叫从CUBE或入口GW到CVP呼叫服务器。然后，呼叫从CVP发送到Unified CCE/Package CCE。

2. CCE向CVP发送临时连接，并附上使用Cisco VVB设置VRU/IVR处理的说明。

3. CCE指示CVP运行在VXML服务器上部署的呼叫工作室应用。CVP将呼叫发送到Cisco VVB，IVR处理开始。音频(RTP)现在在Cisco VVB和CUBE或入口网关之间建立。到目前为止，呼叫流程步骤与任何常规综合呼叫流程相同。后续步骤是CVA对话流呼叫流独有的。

4. 客户语音通过使用Cisco VVB上的Speech Server流式传输到Google Dialogflow。

a.在Dialogflow接收流后，将进行识别，并且使用NLU服务来识别目的。

b.NLU服务可识别目的。意图识别基于在云中创建的虚拟代理。

c. Dialogflow通过以下方式之一（取决于call studio应用配置）将后续提示返回Cisco VVB:

音频:Dialogflow返回API响应中的音频负载。

文本:Dialogflow返回文本提示作为响应，必须由TTS服务合成。

d.Cisco VVB向呼叫方播放提示，以获取其他信息。

e.当呼叫方响应时，Cisco VVB将此响应流传输到Dialogflow。

f.  Dialogflow执行执行，并再次以以下两种方式之一响应提示：

音频:Dialogflow使用webhook返回API响应中的音频负载以及执行音频。

文本:Dialogflow返回带执行文本的文本提示，以响应使用webhook。这由TTS服务合成。

g.对话流对整个会话执行情景管理和会话管理。

除非客户请求座席转接或呼叫断开，否则流量控制将保留为对话流。

基于前提的意图(DialogflowIntent / DialogflowParam)

内部部署意图部署更适合于需要在内部系统上处理个人身份信息(PII)或任何其他敏感数据的客户。通常，在此类部署中，个人身份信息(PII)从不发送到云进行处理；相反，它的收集方式是，信息始终保留并在现场处理。在此呼叫流中，大部分进程控制发生在VXML服务器上。此呼叫流允许：

- 本地参数提示/序列

- 本地DTMF检测

- 扩展当前应用

- 本地执行

此呼叫流使用呼叫工作室的DialogflowIntent和DialogflowParamt元素。步骤1至3与上一个Dialogflow调用流相同。以下是后续步骤

4. 客户语音通过Cisco VVB上的语音服务器流式传输到Google Dialogflow。

5. 在此场景中，语音服务器将语音传递给云ASR

6. 在Google上收到流后，将进行识别并将文本返回到VXML服务器。VXML服务器将此文本传递到Dialogflow，并且NLU服务用于识别目的。NLU标识已配置的目标。意图识别基于在云中创建的虚拟代理。

a.Google Dialogflow将意图返回到VXML服务器中部署的呼叫工作室应用。

b.如果确定的意图需要处理敏感信息，例如信用卡号或PIN

输入后，Cisco VVB可以播放所需提示并从最终客户处收集双音多频(DTMF)。

c.此敏感信息由本地业务应用程序收集，并发送到客户关系管理(CRM)数据库进行身份验证和进一步

process.

d.客户使用其PIN进行身份验证后，语音控制可以传回到云中的ASR服务。

e.VXML服务器通过call studio应用对整个会话执行情景管理和会话管理。

从本质上讲，此呼叫流在定义基于客户输入在每个阶段要执行的操作方面提供了更大的灵活性，并且完全由内部应用程序驱动。云服务主要用于识别语音和意图识别。确定意图后，控制权会传回CVP业务应用程序，以处理并决定下一步应该采取什么措施。

转录

此呼叫流提供从语音到文本句子（基本上是ASR）的客户输入转换。

配置

对话流项目/虚拟代理

在启动CVA配置之前，需要配置Google对话流并将其连接到思科语音服务器。您需要Google服务帐户、Google项目和Dialogflow虚拟代理。然后，您可以教这个对话流虚拟代理自然语言，这样代理就可以通过使用自然语言处理来响应客户交互。

什么是对话流？

Google Dialogflow是一种会话式用户体验(UX)平台，可为设备、应用和服务提供品牌独特的自然语言交互。换句话说，Dialogflow是一个框架，它提供NLP/NLU（自然语言理解）服务。思科与Google Dialogflow集成，用于CVA。

这对你意味着什么？这意味着您基本上可以在Dialogflow上创建虚拟代理，然后将其与思科联系中心企业集成。

以下是创建虚拟代理或对话流项目的步骤：

步骤1.创建Google帐户/项目或从您的思科合作伙伴为您分配Google项目。

步骤2.登录Dialogflow。导航至https://dialogflow.com/

步骤3.创建新代理。选择新座席的名称和默认时区。将语言设置为英语。单击“创建代理”。

在本示例中，虚拟代理处理银行交易，因此本实验的代理名称为BankingRoot。语言为英语，时区为默认系统时间。

步骤4.单击“创建”选项卡。

步骤5.创建虚拟代理后，您可以导入预构建的Google虚拟代理（如图所示），也可以教授代理如何与呼叫方通信。

注意：您还可以从设备导入思科示例虚拟代理：DialogflowAgent.zip

步骤6.此时，代理仍不知道如何响应任何用户输入。下一步是教它如何行事。首先，您模拟座席的个性，使其响应您好的默认欢迎意图并呈现自己。创建代理后，您将看到此映像。

注意：hello可在call studio应用元素Dialogflow中定义为默认欢迎意图。

步骤7.单击“默认欢迎意图”。

步骤8.在“培训”短语中添加“您好”、“早安”和“下午好”。在文本表单中键入它们，然后在每个表单后按Enter键。

步骤9.现在向下滚动到Responses，然后单击ADD RESPONSES。

步骤10.选择Text Response。

正如您对培训短语所做的那样，添加正确的回答。这是用户从代理收到的第一条消息。为了让座席听起来更自然、更有对话性，请想想正常的对话，并想象座席会说什么。不过，最好让用户知道交互是与人工智能(AI)代理进行的。在此场景中，以Cisco Live Banking应用为例，因此您可以添加如下内容：欢迎使用Cisco Live!我叫John Doe，是Cisco Live Banking的虚拟助理。您要执行什么操作?您可以说“支票余额”、“创建新帐户”或“转移资金”。

步骤11.单击SAVE。

在创建更多意图之前，请创建图元。实体是属性或参数，Dialogflow可使用该属性或参数来响应用户的请求 — 实体通常是目的中的关键字，如帐户类型、日期、位置等。因此，在添加更多意向之前，请添加实体：帐户类型、存款类型和转帐类型。

步骤12.在“对话框流”菜单上，单击“实体”。

步骤13.在“实体”(Entities)窗口中，单击“创建实体”(CREATE ENTITY)。

步骤14.在实体名称中键入AccountType。在定义同义词字段中，键入：“当前”(Current)、“贷款和储蓄”(Loan and Savings)，然后点击“保存”(SAVE)。

步骤15.返回“对话框流”菜单，再次单击“实体”。然后，在“实体”窗口中单击“创建实体”。

>

步骤 16 在实体名称类型上：存款类型。在“定义同义词”字段中，键入：现金和支票，然后单击“保存”。

步骤17.可以创建更多实体，例如：TransferType和在“定义同义词”字段类型上：现金、Pay Pal、PayTM和电汇等

步骤18.创建帐户持有人实体。在“实体名称”(Entity name)字段中，键入AccountHolder;定义同义词字段。

步骤19.现在，继续接受代理培训，了解银行系统中可能收到的所有问题和典型回答。创建下一目标：CheckBalance、TransferMoney。对于CheckBalance意图，您可以添加图中所示的培训短语：

您还可以添加此响应：

步骤20.您可以添加其余的目标(TransferMoney、CreateAccount and Exit)、培训短语、参数和响应。

注意：有关Google Dialogflow配置的详细信息，请导航至：DialogFlow虚拟代理

CVVB语音服务器配置

语音服务器是集成到Cisco VVB中的新组件。语音服务器通过Google最初开发的开源远程过程调用(gRPC)系统与Google对话流进行交互

步骤1.在PCCE管理工作站(AW)、CVP和CVVB之间交换证书（如果您没有这样做）。如果部署在UCCE上，请在CVP New Operations Manager服务器(NOAMP)、CVP和CVB之间交换证书。

注意：有关PCCE证书交换，请参阅以下文档：PCCE解决方案中的自签名证书和管理PCCE组件证书。  有关UCCE，请参阅在UCCE上交换的自签名证书。

步骤2.在PCCE上，打开CCE Admin/Single Plane of Glass(SPOG)界面。如果您的部署在UCCE上，请在NOAMP服务器上执行以下步骤。

步骤3.在“功能”下，选择“客户虚拟助理”。

步骤4.现在您应该看到三个选项卡：文本到语音、自动语音识别和自然语言理解。

步骤5.单击“自然语言理解”，然后单击“新建”。

步骤6.在“新建自然语言了解帐户”窗口中，选择“对话框流”作为服务提供商。

步骤7.对于服务帐户名称，您需要提供与您在Google Dialogflow中创建的虚拟代理相关的Google项目。

要确定与创建的虚拟代理相关的项目，请遵循以下步骤：

a.登录到DialogFlow帐户(dialogflow.com)，选择已创建的代理，然后单击设置图标。

b.在右侧的“设置”窗口中向下滚动，您会看到“服务帐户”和项目ID。复制项目ID，该ID是您需要在Speech Server配置中添加的服务帐户名称。

步骤8.为了使用识别和响应客户意图所需的Google对话流API，您需要获取与虚拟座席的服务帐户关联的私钥。

创建服务帐户后，私钥将作为JSON文件下载。按照此步骤获取虚拟代理私钥。

注意：必须创建新服务帐户，而不使用与项目关联的任何默认Google服务帐户。

a.在Google Project部分下，点击服务帐户URL。

b.这将带您进入Google云平台服务帐户页面。现在，您首先需要向服务帐户添加角色。单击页面顶部的“创建服务帐户”按钮。

c.在弹出窗口中，输入服务帐户的名称。在此例中，输入BankingRootSA并单击CREATE。

d.单击“选择角色”。

e.在“对话框流”类别下，选择所需角色。选择Dialogflow API Admin，然后点击Continue。

f.向下滚动并选择“创建密钥”。

g.在私钥窗口中，确保为“密钥”类型选择了JSON，然后单击CREATE。

h开始下载JSON文件。选中保存文件框，选择保存并确认位置。

警告：您只能下载此JSON文件一次，因此请确保保存文件并将其保存在安全位置。如果丢失此密钥或密钥被泄露，则可以使用相同的流程创建新密钥。JSON文件将保存到C:\Download folder目录

我。完成后，您将看到一个弹出窗口，其中包含确认消息。单击 Close。

步骤9.在NLU Account（NLU帐户）窗口中单击NEXT（下一步）后，需要提供身份验证密钥。

步骤10.添加说明。导航至下载JSON文件的文件夹。编辑文件，选择文件中的所有行，并将其复制到Service Account Key字段。Click Save.

CVP Call Studio元素

CVP Call Studio版本12.5已得到增强，并添加了这四个元素（如图所示），以便简化CVA功能的配置。

以下是每个元素的简要说明：

对话流

创建对话流是为了从云接洽和管理ASR、NLU和TTS服务。对话流帮助模拟托管IVR部署，其中所有语音服务都由Google对话流参与，整个业务逻辑由云控制和驱动。

对话流意图

DialogflowIntent已创建，用于云服务的识别（ASR服务）和意图识别（NLU服务）。 一旦确定意图并将其传递到CVP VXML服务器，就可以在CVP Call Studio脚本中执行意图的句柄和任何进一步的操作。此处为应用开发人员提供了从云或本地部署TTS服务的灵活性。

DialogflowParam

DialogflowParam与DialogflowIntent元素配合使用。在典型的基于现场的IVR部署中，当客户意图被识别并传递到VXML服务器时，需要参数标识，并且应由CVP应用驱动。例如，典型的银行应用程序可以分析来自客户语音的遗漏输入，并在处理整个交易之前请求剩余的强制输入。在上述场景下，DialogflowParam元素与DialogflowIntent元素配合使用，以处理已识别的意图并添加所需参数。

转录

已创建Trascribe以处理客户语音并将文本作为输出返回。它基本上执行识别功能，并提供文本作为输出。当需要单独使用ASR功能时，应使用此元素。

有关这些元素下的参数设置的详细信息，请参阅元素规范指南版本12.5。

CVP Call Studio应用

基于云的意图处理 — 基于Google的IVR逻辑（对话流）

当呼叫命中VXML应用时，Dialogflow元素接管并开始处理语音输入。

与客户的对话将继续进行，只要Google虚拟代理能够识别意图并处理它们，媒体就会通过TTS服务进行中继。  对于来自客户的每个请求，流在对话流元素周围以循环方式继续，并且每个匹配的意图都根据决策框运行，以确定IVR处理是否应继续，或客户是否需要将呼叫转接给座席。

一旦触发座席转接决策，呼叫将路由到CVP，并且控制将呼叫置于队列中，然后将呼叫转接到座席。

以下是示例Call Studio应用的配置步骤：

步骤1.将应用程序导入Call studio或创建新应用程序。在本示例中，从Cisco Devnet示例CVA应用 — DFAudio导入了名为DFaudio的呼叫工作室应用。

步骤2.在DFAudio应用上，选择Dialogflow元素，在右侧选择Settings选项卡。将服务帐户名称更改为之前添加到语音服务器的项目ID，本例中为bankingroot-iemspv

步骤3.确保Audio Output参数设置为true，以便将音频发送到Dialogflow虚拟代理而非文本。

步骤4.验证、保存应用程序并将其部署到VXML服务器。

步骤5.现在将应用部署到VXML服务器内存中。在CVP VXML服务器上，打开Windows资源管理器，导航至C:\Cisco\CVP\VXMLServer and click on deployAllNewApps.bat。如果应用程序之前已部署到VXML服务器，请改为单击UpdateAllApps.bat。

内建式意图处理(DialogflowIntent / DialogflowParam)

在本例中，呼叫流与银行应用程序相关，在该应用程序中，客户可以检查其帐户余额并将一定金额的资金从储蓄帐户转移到另一个帐户。初始转录单元通过语音从客户收集识别数据并用ANI号进行验证。验证最终客户标识后，呼叫控制将移交至DialogFlowIntent元素，以便从客户处确定请求。CVP Call Studio应用根据客户输入（如要转移的金额）请求最终客户的剩余参数以进一步处理意图。汇款交易记录结束后，客户可以选择结束呼叫或请求座席转帐。

步骤1.将应用程序导入Call studio或创建新应用程序。在本示例中，从Cisco Devnet Sample CVA Application-DFRemote导入了名为DFRemote的Call Studio应用。

步骤2.在DFRemote应用程序中，选择DialogflowIntent(DFIntent)元素，然后在右侧选择Settings选项卡。将服务帐户名称更改为之前添加到语音服务器的项目ID，本例中为：班金格罗特 — 耶姆斯普夫

步骤3.确保Input Mode参数设置为voice。您可以将其同时设置为语音和DTMF，但是，对于此元素，必须将其设置为语音，因为未收集任何参数。使用DialogflowParam时，可将其设置为两者。在此元素中，实际收集来自调用方的输入参数。

步骤4.在本例中，当客户呼叫检查帐户余额时，应用产品会要求客户按DTMF或语音提供帐户类型。此信息在DialogflowParam元素（如图所示的AccountType）中收集。 要收集所需参数，请更改DialogflowParam设置。在输入模式中，选择dtmf+voice，以便呼叫者可以输入或说出帐户类型。在“目的”参数中，键入与目的相关的目的，在本例中为CheckBalance。在变量设置中，

选择目的参数，在本例中为AccountType。如果这是目的的最后一个参数，请将“最后一个参数”变量设置为true。有关DialogflowParam设置的详细信息，请参阅《元素规范指南》版本12.5。

步骤5.验证、保存应用程序并将其部署到VXML服务器。

步骤6.现在将应用部署到VXML服务器内存中。在CVP VXML服务器上，打开Windows资源管理器，导航至C:\Cisco\CVP\VXMLServer and click on 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服务。单击“文本到语音”，然后单击“新建”。

步骤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服务器发送到对话流。

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>

步骤2.配置httpsProxy端口。

set speechserver httpsProxy port <portNumber>

步骤3.使用Show httpsProxy命令验证配置。

show speechserver httpsProxy host

show speechserver httpsProxy port

步骤4.在代理配置后重新启动Cisco Speech Server服务。

utils服务重启Cisco Speech Server

此外，如果您已实施了Premise Based Intent Processing(DialogflowIntent / DialogflowParam)部署模型，并且CVP VXML服务器和Google Dialogflow之间没有直接的Internet连接，则需要在CVP VXML服务器上配置代理服务器。

步骤1.登录CVP VXML服务器。

步骤2.运行regedit命令。

步骤3.导航至HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\VXMLServer\Parameters\Java\Options。

步骤4.将这些行附加到文件。

-Dhttps.proxyHost=<代理IP/Host>

-Dhttps.proxyPort=<代理端口号>

步骤5.重新启动服务Cisco CVP VXML服务器。

故障排除

如果您需要排除CVA问题，请查看本文档“Troubeshoot Cisco Customer Virtual Assistant”中的信息。

相关信息

思科文档

- 示例代码示例CVA应用程序

- CVA设计调用流和架构。

- 使用OAMP在UCCE中配置CVA服务。

- 使用PCCE管理员在PCCE中配置CVA服务。

- 对话流Call Studio元素规范

- DialogflowIntent Call Studio元素规范

- DialogflowParam调用Studio元素规范

- 转录Call Studio元素规范

Google文档

- 启用Dialogflow API

- 启用云语音到文本API（可选）

- 启用云文本到语音API（可选）

- 启用对话流计费

- 升级到企业版以获得高级对话流功能。

- 启用增强模型以获得最佳语音识别结果。

- 创建对话流身份验证密钥

- 创建语音到文本键

- 创建文本到语音键

- 对话流基础

- 设置对话流代理

- 创建对话流代理

技术支持和文档 - Cisco Systems