dialogflow-es - Dialogflow - 在捕获所需参数(实体)时触发其他意图
问题描述
我创建了 2 个意图。
意图1:
训练阶段 = 1) 天空是蓝色的
输入上下文 = 空
输出上下文 = 空
意图2:
训练阶段 = 1) 引发事件(等)
所需参数 = 1) 参数-A(实体;值 = 橙色、西瓜、芒果)
输入上下文 = 空
输出上下文 = "RaiseIncident"
模拟步骤:
1. 用户键入“引发事件”。
2. Intent 2 将被触发并提示输入 param-A。
3. 天空中的用户键是蓝色的
4. Dialogflow 停止捕获 param-A 并返回意图 1 中的响应。
这是我的问题:
有什么方法可以继续捕获 param-A,直到输入正确的输入(橙色、西瓜、芒果)而不是触发其他意图?或者这是 Dialogflow 的标准行为?
解决方案
这是标准行为,并且有充分的理由。
假设您有描述它的“引发事件”意图,并且所需的参数是事件类型。所以如果不提供,它会提示:“什么是事件类型?”
U: Open an incident
B: What is the incident type?
如果用户不知道可能的事件类型是什么,你会怎么做?也许你会给他们一个 Intent,他们可以说“帮助”或“有哪些类型?” 或等价物。但如果它只接受有效的事件类型,那么它将继续拒绝帮助请求。所以在你的场景下,谈话可能听起来像
U: Open an incident
B: What is the incident type?
U: Green
B: What is the incident type?
U: Help
B: What is the incident type?
但是由于您可以创建“帮助”意图,因此您可以提供该信息,他们可以重新触发该意图以引发事件。
U: Open an incident
B: What is the incident type?
U: Help
B: You can open mango or apple incident types. What would you like to do?
U: Open a mango incident
虽然 Dialogflow 中的必需参数似乎是一件好事,但在许多情况下它并不能很好地工作。最好将其设为可选参数,因此如果他们预先告诉您,您可以捕获它,但如果您需要的值丢失 - 提示它们并设置 Context 以便您录制您正在提示的内容。然后,您将能够添加上下文相关帮助或回退处理。
推荐阅读
- pysnmp - 通过 pysnmp 尝试时 snmpv3 getone 失败 (WrongValueError)
- nativescript - 在后台运行 settimeout
- c++ - C++ If 语句,从 else 重复
- mysql - 从 txt 文件向 MySQL 添加新行
- python - 熊猫中特定列的特定值的总和
- pentaho - 在 pentaho 表组件 cde 中添加子行
- git - 如何在提交到分支时触发 Jenkins 流水线?
- vb.net - 使用参数时为原始布尔值赋值
- hadoop - Homebrew 安装特定版本的 hadoop 2.8.0 而不是 3.1.1
- docker - 复制目录覆盖目标