在google上的操作中,请求和响应对象都需要提供此库的输入。但在lambda函数中,只存在请求对象。
那我怎么能覆盖呢?
在aws lambda格式中 exports.handler = function(event,context,callback){// event是请求对象,使用callback()functon提供响应 }
action-on-google对象创建为:
const DialogflowApp = require('actions-on-google')。DialogflowApp;
const app = new DialogflowApp({request:request,response:response});
答案 0 :(得分:3)
要让Google Action在AWS Lambda上运行,您需要做两件事:
我相信第一个setp无法使用Actions SDK进行现成的操作。如果您使用的是Jovo这样的框架,则可以创建适用于Amazon Alexa和Google智能助理的代码,并将其托管在AWS Lambda上。
您可以找到有关设置“Hello World”Google Action的分步教程,在Lambda上托管它,并在此处创建API网关:https://www.jovo.tech/blog/google-action-tutorial-nodejs/
免责声明:我是Jovo的创始人之一。很高兴回答任何进一步的问题。
答案 1 :(得分:1)
这只是答案的一半: 好吧,所以我不认为我可以告诉你如何让google sdk上的操作正确地在AWS Lambda上运行。 也许它很容易,我只是不知道,需要阅读所有知识。
我的,“容易离开”,但最后你可能会有更多的工作解决方案,只需要自己解释请求jsons并回复一条消息,如下所示
这将是一个极端琐碎的javascript函数来创建一个极端琐碎的JSON响应。
参数: 消息 是您要添加为答案的字符串。 广告位 应该是一个可用于偏置语音识别的数组。 (如果你不想偏言,你可以给这个函数一个空数组。)
州 是任何一种可用于浏览的javascript对象,这是为了让你自己保持状态或其他东西它将在所有意图之间转移。
这是语音请求的标准回复。 您可以为此添加除语音之外的其他平台,通过添加不同的初始提示,请参阅文档中的JSON选项卡: https://developers.google.com/actions/assistant/responses#json
function answerWithMessage(message,slots,state){
let newmessage = message.toLowerCase();
let jsonResponse = {
conversationToken: JSON.stringify(state),
expectUserResponse: true,
expectedInputs: [
{
inputPrompt: {
initialPrompts: [
{
textToSpeech: newmessage
}
],
noInputPrompts: []
},
possibleIntents: [
{
intent: "actions.intent.TEXT"
}
],
speechBiasingHints: slots
}
]
};
return JSON.stringify(jsonResponse,null, 4);
}