从 api.ai 获取 arguments/parameters 个值

Getting arguments/parameters values from api.ai

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

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

在我看来,none 列出的方法适用于这种情况。

请帮忙!

如果"animals"、"x"、"y"在API.AI中的Intent中定义为参数,则可以使用getArgument()定义的方法在 ApiAiApp.

所以以下应该有效:

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.
}

一般来说,API.AI 实体用于一些 已知值,而不是监听任何值并在 webhook 中进行验证。首先,我会确定您希望验证的实体类型。对于温度(x 和 y),我会使用 API.AI 的 system entities。为这些参数调用 getArgument()(如前一个答案中所述)应该 return 确切的数值。

对于动物,我会使用 API.AI 的 developer entities. You can upload them in the Entity console using JSON or CSV. You can enable API.AI's automated expansion 来允许用户说出您不支持的动物,然后 webhook 中的 getArgument() 将 return API.AI 识别的新值。您可以使用它来验证和响应适当的消息。对于每只动物,您还可以指定同义名称以及何时说出这些名称,getArgument() 将 return 该动物的规范实体值。

额外提示,如果您预计用户可能会说不止一种动物,请务必选中 API.AI 意图参数部分中的 Is List 框。