Google Assistant/Dialogflow/Actions: 如何获取用户的联系人?
Google Assistant/Dialogflow/Actions: how to get user's contacts?
如何获取使用我的 Dialogflow 的用户的联系人?
一个人可以发音phone,但是这种联系方式不适合发送丰富的消息(有点大的文本和文件)。此外,phone 被许多人认为是过于敏感的信息
并且几乎不可能正确地发音 email,google 会像识别一堆随机单词一样识别它。
那么,我有什么选择?
根据 Google 政策上的操作,您应该从用户那里获得明确的访问权限以获取他们的电子邮件地址。您可以通过 Google 项目控制台上的操作中的帐户链接来执行此操作:
- 在 Google 控制台上的操作的 "Account Linking" 下,单击 "Yes, allow users to sign up for new accounts via voice" 并在“链接类型”字段中选择 "Google Sign In"。
- 在您的 webhook 中要求用户使用
conv.ask(new SignIn('To get your account details'))
登录。
- 然后,使用
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?`)
}
})
参考 -
如何获取使用我的 Dialogflow 的用户的联系人?
一个人可以发音phone,但是这种联系方式不适合发送丰富的消息(有点大的文本和文件)。此外,phone 被许多人认为是过于敏感的信息
并且几乎不可能正确地发音 email,google 会像识别一堆随机单词一样识别它。
那么,我有什么选择?
根据 Google 政策上的操作,您应该从用户那里获得明确的访问权限以获取他们的电子邮件地址。您可以通过 Google 项目控制台上的操作中的帐户链接来执行此操作:
- 在 Google 控制台上的操作的 "Account Linking" 下,单击 "Yes, allow users to sign up for new accounts via voice" 并在“链接类型”字段中选择 "Google Sign In"。
- 在您的 webhook 中要求用户使用
conv.ask(new SignIn('To get your account details'))
登录。 - 然后,使用
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?`)
}
})
参考 -