DialogFlow conv.user.id已弃用 - 有何影响?

dav*_*eij 2 node.js actions-on-google dialogflow-es

DialogFlow V2用户ID类似我使用来自conv.user.id(dialogflow v2)的用户ID来(匿名)确定我的Dialogflow应用程序中的用户.但是,我收到了日志消息:

 conv.user.id is *DEPRECATED*: Use conv.user.storage to store data instead 
Run Code Online (Sandbox Code Playgroud)

这是否意味着我(很快)将无法再访问用户ID?我知道我可以在conv.user.storage中存储数据,但我需要id - 而不是存储.

有关如何安全失败的想法吗?

//代码片段:

app.intent('Default Welcome Intent', conv => {
  var userID = conv.user.id;
  // do something
});
Run Code Online (Sandbox Code Playgroud)

Pri*_*ner 6

匿名用户身份已被弃用,将于2019年6月1日(一年后)正式删除.因此,您的代码段将失败.

修复程序取决于您使用id的确切方式和原因,但是对于最基本的需求,您可以执行以下操作:

  1. 检查您是否在userStore中存储了一个id.如果你有 - 使用此ID.

  2. 如果还没有,生成一个id(生成UUID是一个很好的方法),使用它作为你的id,并将其存储在userStore中以供将来参考.

执行此操作的代码可能如下所示:

if ('userId' in conv.user.storage) {
  userId = conv.user.storage.userId;
} else {
  // generateUUID is your function to generate ids.
  userId = generateUUID();
  conv.user.storage.userId = userId
}
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望只是计划使用Google Sign-In for the Assistant来获取Google UserID.

编辑: 条件中的userId应该被引用.

  • 所以我用扬声器测试了它.Google表示如果它无法识别语音,则会创建一个唯一的ID(与语音匹配一样),因此我已根据您对存储的建议实施.但是,使用扬声器语音输入时,此用户存储似乎也是匿名且临时的.我将尝试链接到Google帐户以使用Google UserID.如果这不起作用,它可能会得到棘手的帐户识别. (2认同)