在Google Action中使用API​​.AI启动对事件的意图

时间:2017-08-02 15:55:01

标签: actions-on-google api-ai

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

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

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

以下是我的意图设置方式: enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

听起来像你当前的实现,你有这样的流程:

  
      
  1. 用户说"预约附近的开球时间"。
  2.   
  3. get_location意图匹配。
  4.   
  5. get_location的webhook中,您可以检查用户之前是否已授予isPermissionGranted()权限。      
        
    • 如果他们之前已经获得批准,那么您可以继续查找当地课程。
    •   
  6.   
  7. 如果之前未授权,请从网络快讯拨打ask 询问用户是否允许他们获取获取位置的权限
  8.   
  9. 如果他们说"是",request-permission意图匹配。
  10.   
  11. request-permission的网络摘机中,您致电askForPermission(),助理会要求用户获取其位置的许可。
  12.   
  13. 您现在可以继续寻找当地的课程。
  14.   

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

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.   
  3. get_location意图匹配。
  4.   
  5. get_location的webhook中,您可以检查用户之前是否已授予isPermissionGranted()权限。      
        
    • 如果他们之前已经获得批准,那么您可以继续查找当地课程。
    •   
  6.   
  7. 如果之前未授权,则应拨打askForPermission(),仍然在get_location的网络聊天中。助理将要求用户获得他们所在位置的许可。
  8.   
  9. 要处理权限请求的响应,您需要创建一个新的intent并添加一个名为actions_intent_PERMISSION的事件(请参阅the docs以供参考)。当用户授予位置权限时,此事件将导致意图被触发。
  10.   
  11. 为这个新意图构建一个webhook,在其webhook中,通过isPermissionGranted()确认权限,然后继续查找本地课程。
  12.   

现在,对话框如下:

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.