首页 > 解决方案 > 在 Watson Assistant 中重用实体会导致自动填充上下文变量

问题描述

所以据我了解,实体应该在不同的插槽中重复使用,以优化您可能希望接受类似数据类型的用户输入信息的事实,即两个单独的插槽“你的家庭收入是多少”,“什么是你配偶的家庭收入”都将使用@sys-currency实体。

在我当前的对话流程中,我有两个子节点,每个子节点都有一个用于检查sys-currency实体类型的槽。但是,我使用两个不同的上下文变量来设置插槽。

问题是,在用户为第一个子节点(“家庭收入”)输入答案后,上下文变量也会为下一个子节点设置。它们具有相同的实体,但具有不同的上下文变量。据我了解,这应该发生。我可以确认节点已处理,但它会立即跳过提示,就好像它已被填充并在节点中传递响应。

第一个节点 第二个节点

标签: ibm-watsonwatson-conversationwatson-dialog

解决方案


所以......我知道这晚了一年零三个月,但如果其他人遇到这个问题,我会提供答案。

根本原因是“离婚 - 家庭收入”节点将 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 槽。


推荐阅读