名称和电子邮件实体的空响应
Null response for name and email entities
我在 API.AI 的文本响应中尝试了内置变量 "user" 方法 $user.name
和 $user.email
来问候用户并显示电子邮件 ID。是否有任何内置变量名用户?
示例(用户使用 Gmail 注册),
Response-Code, I had tried in API.AI's text-response dialog box:
Hi, $user.firstname
This is your $user.email
Expected:
User: Hi!
My-Assistant-App: Hi, Varun.
User: Show my email-id
My-Assistant-App: This is your ******@gmail.com
Output, I am getting in the My-Assistant-App:
User: Hi!
My-Assistant-app: Hi, $user.firstname
User: Show my email-id
My-Assistant-App: This is your $user.email
没有内置参数user
。
即使有这样的内置参数,它也不会自动公开电子邮件地址(可能也不会公开姓名)。
由于您在 Google 上使用 Actions,您可以使用它来获取 user information such as the user's name, but this will require using Fulfillment through a webservice. See How to fetch device location using API AI? 以了解更多相关信息(名称和位置是您可以请求权限的两件事)。
但是,电子邮件地址不是您可以通过这种方式请求的地址。为此,您可能还需要通过 account linking to link it to a Google identity. See 了解更多信息。
没有内置变量“user”。
如果你想要这样的功能,那么你需要启用account linking。使用返回的 access_token 并用它来获取姓名、电子邮件或任何内容。
很久以后我就能让它工作了。
我们必须先启用 webhook,我们可以在对话流程实现文档中看到如何启用 webhook
如果我们要使用 Google 助手,那么我们必须先在集成中启用 Google 助手集成。
然后按照下面提到的步骤在 google:-
上的操作中进行帐户链接
转到 google 云控制台 -> API 和服务 -> 凭据 -> OAuth 2.0 客户端 ID -> Web 客户端 -> 从那里记下客户端 ID、客户端密码
-> 下载 JSON - 来自 json 记下项目 ID,auth_uri,token_uri
-> 授权重定向 URIs -> 将我们应用程序的 URL 列入白名单 -> 在这个 URL 固定部分是 https://oauth-redirect.googleusercontent.com/r/ 并在 URL 中附加项目 ID
-> 保存更改
在 Google 上的操作 -> 帐户 link 设置
1.授权类型=授权码
2.客户信息
1. 填写client id,client secrtet, auth_uri, token_uri
2. 输入身份验证 uri 作为 https://www.googleapis.com/auth and token_uri as https://www.googleapis.com/token
3. 保存并 运行
4.在google助手上运行ning会报错,不用担心
5. 返回助手设置中的帐户 linking 部分并输入 auth_uri 为 https://accounts.google.com/o/oauth2/auth
token_uri 作为 https://accounts.google.com/o/oauth2/token
6. 将范围设为 https://www.googleapis.com/auth/userinfo.profile and https://www.googleapis.com/auth/userinfo.email
我们很高兴去。
7. 保存更改。
在托管服务器日志中,我们可以看到访问令牌值,通过访问令牌,我们可以获得有关电子邮件地址的详细信息。
- 将访问令牌附加到此 link“https://www.googleapis.com/oauth2/v1/userinfo?access_token=”,我们可以在生成的 json 页面中获得所需的详细信息。
accessToken = req.get("originalRequest").get("data").get("user").get("accessToken")
r = requests.get(link)
print("Email Id= " + r.json()["email"])
print("Name= " + r.json()["name"])
由于提出了最初的问题,现在有一些方法可以获取此信息 - 但有一些注意事项。
您现在可以使用 Google 登录助手获取个人资料信息,例如他们的 Google ID 和姓名。如果他们允许在个人资料中使用他们的电子邮件地址,这也会包括在内。
如果您正在使用 actions-on-google 库,this will be available in your Intent Handler in conv.user.profile.payload
. If that isn't set, you can request it by using the Sign-In Helper 请求它。
如果您正在使用 multivocal,您可以将 User/IsAuthenticated
设置为要求,并且信息将在 User/Profile
.
下的环境中可用
无论哪种情况,用户都必须在第一时间授予您获取信息的权限。之后,此信息应该可用于所有后续请求。
我在 API.AI 的文本响应中尝试了内置变量 "user" 方法 $user.name
和 $user.email
来问候用户并显示电子邮件 ID。是否有任何内置变量名用户?
示例(用户使用 Gmail 注册),
Response-Code, I had tried in API.AI's text-response dialog box:
Hi, $user.firstname
This is your $user.email
Expected:
User: Hi!
My-Assistant-App: Hi, Varun.
User: Show my email-id
My-Assistant-App: This is your ******@gmail.com
Output, I am getting in the My-Assistant-App:
User: Hi!
My-Assistant-app: Hi, $user.firstname
User: Show my email-id
My-Assistant-App: This is your $user.email
没有内置参数user
。
即使有这样的内置参数,它也不会自动公开电子邮件地址(可能也不会公开姓名)。
由于您在 Google 上使用 Actions,您可以使用它来获取 user information such as the user's name, but this will require using Fulfillment through a webservice. See How to fetch device location using API AI? 以了解更多相关信息(名称和位置是您可以请求权限的两件事)。
但是,电子邮件地址不是您可以通过这种方式请求的地址。为此,您可能还需要通过 account linking to link it to a Google identity. See
没有内置变量“user”。
如果你想要这样的功能,那么你需要启用account linking。使用返回的 access_token 并用它来获取姓名、电子邮件或任何内容。
很久以后我就能让它工作了。 我们必须先启用 webhook,我们可以在对话流程实现文档中看到如何启用 webhook 如果我们要使用 Google 助手,那么我们必须先在集成中启用 Google 助手集成。 然后按照下面提到的步骤在 google:-
上的操作中进行帐户链接转到 google 云控制台 -> API 和服务 -> 凭据 -> OAuth 2.0 客户端 ID -> Web 客户端 -> 从那里记下客户端 ID、客户端密码 -> 下载 JSON - 来自 json 记下项目 ID,auth_uri,token_uri -> 授权重定向 URIs -> 将我们应用程序的 URL 列入白名单 -> 在这个 URL 固定部分是 https://oauth-redirect.googleusercontent.com/r/ 并在 URL 中附加项目 ID -> 保存更改
在 Google 上的操作 -> 帐户 link 设置 1.授权类型=授权码 2.客户信息 1. 填写client id,client secrtet, auth_uri, token_uri 2. 输入身份验证 uri 作为 https://www.googleapis.com/auth and token_uri as https://www.googleapis.com/token 3. 保存并 运行 4.在google助手上运行ning会报错,不用担心 5. 返回助手设置中的帐户 linking 部分并输入 auth_uri 为 https://accounts.google.com/o/oauth2/auth token_uri 作为 https://accounts.google.com/o/oauth2/token 6. 将范围设为 https://www.googleapis.com/auth/userinfo.profile and https://www.googleapis.com/auth/userinfo.email 我们很高兴去。 7. 保存更改。
在托管服务器日志中,我们可以看到访问令牌值,通过访问令牌,我们可以获得有关电子邮件地址的详细信息。
- 将访问令牌附加到此 link“https://www.googleapis.com/oauth2/v1/userinfo?access_token=”,我们可以在生成的 json 页面中获得所需的详细信息。
accessToken = req.get("originalRequest").get("data").get("user").get("accessToken")
r = requests.get(link) print("Email Id= " + r.json()["email"]) print("Name= " + r.json()["name"])
由于提出了最初的问题,现在有一些方法可以获取此信息 - 但有一些注意事项。
您现在可以使用 Google 登录助手获取个人资料信息,例如他们的 Google ID 和姓名。如果他们允许在个人资料中使用他们的电子邮件地址,这也会包括在内。
如果您正在使用 actions-on-google 库,this will be available in your Intent Handler in conv.user.profile.payload
. If that isn't set, you can request it by using the Sign-In Helper 请求它。
如果您正在使用 multivocal,您可以将 User/IsAuthenticated
设置为要求,并且信息将在 User/Profile
.
无论哪种情况,用户都必须在第一时间授予您获取信息的权限。之后,此信息应该可用于所有后续请求。