在 Actions on Google 应用程序的对话中保存授予的权限

Save granted permissions across conversations in a Actions on Google app

我在 Google 应用程序上编写了一个操作,我在其中请求用户许可。一切正常。现在我想在他的第一次对话中征求用户的许可。当他第二次开始对话时,操作应用程序应该记住该用户之前在对话中授予过权限。因此,当我每次开始对话时用户不必接受许可时会更舒服。有什么办法可以使这成为可能吗?

简答:不能。

但是,有些事情你不一定需要这样做。例如,如果您要询问他们的姓名 - 它可能不会更改,因此您可以第一次询问此信息,然后缓存答案。

如果您正在使用 node.js 库,您可以通过将信息添加到 app.userStorage 对象来轻松地做到这一点。这将在会话之间为您保存。所以你的代码可能看起来像这样:

var userName = app.userStorage.userName;
if( !userName ){
  if( app.isPermissionGranted() ){
    userName = app.userStorage.userName = app.getUser().displayName;
  } else {
    requestPermission();
  }
}

(虽然我还没有测试过,但它看起来大致正确。)

如果您请求定位,这可能是也可能不是一个好的解决方案。尽管 Google 家用设备的位置是固定的,但使用 phone 中的智能助理可能会发生变化。在这种情况下,您需要每次都重新请求它。

显然,这在很多情况下都是不可取的,并且团队意识到这是一种多么糟糕的体验。没有关于何时的承诺,但希望他们正在研究更好的解决方案。