如何构建带有开放式问题的 Dialogflow CX 代理?

How to build a Dialogflow CX agent with open questions?

我正在尝试为 Whosebug 之类的东西构建一个 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 中没有 'Fallback Intent'-hack;我将如何构建一个带有开放式问题的机器人?

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

总的来说,流程用于定义您的主题及其相关的对话路径。对于每个流程,您可以定义许多页面,您的组合页面可以处理关于流程设计主题的完整对话。 您将每个页面配置为从 end-user 收集与页面所表示的会话状态相关的信息。 一旦页面变为活动状态,代理将遵循几个步骤,这些步骤可能涉及条目履行、pre-filling 表单、状态处理程序评估、表单参数提示、向 end-user 发送响应消息,以及页面更改或重复循环。

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

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

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

  1. 通过为话语创建另一个 intent 来继续流程 “Java.lang.NullPointerException”。

  2. 在您的错误页面中将意图作为 intent route 添加(作为 示例:错误页面名为“错误类型”, 步骤#5 中的意图名称是“Java Error”,如下所示:

  1. 在同一个 intent route 中,为 “Java.lang.NullPointerException”(例如,页面名为 “Java错误类型”如下图:

  2. 在页面的Fulfillment下,你可以添加“好的,你试过什么 到目前为止解决这个问题?”作为回应。

  3. 通过对您的其他打开应用相同的方法来继续流程 结束问题。

    完成后,这就是您的用例在可视化构建器中的类似外观:

    查看下面的测试结果:

以下是对您评论的回复

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

为此:

  1. 当您为话语创建 intent 时,注释 对“sys.any”实体的话语。这是您的示例 参考:

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

  2. 在每个页面上添加这些参数。这是您的示例 参考:

  3. 继续将步骤 1 和 2 应用到您的其他意图和页面 收集和存储您 open-ended 问题的答案。

  4. 当您到达最后一页时,您可以参考您的 通过此格式响应中的参数: $session.params.parameter-name。这是您的示例 参考:

    您可以查看 reference session parameters 了解更多信息。

    完成后,这就是您的用例类似的样子: