使用Google操作传递状态数据

时间:2017-05-02 22:59:19

标签: google-api dialogflow actions-on-google google-home

我正在使用api.ai为Google Home开发Google Actions项目。

是否可以将状态参数作为响应的一部分传递给api.ai并将其包含在下一个请求中?

亚马逊Alexa API处理这样的流程,它派上了用场。

由于

编辑:

之前我没有提到过这个问题:我有一个api.ai在google助手触发我的意图后向webhook发送请求。响应api.ai期望定义为here。我已经尝试在响应中包含额外的字段,但这些字段未包含在api.ai的任何未来意图请求中。我也尝试将字段和值添加到响应的Google特定部分(defined here),但无济于事。

作为我感兴趣的一个例子,当回应Alexa请求时,我们可以包含一个json字段“sessionAttributes”,然后由Amazon在未来的任何请求中传递这些字段。

在这个实例中,我在第一个intent上查询数据库键(随后用于拉取记录)并在sessionAttributes中传递该键,以避免对我收到的每个intent请求执行查找。

2 个答案:

答案 0 :(得分:2)

您在Alexa开发中寻找sessionAttributes的等效项取决于您使用的是API.ai webhook还是对话webhook。有关差异的更多信息,请参考this doc

由于您使用的是API.ai,假设您使用的是Node.js客户端库,请使用下面的代码段。 '上下文'可以存储数据,而不仅仅是作为一种标志,以确定您在对话中的位置。在你打电话之前打电话给setContext'问'并关闭你的webhook履行。

app.setContext('<context name>', <lifespan of context>, <JSON to store>)

然后,对于下一轮实现,从Context中的parameters对象检索JSON。得到它:

var myContext = app.getContext('<context name>')

参考these docs中的示例以获取更多信息。

答案 1 :(得分:0)

您可以在API.ai中创建一个可选参数来捕获/存储此值,并使用标记附加要发送到API.ai的任何消息,然后附加要缓存的数据库值,以便API.ai从标记中识别要作为参数缓存的值,这也将从API.ai中传回,所以如果你需要链接/循环这个,那么你再次检查它是否有特殊的&#39;追加& #39;参数值以将其附加到下一个用户消息。

话虽如此,上下文可能会以更直接的方式实现您想要实现的相同目标