Aws lambda 无法从aws lambda中的google智能家居操作同步意图获取oauth令牌

Aws lambda 无法从aws lambda中的google智能家居操作同步意图获取oauth令牌,aws-lambda,actions-on-google,google-home,google-smart-home,Aws Lambda,Actions On Google,Google Home,Google Smart Home,我正在使用aws lambda函数进行谷歌智能家居操作。我使用AWSAPI网关作为实现url来访问lambda。我可以通过以下代码成功处理google assistant的意图:- const {smarthome} = require('actions-on-google'); const app = smarthome(); app.onExecute((body, headers) => { return { requestId: 'ff36...', payl

我正在使用aws lambda函数进行谷歌智能家居操作。我使用AWSAPI网关作为实现url来访问lambda。我可以通过以下代码成功处理google assistant的意图:-

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;
关于硬编码设备的详细信息,在这个函数中,它可以成功地反映在谷歌家庭应用程序中。但要获得用户的实际设备,我需要从SYNC intent获得oauth令牌。但我从这段代码中得到的只是这个输出:-

正文:{inputs:[{intent:action.devices.SYNC}],请求ID:5604033533610827657}

标题:{}

与Alexa的技能中的Discover指令不同,该指令包含request.Directive.endpoint.scope.token中的令牌,谷歌的意图似乎并不包含它。对于O Auth,我使用的是AWS Cognito,它可以与Alexa帐户链接一起工作,对于google home,它也可以成功链接帐户并显示我在lambda函数中硬编码的设备

根据回答,该令牌位于

headers.authorization.substr7

我试过了,什么也没有得到。它表明

无法读取未定义的属性“substr”


Google客户端库上的操作中的假设请求标头位于Lambda代理集成的输入事件参数内的event.headers处。如果您有自定义Lambda集成或以其他方式修改了输入映射,则可能需要编辑,以确保标题放置在客户端库期望的位置。

Lambda功能是否未获得HTTP标题?谢谢,当我检查AWS api网关上的cloudwatch日志时,我知道授权并没有通过网关,更改模板会有所帮助。现在它开始工作了。