我正在将aws lambda函数用于Google智能家居操作。我使用aws api网关来实现URL以到达lambda。我可以使用以下代码成功处理Google助手的意图:-
const {smarthome} = require('actions-on-google');
const app = smarthome();
app.onExecute((body, headers) => {
return {
requestId: 'ff36...',
payload: {
// ...
},
};
});
app.onQuery((body, headers) => {
return {
requestId: 'ff36...',
payload: {
// ...
},
};
});
app.onSync((body, headers) => {
console.log("body: "+JSON.stringify(body));
console.log("headers: "+JSON.stringify(headers));
return {
requestId: 'ff36...',
payload: {
// ...
},
};
});
exports.handler = app;
关于此功能的硬编码设备详细信息,它可以成功反映在google home应用中。但是要获得用户的实际设备,我需要从“ SYNC”意图中获取oauth令牌。但是我从这段代码中得到的只是这个输出:-
正文:{“ inputs”:[{“ intent”:“ action.devices.SYNC”}],“ requestId”:“ 5604033533610827657”}] >>
标题:{}
[与Alexa的技能的“发现指令”不同,后者在request.directive.endpoint.scope.token中包含令牌,而Google的意图似乎没有实现。对于O Auth,我正在使用AWS Cognito,它可以与Alexa帐户链接很好地工作,对于Google Home,它也可以成功地链接该帐户并显示我在lambda函数中进行硬编码的设备。
根据this答案,令牌在]中>
headers.authorization.substr(7)
我已经尝试过,但一无所获。它显示
“无法读取未定义的属性'substr'。”
我正在将aws lambda函数用于Google智能家居操作。我使用aws api网关来实现URL以到达lambda。我可以使用以下代码成功处理Google助手的意图:-const {...
Google客户端操作中的lambda handler假定请求标头位于Lambda代理集成的输入event.headers
参数内的event
处。如果您具有自定义Lambda集成或以其他方式修改了输入映射,则可能需要编辑mapping template以确保将标头放置在客户端库期望的位置。