从api.ai获取参数/参数值

时间:2017-07-14 01:33:58

标签: node.js dialogflow actions-on-google

我现在停留在我的index.js中获取用户输入(用户说的内容)的问题。例如,用户说:请告诉我{animals}是否可以在温度{x}到{y}之间生活。我想得到什么动物,x和y的确切值(字符串),以便我可以检查它是否可以在我自己的服务器中。我想知道如何做到这一点,因为如果我将这三个参数注释到某些实体类别,实体需要映射到一些确切的键值。

ApiAiApp的方法非常有限:https://developers.google.com/actions/reference/nodejs/ApiAiApp

从我的角度来看,列出的方法都不适用于这种情况。

请帮忙!

2 个答案:

答案 0 :(得分:2)

通常,API.AI实体用于某些已知值,而不是在webhook中侦听任何值并进行验证。首先,我确定了您希望验证的实体类型。对于温度(x和y),我使用API​​.AI' s system entities。为这些参数调用getArgument()(如上一个答案中所述)应该返回确切的数字值。

对于动物,我使用API​​.AI' s developer entities。您可以使用JSON或CSV在Entity控制台中上传它们。您可以启用API.AI automated expansion以允许用户说出您不支持的动物,然后在webhook中获取getArgument(),webhook将返回API识别的新值.AI 。您可以使用它来验证并回复相应的消息。对于每只动物,您还可以指定同义名称,并且当使用其中任何一个时,getArgument()将返回该动物的规范实体值。

额外提示,如果您希望用户可能会说多个动物,请务必检查API.AI意图的参数部分中的Is List框。

答案 1 :(得分:0)

如果"动物"," x"," y"在API.AI中的Intent中定义为参数,然后您可以使用ApiAiApp中定义的getArgument()方法。

所以以下内容应该有效:

function tempCheck( app ){
  var animals = app.getArgument('animals');
  var x       = app.getArgument('x');
  var y       = app.getArgument('y');
  // Check the range and then use something like app.tell() to give a response.
}