我使用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的经验总体上是积极的。这是迄今为止我们所需要的唯一功能,以至于我们无法通过当前的堆栈。"`
答案 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"
}
}
]
}
]
}