用户存储空间

在 webhook 调用中,您可以在用户存储空间中跨会话存储特定用户的参数值。然后,您的 Action 稍后可以在提示和条件中使用这些存储的值,并且您的网络钩子代码可以在必要时访问用户存储空间中特定用户的值。

用户存储的状态通过 app.handle() 请求传递,并存储在 user 对象中。

跨对话读取和写入数据

如需更新或设置用户存储空间中的新值,请将该值分配给网络钩子调用中 user 对象的 params 字段。以下示例将用户存储空间中的“exampleColor”设为“red”:

Node.js

// Assign color to user storage
app.handle('storeColor', conv => {
  let color = 'red';
  conv.user.params.exampleColor = color;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "user": {
      "locale": "en-US",
      "params": {
        "verificationStatus": "VERIFIED",
        "exampleColor": "red"
      }
    }
  }
}
    

如需访问存储在用户存储空间中的数据,请在网络钩子调用中将其分配给一个变量。以下示例从用户存储空间的“exampleColor”中检索一个值:

Node.js

// Retrieve color from user storage
app.handle('getStoredColor', conv => {
  let color = conv.user.params.exampleColor;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "user": {
      "locale": "en-US",
      "params": {
        "verificationStatus": "VERIFIED",
        "exampleColor": "red"
      }
    }
  }
}
    

如需清除之前保存的值,请在 webhook 调用中将该值设置为 null。以下示例会清除用户存储空间中“exampleColor”的值:

Node.js

// Clear color from user storage
app.handle('clearStoredColor', conv => {
  conv.user.params.exampleColor = null;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "user": {
      "locale": "en-US",
      "params": {
        "verificationStatus": "VERIFIED"
      }
    }
  }
}
    

在提示中引用存储的值

您可以在提示中引用存储在用户存储空间中的值。如需引用该值,请使用 $user.params.PARAMETER_NAME 语法,其中 PARAMETER_NAME 是设置参数时在 webhook 中指定的名称。

例如,您之前将颜色值作为参数 exampleColor 存储在用户存储空间中。如需在提示中访问该值,您可以使用 $user.params.exampleColor 引用该值:

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Your favorite color is $user.params.exampleColor."
      }]
    }
  }]
}
    

在条件中引用存储的值

您还可以在conditions中引用存储在用户存储空间中的值。如需引用该值,请使用 user.params.PARAMETER_NAME 语法,其中 PARAMETER_NAME 是设置相应参数时在 webhook 中指定的名称。

例如,您之前将某个颜色值作为参数 exampleColor 存储在用户存储空间中,并且希望将其与某个条件中的值“red”匹配。在条件中,您将使用 user.params.exampleColor 引用存储的值。您的条件表达式应如下所示:

条件语法

user.params.exampleColor == "red"
    

用户存储数据的有效期

对于已通过验证的用户,存储在用户存储空间中的数据会根据其网络与应用活动记录设置过期,并且可由 Action 本身清除。对于未经验证的用户,Google 助理会在对话结束时清除用户存储空间中的内容。

Actions on Google 会根据对话开始时的各种指示标志在每次对话开始时设置用户的验证状态。例如,某用户在移动设备上登录了 Google 助理,其验证状态为 VERIFIED

以下是可能导致用户验证状态为 GUEST 的原因:

  • 用户关闭了个人信息相关结果功能。
  • 用户停用了自己的网络与应用活动记录。请注意,某些用户可能在网域级别停用了此设置。
  • 设备启用了 Voice Match,但匹配失败,或者用户在不使用语音的情况下调用 Google 助理(例如长按 Nest Home 设备)。
  • 用户未登录。

将数据存储在用户存储空间之前,请始终检查用户的验证状态,以防止访客用户与无法正常运作的功能互动。

向用户显示

作为用户,您可以查看在您调用的 Action 在用户存储空间中存储的数据。您还可以从特定 Action 中移除存储在用户存储空间中的数据,或阻止该服务记住您。

如需查看您存储的数据或阻止服务记住您,请按以下步骤操作:

  1. 前往 Google 助理目录
  2. 找到并选择您要查看或清除用户存储空间的操作。
  3. 滚动到页面底部:
    • 如需查看用户存储空间的内容,请点击[查看存储的数据]
    • 要重置存储在您用户存储空间中的该服务数据,请点击重置
    • 如需移除存储在用户存储空间中的数据并阻止该服务记住您,请点击停止 action_name 记住我