我正在开发一个Google智能助理操作,并希望创建一个可以自动启动我拥有的意图的事件。问题是我似乎无法找到关于如何实际定义事件的任何好文档,因此这样就可以启动一个intent而无需与用户之间进行通信。
举个例子..我附上了我想要使用的意图的图像。我想用一个话语让用户提示get_location
意图。从这里我的代码检查我们是否已经拥有权限,如果我们不这样做,我希望通过事件启动意图request-permission
。如何设置事件以便完成此操作?
这是我正在寻找的对话/工作流程:
- 用户说:'预约我附近的开球时间'
- 这会启动我的get_location意图
- get_location intent检查是否授予isPermissionGranted()
权限
- 它意识到没有授予许可
- 启动请求权限意图
- 提示用户许可
答案 0 :(得分:1)
听起来像你当前的实现,你有这样的流程:
- 用户说"预约附近的开球时间"。
get_location
意图匹配。- 在
get_location
的webhook中,您可以检查用户之前是否已授予isPermissionGranted()
权限。
- 如果他们之前已经获得批准,那么您可以继续查找当地课程。
- 如果之前未授权,请从网络快讯拨打
ask
询问用户是否允许他们获取获取位置的权限。- 如果他们说"是",
request-permission
意图匹配。- 在
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
意图匹配。- 在
get_location
的webhook中,您可以检查用户之前是否已授予isPermissionGranted()
权限。
- 如果他们之前已经获得批准,那么您可以继续查找当地课程。
- 如果之前未授权,则应拨打
askForPermission()
,仍然在get_location
的网络聊天中。助理将要求用户获得他们所在位置的许可。- 要处理权限请求的响应,您需要创建一个新的intent并添加一个名为
actions_intent_PERMISSION
的事件(请参阅the docs以供参考)。当用户授予位置权限时,此事件将导致意图被触发。- 为这个新意图构建一个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.