2

我正在开发一个 Google 助理操作,并希望创建一个可以自动启动我拥有的意图的事件。问题是我似乎找不到任何关于如何实际定义事件的好的文档,因此它启动了一个意图,而无需在两者之间与用户进行通信。

举个例子。我附上了我试图使用的意图的图像。我想让用户get_location通过话语提示意图。从这里我的代码检查我们是否已经拥有权限,如果我们没有,我希望request-permission通过事件启动意图。我如何设置事件以完成此操作?

这是我正在寻找的对话/工作流程: - 用户说:“在我附近预订开球时间” - 这会启动我的 get_location 意图 - get_location 意图检查是否已授予权限isPermissionGranted() - 它意识到没有授予权限- 启动请求许可意图 - 提示用户许可

这是我的意图的设置方式: 在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

听起来在您当前的实现中,您有这样的流程:

  1. 用户说“在附近预订开球时间”。
  2. get_location意图匹配。
  3. 在 webhook 中get_location,您检查用户之前是否已授予isPermissionGranted().
    • 如果他们之前已经批准,您可以继续查找他们的本地课程。
  4. 如果他们之前没有授予,您ask从 webhook调用请求用户的许可,请求他们获得他们的位置的许可
  5. 如果他们说“是”,则request-permission意图匹配。
  6. 在 的 webhook 中request-permission,您拨打电话askForPermission(),助理会要求用户允许获取他们的位置。
  7. 您现在继续查找他们的本地课程。

在这种情况下,对话框将如下所示:

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 步开始的过程,在该过程中,您请求用户的许可来请求他们获得他们的位置的许可

为此,您可以实现以下流程:

  1. 用户说“在附近预订开球时间”。
  2. get_location意图匹配。
  3. 在 webhook 中get_location,您检查用户之前是否已授予isPermissionGranted().
    • 如果他们之前已经批准,您可以继续查找他们的本地课程。
  4. 如果他们之前没有授予,您应该调用askForPermission(),仍然在 webhook 中为get_location. 助理会询问用户是否允许获取他们的位置。
  5. 要处理来自权限请求的响应,您需要创建一个新意图并向其添加一个名为的事件actions_intent_PERMISSION(请参阅文档以获取参考)。当用户授予位置权限时,此事件将触发 Intent。
  6. 为这个新意图构建一个 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.
于 2017-08-04T18:08:47.943 回答