2

我正在尝试为 StackOverflow 之类的东西构建一个 Dialogflow 代理,它负责处理用户提出的完整问题。我想存储答案(并将其反馈给用户)。例如:

User: "I get an error."
CX: "Which error?"
"Java.lang.NullPointerException"
"Okay, what have you tried so far to solve this problem?"
"I googled it but found no results..."
"On what line of code do you get the error?"
"if (running) {counter ++}"
"Okay, so to summarize:
 - You got the error Java.lang.NullPointerException
 - You tried: I googled it but found no results...
 - You got the problem on the line of code:  what line of code do you get the error?
Is that correct?"

CX 中没有“回退意图”-hack;我将如何构建一个带有开放式问题的机器人?

4

2 回答 2

2

以下是对您的评论的以下回复How to build a Dialogflow CX agent with open questions?

要处理开放式(意思是:不能归类为意图/参数的开放式答案)问题并存储答案,您可以使用我之前的回复中提供的相同方法,并利用“sys.any”实体和参数

去做这个:

  1. 当您为话语创建意图时,将话语注释到“sys.any”实体。这是一个示例供您参考: 在此处输入图像描述

    您可以更改参数 ID的名称以区分您将在每个页面中使用的参数。

  2. 在每一页上添加这些参数。这是供您参考的示例: 在此处输入图像描述

  3. 继续将第 1 步和第 2 步应用于您的其他意图和页面,以收集和存储您的开放式问题的答案。

  4. 当您到达最后一页时,您可以通过以下格式在响应中引用您的参数: $session.params.parameter-name. 这是供您参考的示例: 在此处输入图像描述

    您可以查看参考会话参数以获取更多信息。

    完成后,您的用例如下所示: 在此处输入图像描述

于 2020-10-28T09:05:11.407 回答
1

要在 Dialogflow CX 中构建带有开放式问题的机器人,您可以利用FlowsPages功能。

作为概述,Flows 用于定义您的主题及其相关的对话路径。对于每个流程,您可以定义许多页面,您的组合页面可以在其中处理有关流程设计主题的完整对话。您将每个页面配置为从最终用户那里收集与该页面表示的会话状态相关的信息。一旦页面变为活动状态,代理会执行几个步骤,这些步骤可能涉及条目完成、预填写表单、状态处理程序评估、表单参数提示、向最终用户发送响应消息,以及页面更改或重复循环。

对于您的用例,您可以为收到错误的用户创建一个流程,并为错误详细信息创建页面。去做这个:

  1. 为“我遇到错误”这句话创建一个意图。
  2. 将此意图作为意图路由添加到您的流程中。
  3. 在同一个意图路由中,为错误创建一个新页面。
  4. 在 Page's Fulfillment下,您可以添加您的回复,如下所示:

在此处输入图像描述

这种方法将留下一个开放式问题。请看下面的测试结果:

在此处输入图像描述

  1. 通过为话语“<code>Java.lang.NullPointerException”创建另一个意图来继续流程。

  2. 在错误页面中添加意图作为意图路由(例如:错误页面命名为“Error Types”,Step#5 中的意图名称为“Java Error”,如下所示):

在此处输入图像描述

  1. 在同一意图路由中,为“<code>Java.lang.NullPointerException”创建一个新页面(例如,页面名称为“Java Error Type”,如下所示): 在此处输入图像描述

  2. 在 Page's Fulfillment下,您可以添加“好的,到目前为止,您尝试了哪些方法来解决此问题?” 作为回应。

  3. 通过对其他开放式问题应用相同的方法来继续流程。

    完成后,这就是您的用例在可视化构建器中的类似外观: 在此处输入图像描述

    请看下面的测试结果:

在此处输入图像描述

于 2020-10-14T22:00:27.400 回答