适用于Google Home的API.AI - 需要在webhook中启动帐户关联?

时间:2017-02-13 20:02:29

标签: lambda dialogflow google-home

我使用AWS Lambda和Python来响应API.AI的webhook请求。

我已经使用此堆栈创建了多个Google动作,但它们运行正常。

我想在Google Home上的对话中启动帐户关联。 Google提供的文档假设我使用的是Node.js SDK,而我并非如此。

需要在API.AI webhook响应中返回什么才能启动帐户关联?

如果有些人使用Node.js打印出他们的webhook返回的响应对象,那么我知道我的Lambda函数需要返回什么参数,这将回答这个问题。

- UPDATE Google操作API https://developers.google.com/actions/reference/conversation的此页面非常清楚如何通过Google Actions API请求oauth2帐户信息。

但是,我使用的是API.AI.如何格式化我对API.AI的webhook响应,以便将请求的帐户权限传递给Google Actions?

我已尝试过" expected_inputs"我的webhook响应的根目录以及"数据":{" google":{...}}字段中的字段。两者都没有。

到目前为止,我们对API.AI的经验总体上是积极的。这是迄今为止我们所需要的唯一功能,以至于我们无法通过当前的堆栈。"`

1 个答案:

答案 0 :(得分:1)

更新: 您的webhook响应需要包含以下表单的JSON对象来请求权限:

{
  "speech": "...",  // ASCII characters only
  "displayText": "...",
  "data": {
    "google": {
      "expect_user_response": true,
      "is_ssml": true,
      "permissions_request": {
        "opt_context": "...",
        "permissions": [
          "NAME",
          "DEVICE_COARSE_LOCATION",
          "DEVICE_PRECISE_LOCATION"
        ]
      }
    }
  },
  "contextOut": [...],
}

目前唯一可用的权限是NAME,DEVICE_PRECISE_LOCATION和DEVICE_COARSE_LOCATION。这在此处记录:https://developers.google.com/actions/reference/webhook-format#response

上一个回答:

你可以在developer reference(下面转载)中找到JSON布局,但Node.js client library使这更容易,看起来你可以install npm modules on Lambda

{
  "user": {
    "user_id": "...",
    "profile": {
      "given_name": "John",
      "family_name": "Doe",
      "display_name": "John Doe"
    },
    "access_token": "..."
  },
  "device": {
    "location": {
      "coordinates": {
        "latitude": 123.456,
        "longitude": -123.456
      },
      "formatted_address": "1234 Random Road, Anytown, CA 12345, United States",
      "city": "Anytown",
      "zip_code": "12345"
    }
  },
  "conversation": {
    "conversation_id": "...",
    "type": "ACTIVE",
    "conversation_token": "..."
  },
  "inputs": [
    {
      "intent": "assistant.intent.action.MAIN",
      "raw_inputs": [
        {
          "query": "..."
        }
      ],
      "arguments": [
        {
          "name": "destination",
          "raw_text": "SFO",
          "location_value": {
            "latlng": {
              "latitude": 37.620565,
              "longitude": -122.384964
            },
            "formatted_address": "1000 Broadway, San Francisco, CA 95133"
          }
        }
      ]
    }
  ]
}