actions-on-google - 如何在 Webhook api.ai 中触发多个 Intent?
问题描述
我正在开发一个 api.ai 机器人,它将在数据库中搜索供应商名称。
a ) 如果供应商存在 -> 提供用户名 -> 提供密码
b)如果供应商不存在->(添加供应商->是)或(添加供应商->否)
我有一个 webhook 正在检查供应商是否存在于数据库中。
机器人场景:(示例)
情况1:
User: Do Alpha exist as a vendor?
Bot: yes, Alpha exist in Database. Please Provide User Name.
User: abc@gmail.com
Bot: Please Provide Password?
User: abcdef
Bot : Welcome
案例二:
User: Do Beta exist as a vendor ?
Bot: No Beta is not a vendor. Do you want to Register?
Case 1:
User: Yes
Bot: Please fill this Form.
Case 2:
User: No
Bot: Is there any other way I can help
我想通了一件事,我必须使用输出上下文来触发意图。但是在这种复杂的情况下我该怎么做呢?以及如何使用输出上下文调用多个来跟进意图?
我可能使用了不好的方法,还有其他方法可以解决这个问题吗?
我确实有一个后续问题。
- 当我们将履行响应传回对话流时。机器人控制台上的响应打印将是默认文本响应,我怎样才能让“fulfillmentText”成为响应。
感谢你们。这是后续的 Intent 场景。
解决方案
这并不复杂,您有两个收集用户名/密码的意图是错误的。
试试下面的方法
当您检测到您的供应商存在时 - 在 webhook 中设置上下文,例如,“ vendor-present
”
当供应商不存在时 - 在 webhook 中设置上下文,例如,“ vendor-new
”
使用寿命(上下文左侧的数字) 设置上下文的生命周期或有效性。
为现有供应商创建一个单独的意图 - 说“供应商数据收集”以收集用户名和密码。vendor-present
在 Dialogflow 中将输入上下文设置为“ ”。在这里,您将以相同的意图将这些作为参数收集(见下图)。将这些参数标记为“必需”,以便您的机器人必须收集它们。使用提示部分将您的回答问题用于收集诸如“请提供用户名”之类的信息。
如果供应商不存在,请使用现有意图并将输入上下文设置为vendor-new
Dialogflow 中的“”。
现在,有几件事需要注意——用户名参数可以使用系统实体来收集@sys.given-name
。但对于非美式/英文名称,它不是很准确。我不确定这是否有所改善。其次,没有系统实体来收集密码,所以需要@sys.any
在webhook中设置实体为and,需要自己使用正则提取密码。顺便说一句 - 你不应该分享密码!
希望这对您有所帮助!
推荐阅读
- reactjs - 在 React 功能组件中绑定 Highcharts 事件的正确方法是什么?
- java - 在 Java swing 应用程序中更改字体样式、大小
- html - 如何在 A-Frame 中调整相机显示的大小?
- twilio - 是否可以在 Twilio Autopilot 调用的 Twilio 函数中访问 Twilio 目标号码?
- python - 为数据框中列的每个单元格分配随机值
- python - 在python中重用函数
- nginx - 如何为 kubernetes 仪表板配置 basehref
- winapi - 如何使用 MFC 函数绘制曲线文本?
- python - 如果满足条件或发生错误,则执行代码
- java - 平移 BufferedImage