如何在aws lambda中使用'actions-on-google'libray

时间:2017-11-30 09:43:36

标签: aws-lambda actions-on-google

在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});

2 个答案:

答案 0 :(得分:3)

要让Google Action在AWS Lambda上运行,您需要做两件事:

  • 以可在Lambda上执行的方式对您的应用进行编码
  • 为Lambda函数创建一个API网关,然后可以将其用于Dialogflow Fulfillment

我相信第一个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);
    }