我正在为谷歌主页开发一个使用api.ai的谷歌行动项目。
是否可以将状态参数作为响应的一部分传递给api.ai,并将其包含在下一个请求中?
Amazon Alexa API处理这样的流,它派上了用场。
谢谢
编辑:
我之前没有提到这一点:我让api.ai在谷歌助手触发我的意图后向一个webhook发送请求。api.ai期望的响应是defined here。我尝试在响应中包含额外的字段,但这些字段不会包含在api.ai未来的任何意图请求中。我还尝试将字段和值添加到响应的谷歌特定部分(defined here),但无济于事。
作为我感兴趣的一个例子,当响应Alexa请求时,我们可以包括一个json字段"sessionAttributes“,然后亚马逊会在任何未来的请求中传递它,这些请求是交互的一部分。
在本例中,我在第一次意图时查询数据库键(随后用于提取记录),并在sessionAttributes中传递该键,以避免对收到的每个意图请求执行查找。
发布于 2017-06-09 15:54:59
你在Alexa dev中寻找的sessionAttributes的等价物取决于你使用的是API.ai webhook还是会话webhook。有关差异的更多信息,请参考this doc。
由于您使用的是API.ai,因此假设您使用的是Node.js客户端库,请使用下面的代码片段。“上下文”可以存储数据,而不仅仅是作为一种标志来确定你在对话中的位置。在你调用'ask‘之前调用setContext,并结束你的webhook实现。
app.setContext('<context name>', <lifespan of context>, <JSON to store>)
然后,对于下一轮实现,从上下文中的参数对象检索JSON。通过以下方式获取信息:
var myContext = app.getContext('<context name>')
有关更多信息,请参考these docs中的示例。
发布于 2017-05-03 15:50:42
您可以在API.ai中创建一个可选参数来捕获/存储此值,并将发送到API.ai的任何消息附加一个标记,然后附加您想要缓存的数据库值,这样API.ai就可以从标记中识别要缓存的值作为参数,这也将被传递回API.ai,所以如果您需要链接/循环此参数,您只需再次检查它是否具有特殊的“append”参数值,以将其附加到下一条用户消息。
也就是说,上下文可能会以一种更直接的方式实现您想要实现的最终目标
https://stackoverflow.com/questions/43748518
复制相似问题