0

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

我用这个堆栈创建了几个谷歌操作,它们工作正常。

我想在 Google Home 对话过程中启动帐户关联。Google 提供的文档假定我使用的是 Node.js SDK,但我没有。

API.AI webhook 响应中需要返回什么来启动帐户链接?

如果一些使用 Node.js 的人可以打印出他们的 webhook 返回的响应对象,以便我知道我的 Lambda 函数需要返回哪些参数,那就可以回答这个问题。

-- 更新 Google Actions API https://developers.google.com/actions/reference/conversation的这个页面非常清楚地说明了如何通过 Google Actions API 请求 oauth2 帐户信息。

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

我尝试将“expected_inputs”字段放在我的 webhook 响应的根目录和“data”:{“google”:{...}} 字段中。都没有奏效。

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

4

1 回答 1

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


上一个答案:

您可以在开发人员参考中找到 JSON 布局(在下面复制),但Node.js 客户端库使这变得容易得多,而且看起来您可以在 Lambda 上安装 npm 模块

{
  "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"
          }
        }
      ]
    }
  ]
}
于 2017-02-14T19:39:05.217 回答