首页 > 解决方案 > IBM Watson Assistant:无法从对话 JSON 访问定义的实体

问题描述

我使用名为 @ClientStates 的 GUI 创建了一个实体,并添加了我们的客户端支持的状态列表。

我需要查看用户输入的状态是否在 @ClientStates 中,如果是,则打印出一些信息。

我知道这可以通过创建一个检查匹配的对话节点来完成,但是可以在节点中使用 JSON 来完成吗?例如:

{
  "output": {
    "text": {
      "values": [
         "<? @ClientStates.contains($State)? 'Yes' : 'No ?>"
       ],
      "selection_policy": "sequential"
    }
  }
}

如果保存在上下文变量 $State 中的用户输入是 @ClientStates 中的状态之一,则似乎应该打印“是”,如果不是,则应该打印“否”。但是,对于任何输入,唯一的输出是“否”。

此外,我希望下面的代码打印@ClientStates 中的状态列表,但它根本没有输出。

{
  "output": {
    "text": {
      "values": [
         "<? @ClientStates ?>"
       ],
      "selection_policy": "sequential"
    }
  }
}

为什么我无法从对话框 JSON 中访问预定义实体 @ClientStates?

标签: dialogibm-watsonwatson-conversation

解决方案


只有当它是输入的一部分时,您才能访问对话框中的实体。第二件事是不需要使用“包含”来检查输入是否包含该实体。

利用:

<? @ClientStates ? 'Yes' : 'No ?>

推荐阅读