ibm-watson - 在 Watson Assistant 中重用实体会导致自动填充上下文变量
问题描述
所以据我了解,实体应该在不同的插槽中重复使用,以优化您可能希望接受类似数据类型的用户输入信息的事实,即两个单独的插槽“你的家庭收入是多少”,“什么是你配偶的家庭收入”都将使用@sys-currency实体。
在我当前的对话流程中,我有两个子节点,每个子节点都有一个用于检查sys-currency实体类型的槽。但是,我使用两个不同的上下文变量来设置插槽。
问题是,在用户为第一个子节点(“家庭收入”)输入答案后,上下文变量也会为下一个子节点设置。它们具有相同的实体,但具有不同的上下文变量。据我了解,这不应该发生。我可以确认节点已处理,但它会立即跳过提示,就好像它已被填充并在节点中传递响应。
解决方案
所以......我知道这晚了一年零三个月,但如果其他人遇到这个问题,我会提供答案。
根本原因是“离婚 - 家庭收入”节点将 input.text 设置为 @sys-currency 实体匹配的值,因此您跳转到基于 @sys-currency 匹配的任何节点将自动将其上下文变量设置为input.text 不提示用户。
不幸的是,我没有看到任何来自 IBM 的文档允许您将 input.text 设置为 null。
要解决此问题,您需要用户提供一些与@sys-currency 不匹配的其他值。
值得庆幸的是,该解决方案易于实施,用户实际上可能更喜欢您按照我下面的大纲进行操作。
只需让您的“离婚 - 家庭收入”节点跳转到要求他们确认输入的节点。Yes 和 No 等选项非常完美,因为它们会将 input.text 分别设置为“Yes”或“No”。
最后,跳转到“离婚 - 配偶收入”节点。由于@sys-currency 不会匹配用户的 input.text,节点会正确提示用户填写 $spouse_annual_income 槽。
推荐阅读
- c - /proc/{pid}/stack 在 linux 中是如何工作的?
- python - 如何修复 python 3.8 中的 pyttsx3 模块错误
- api - 如何结合 url 和 string 进行 api 调用
- weaviate - 对字典列表的 CRUD 支持
- r - 交互图的平均线
- gojs - 如何在拖动链接时将装饰或工具提示添加到 (Re-)LinkingTool 的临时ToPort 对象
- python - SQL 查询“翻译”为 Django 将接受的查询,有人吗?请(蟒蛇)
- amazon-cloudformation - 如何在 CDK 中创建 NAT 网关,然后将路由添加到指向 CIDR 的私有子网?
- java - Java中句子的用户输入
- java - 如何使用 AWS SES 在电子邮件中添加标签?