Я использую aws лямбда-функцию для Google Smart Home Action. Я использовал aws api gateway для выполнения url для достижения лямбды. Я могу успешно обработать намерения помощника 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. Но для получения реальных устройств пользователя мне нужно получить токен oauth из намерения "SYN C". Но все, что я получил из этого кода, это: : "5604033533610827657"}
headers: {}
В отличие от умения "Discover Directive" умения Alexa, которое содержит токен в request.directive.endpoint.scope.token, намерение Google не делает кажется, нести его. Для O Auth я использую AWS Cognito, который отлично работает со связыванием учетной записи Alexa, а также для Google Home также может успешно связать учетную запись и показывать устройства, которые я жестко кодирую в лямбда-функции.
Согласно этот ответ, токен находится в
headers.authorization.substr (7)
Я пробовал это и ничего не получил.
"Не удается прочитать свойство 'substr' из неопределенного".