我试图了解conv.data
和conv.user.storage
的工作方式。
据我了解,conv.data
用于临时存储,而conv.user.storage
用于对话之间的时间更长。当我在本地测试时,我注意到conv.data
并不会真正保存下一轮,而只会保存同一轮。那么它与上下文相关吗?
另一方面,用户存储非常简单,您可以保存数据并将其保存在用户中,但限制为10,000字节。
但是我不明白的是这部分:
当助手无法将身份与用户匹配时,将在对话结束时清除用户存储的内容。助手无法将身份与用户匹配的情况的示例包括:
语音匹配已设置,没有匹配项。
用户禁用了个人数据。
这是否意味着如果用户现在正在使用该应用程序,然后同一对话中的其他人进入测试该应用程序,是否清除数据?
TLDR
-上下文是否与conv.data
相关,并且当上下文过期时,conv.data
被删除?
-当其他用户尝试使用您的帐户讲话时,您的应用程序数据会被删除吗?
答案 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()
之后关闭麦克风时将被丢弃)。