沃森会话实体数组

时间:2017-09-01 20:59:56

标签: ibm-watson watson-conversation

我创建了一个含有少量水果的实体(苹果,香蕉,橙子,鳄梨)

当我的用户说出我需要检查的任何意图是否有一个@Fruits工作正常,但如果我的用户说2个或更多水果我需要将所有保存在一个数组中。我怎么能用插槽呢?因为在我的测试中他只保存最后一个(如果我打印$ myFruits)

TKS

2 个答案:

答案 0 :(得分:0)

当用户键入两个或更多值,并且此值在一个实体内时,值将保存在array内,您可以访问该实体。例如......

你可以在我的例子中看到,如果我输入两种风味,我的控制台中会出现一个数组中的两个值......

<强>对话框:

enter image description here

<强>控制台:

enter image description here

因此,如果您想要实体@fruits中的所有值。您可以使用此方法保存在一个上下文变量中(例如:$fruits):

 <? entities['fruits'][0].value + entities['fruits'][1].value ?> //if types two fruits

要在对话框中显示此内容,您可以使用以下方法:

{
  "output": {
    "text": "This is the array: <? $fruits.join(', ') ?>"
  }
}

返回将是:

This is the array: calabresa, marguerita,

如果要使用代码访问实体的所有值,则需要访问调用消息的返回(对于访问实体,意图,上下文变量等),并使用以下代码:

var arrayEntitie = response.entities 

    for (var i=0; i < arrayEntitie.length; i++) {
        if (arrayEntitie[i].name === 'calabreza') { //make your condition
            //do something
        }
    }
  • 访问方法的官方文档here

  • 您可以使用上下文变量here通过IBM Developer查看此Github存储库。

答案 1 :(得分:0)

简单的方法是使用@ EntityName.values。它将以数组的形式将给定实体的所有值存储在上下文中。