保存的对话如何在Dialogflow中工作?

时间:2019-01-15 11:40:46

标签: dialogflow actions-on-google

我试图了解conv.dataconv.user.storage的工作方式。 据我了解,conv.data用于临时存储,而conv.user.storage用于对话之间的时间更长。当我在本地测试时,我注意到conv.data并不会真正保存下一轮,而只会保存同一轮。那么它与上下文相关吗?

另一方面,用户存储非常简单,您可以保存数据并将其保存在用户中,但限制为10,000字节。

但是我不明白的是这部分:

当助手无法将身份与用户匹配时,将在对话结束时清除用户存储的内容。助手无法将身份与用户匹配的情况的示例包括:

  • 语音匹配已设置,没有匹配项。

  • 用户禁用了个人数据。

这是否意味着如果用户现在正在使用该应用程序,然后同一对话中的其他人进入测试该应用程序,是否清除数据?

TLDR -上下文是否与conv.data相关,并且当上下文过期时,conv.data被删除? -当其他用户尝试使用您的帐户讲话时,您的应用程序数据会被删除吗?

1 个答案:

答案 0 :(得分:1)

您的大部分情况都是正确的。让我们看看您说或问的几件事。

为什么conv.data不保存下一轮?

这取决于您所说的“转弯”。 conv.data是在一次对话中保存的-从调用动作到使用conv.close()或类似动作“关闭麦克风”的动作开始。 AoG将此保持为一致的会话模型。

(当您使用媒体响应并播放很长的音频文件时,会出现一些错误。但这是例外。)

conv.data是使用Dialogflow上下文实现的吗?

如果您将AoG与Dialogflow一起使用-是的。

您可以将conv.data与Action SDK一起使用,并且它不使用Dialogflow上下文。

但是当上下文出现时它不会过期吗?

是,不是。 conv.data的上下文是作为持久上下文创建的(寿命为99),因此在上下文过期之前还需要一段时间。该库还可以在每个回合时刷新上下文,因此可以将寿命保持在99岁,并为上下文重置20分钟的计时器。

对于conv.user.storage,如果用户现在正在使用该应用,然后同一对话中的其他人加入该应用进行测试,是否清除了数据?

不。当用户说出“ OK Google”(好Google)或“ Hey Google”(嗨Google)这两个热门字词时,就会确定用户身份。之后,多个用户可以在对话期间讲话,并且设备将其视为同一帐户。

“助手”不会试图弄清楚是谁在谈话中说什么-只是在开始时。

因此,如果它在对话开始时标识了用户,则使用其storage对象。如果没有,它将创建一个新的storage对象,该对象在对话结束时(conv.close()之后关闭麦克风时将被丢弃)。