Интегрировать действия SDK с AWS лямбда - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь разработать приложение-помощник Google с действиями SDK. Я нашел много примеров в Интернете, которые все используют облачные функции Google Firebase для развертывания. По этой ссылке (https://actions -on-google.github.io / actions-on-google-nodejs / ) я также обнаружил, что есть возможность развернуть функции actions sdk в aws lambda. Но, к сожалению, я не нашел ни одного примера, который показывает, как написать и развернуть действия SDK в AWS Lambda.

Кто-нибудь может мне помочь написать приложение, похожее на показанное здесь (https://github.com/actions-on-google/actionssdk-say-number-nodejs), и развернуть его в aws lambda?

Я попробовал следующее, чтобы сделать то же самое. Но это не сработало.

  1. Создал папку и инициализировал ее с помощью «npm init».
  2. Добавлен файл index.js.
  3. Затем запустил команду "npm install actions-on-google". Он появился в файле package.json.
  4. Создал zip-папку со всем источником внутри той папки, которую я создал.
  5. Создание лямбда-функции aws, загрузка zip-папки и установка «Обработчика» лямбда-функции как «index.fulfillment».
  6. Создал API-шлюз, связал его с лямбда-функцией и развернул его.
  7. Затем взял URL, отредактировал файл "actions.json" и выполнил команду gactions.
  8. Затем, когда я начал тестировать приложение в консоли действий с помощью симулятора, я получаю сообщение об ошибке «UnparseableJsonResponse API Version 2: не удалось проанализировать строку ответа JSON с ошибкой« INVALID_ARGUMENT »:« error_message: Cannot find field »

Вот код внутри файла index.js

'use strict';

const {actionssdk, SimpleResponse} = require('actions-on-google');

const app = actionssdk({debug: true});

app.intent('actions.intent.MAIN', (conv) => {
  conv.ask("welcome");
});


app.intent('actions.intent.TEXT', async (conv, input) => {
  conv.ask('You said ' + input);
});


exports.fulfillment = app

Вот облачные журналы от aws

2018-11-10T08:35:46.715Z    9dbb17f8-e4c3-11e8-bce3-730a5244a300
{
    "errorMessage": "Cannot convert undefined or null to object",
    "errorType": "TypeError",
    "stackTrace": [
        "Function.keys (<anonymous>)",
        "Lambda.<anonymous> (/var/task/node_modules/actions-on-google/dist/framework/lambda.js:36:36)",
        "Generator.next (<anonymous>)",
        "/var/task/node_modules/actions-on-google/dist/framework/lambda.js:22:71",
        "new Promise (<anonymous>)",
        "__awaiter (/var/task/node_modules/actions-on-google/dist/framework/lambda.js:18:12)",
        "/var/task/node_modules/actions-on-google/dist/framework/lambda.js:30:46",
        "omni (/var/task/node_modules/actions-on-google/dist/assistant.js:44:53)"
    ]
}

1 Ответ

0 голосов
/ 05 ноября 2018

Изменения кода для размещения его на AWS довольно просты. Вместо того, чтобы импортировать библиотеку firebase-functions и использовать ее, вам просто нужно установить конечную точку лямбды с помощью самого приложения dialogflow. Таким образом, код может выглядеть примерно так:

const { dialogflow } = require('actions-on-google')

const app = dialogflow()

// Setup intent handlers with app.intent() here

exports.factsAboutGoogle = app
...