如何使用Dialogflow捕获用户文本

时间:2019-01-14 08:06:10

标签: dialogflow

我正在为Google环聊创建一个新的机器人。似乎使用Dialogflow可能是最好的工具。 (如果我错了,请告知否则)。目标是能够创建一个问答机器人,使其能够检索用户的完整答复作为答案。

我尝试谷歌搜索几个不同的搜索词,但没有找到答案,我开始认为Dialogflow不是适合我的工具。

我要创建的机器人应该能够进行以下对话:(B:机器人,U:用户)

U: I would like to work remotely today.
B: Ok, please let us know what you will be working on today
U: I will be completing task A, B and C
B: Great, your team has been notified that you will be completing task A, B and C.

U: I will be in the office late today
B: Sure, what time do you think you will be in the office?
U: Before 2pm
B: Great, your team has been notified you will be in the office before 2pm

我一直在尝试使用Dialogflow做到这一点。我可以通过使参数成为必需参数,然后提示输入更多信息来使机器人请求下一次输入,问题是对提示的响应要求我通过实体输入固定的答案。它无法捕获完整的用户响应作为答案。

2 个答案:

答案 0 :(得分:2)

不清楚您认为需要哪个答复才能获得“全面答复”。通常,Dialogflow可以帮助您获取所需信息的重要部分作为参数,并帮助过滤掉用户输入的其他部分,这些部分可能有所不同,但在语义上是相同的。

因此,在第一个示例中,您可能想选择诸如

  • 我将[完成任务A,B和C]
  • 我正在[在D上工作]
  • 可能[继续使用E和F]

我用[括号]标记的部分确实是您想要的部分,答复的其他部分在语义上是相同的。您可以用@sys.any标记每个部分,就像正则表达式.*一样(但不完全一样)。

对于第二个示例,您可能需要多个与您的回复相匹配的Intent。请记住:意图与用户所说的相符,而不是您如何处理回复

一个意图可能会收集特定的答案,例如:

  • 有时[之后] [下午2点]
  • [大约] [3]
  • [不早于] [1:30]
  • 可能[今天] [今天]

每个参数都有两个参数-一个是时间,另一个是相对于该时间的短语。

您还可以将其他意图与诸如

  • 这取决于
  • 我不知道

,这些根本不需要参数。 Intent本身应反映用户打算说的话。

在所有这些情况下,您都需要为要询问的特定问题设置一个“后备意图”。您可能只想记录该答案,或者可能要使用回退意图来提示他们输入所需的消息。

答案 1 :(得分:2)

您需要弄清楚用户可能会对您的机器人说什么,并基于此您需要在dialogflow代理中创建不同的意图
当用户说些什么时,dialogflow将通过匹配意图并从中提取参数来尝试找出用户的意图,然后您可以基于此意图配置响应。

例如,您可以使用用户短语work_remotelyI would like to work remotely today来制定意图I would like to work remotely today and will be working on tasks A, B and C
分配参数@sys.any并突出显示A, B and C。另外,您可以将该参数标记为必需,并提供提示Ok, please let us know what you will be working on today,用户将对其正在执行的任务做出响应。最后,机器人将捕获参数值并给出响应Great, your team has been notified that you will be completing task $parameter_value.

类似地,您需要设计多个流程,制定意图,使用用户短语对其进行训练,提供参数和响应。

希望有帮助。