听起来在您当前的实现中,您有这样的流程:
- 用户说“在附近预订开球时间”。
get_location
意图匹配。
- 在 webhook 中
get_location
,您检查用户之前是否已授予isPermissionGranted()
.
- 如果他们之前已经批准,您可以继续查找他们的本地课程。
- 如果他们之前没有授予,您
ask
从 webhook调用请求用户的许可,请求他们获得他们的位置的许可。
- 如果他们说“是”,则
request-permission
意图匹配。
- 在 的 webhook 中
request-permission
,您拨打电话askForPermission()
,助理会要求用户允许获取他们的位置。
- 您现在继续查找他们的本地课程。
在这种情况下,对话框将如下所示:
User: Book a tee time nearby
App: Can I ask permission to get your location?
User: Yes
App: [from Assistant] Can I access your location?
User: Yes
App: Thanks, your local course is Pebble Beach and I booked you a tee time.
您试图避免从第 4 步开始的过程,在该过程中,您请求用户的许可来请求他们获得他们的位置的许可。
为此,您可以实现以下流程:
- 用户说“在附近预订开球时间”。
get_location
意图匹配。
- 在 webhook 中
get_location
,您检查用户之前是否已授予isPermissionGranted()
.
- 如果他们之前已经批准,您可以继续查找他们的本地课程。
- 如果他们之前没有授予,您应该调用
askForPermission()
,仍然在 webhook 中为get_location
. 助理会询问用户是否允许获取他们的位置。
- 要处理来自权限请求的响应,您需要创建一个新意图并向其添加一个名为的事件
actions_intent_PERMISSION
(请参阅文档以获取参考)。当用户授予位置权限时,此事件将触发 Intent。
- 为这个新意图构建一个 webhook,在其 webhook 中确认许可,
isPermissionGranted()
然后继续查找他们的本地课程。
现在,对话框将如下所示:
User: Book a tee time nearby
App: [from Assistant] Can I access your location?
User: Yes
App: Thanks, your local course is Pebble Beach and I booked you a tee time.