0

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

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

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

谢谢

编辑:

我之前没有提到这一点:在谷歌助手触发我的意图后,我有 api.ai 向 webhook 发送请求。api.ai 期望的响应在此处定义。我尝试在响应中包含额外的字段,但这些不包含在来自 api.ai 的任何未来意图请求中。我还尝试将字段和值添加到响应的谷歌特定部分(在此处定义)无济于事。

作为我感兴趣的一个例子,在响应 Alexa 请求时,我们可以包含一个 json 字段“sessionAttributes”,然后亚马逊在作为该交互一部分的任何未来请求中传递该字段。

在这种情况下,我在第一个意图(随后用于提取记录)上查询数据库键并将该键传递给 sessionAttributes 以避免对我收到的每个意图请求执行该查找。

4

2 回答 2

2

The equivalent that you are looking for to sessionAttributes in Alexa dev depends on whether you are using an API.ai webhook or a conversation webhook. Reference this doc for more info on the differences.

Since you are using API.ai, assuming you are using the Node.js client library, use the snippet below. 'Contexts' can store data, not just serve as a flag of sorts to establish where you are in a conversation. Call setContext just before you call 'ask' and close out your webhook fulfillment.

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

Then for the next round of fulfillment, retrieve the JSON from the parameters object within the Context. Get it with:

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

Reference the examples in these docs for more info.

于 2017-06-09T07:54:58.767 回答
0

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

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

于 2017-05-03T07:50:42.317 回答