Google Assistant/Dialogflow/Actions: 如何获取用户的联系人?

Google Assistant/Dialogflow/Actions: how to get user's contacts?

如何获取使用我的 Dialogflow 的用户的联系人?

一个人可以发音phone,但是这种联系方式不适合发送丰富的消息(有点大的文本和文件)。此外,phone 被许多人认为是过于敏感的信息

并且几乎不可能正确地发音 email,google 会像识别一堆随机单词一样识别它。

那么,我有什么选择?

根据 Google 政策上的操作,您应该从用户那里获得明确的访问权限以获取他们的电子邮件地址。您可以通过 Google 项目控制台上的操作中的帐户链接来执行此操作:

  1. 在 Google 控制台上的操作的 "Account Linking" 下,单击 "Yes, allow users to sign up for new accounts via voice" 并在“链接类型”字段中选择 "Google Sign In"。
  2. 在您的 webhook 中要求用户使用 conv.ask(new SignIn('To get your account details')) 登录。
  3. 然后,使用 actions_intent_SIGN_IN 事件创建 Dialogflow 意图并允许实现。

然后,在实现上一步创建的意图时,您将有权访问用户的电子邮件:

app.intent('Get Signin', (conv, params, signin) => {
  if (signin.status === 'OK') {
    const email = conv.user.email
    conv.ask(`I got your email as ${email}. What do you want to do next?`)
  } else {
    conv.ask(`I won't be able to save your data, but what do you want to next?`)
  }
})

参考 -