如何在Google Actions NLPGoogle助手控制台中将随机输入值作为广告位变量?

问题描述

假设我有一个应用程序,可以向某人提供城市的天气。

一个场景提示:“您想要哪个城市的天气?”

然后我必须收集一个名为conv.param.city的插槽/参数,然后在我的节点webhook中使用它:

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const app = conversation();

app.handle('schedule',(conv,{location}) => {  
  let temperature = callApi(location);// this part doesn't matter right Now

  **conv.add(`You want to kNow the weather in ${location}`);
  conv.close(`The weather in ${location} is ${temperature}`);
});

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

据我所知,您只能接受由类型/意图预定义的参数/插槽。我无法列出要培训的所有城市。我基本上该怎么说:无论用户在此时说什么,都要将该词放入此变量中。

我该如何使用Google Actions SDK?

解决方法

您可以通过将intent参数类型设置为自由文本来完成此操作(这里是示例存储库之一的example)。

freeText: {}

如果将此类型应用于intent参数,则可以使用训练短语来提供必要的上下文,以说明短语中“ word”应匹配的位置(来自同一仓库的example)。

我无法列出要培训的所有城市。

如果您的API可以返回支持的位置集,则存在另一个选项。您还可以使用runtime type overrides从API提供的位置列表中动态生成类型。这将更加准确,但是取决于您的数据源是什么样。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...