Не удалось инициализировать WebhookClient выполнения диалога в AWS Lambda - PullRequest
0 голосов
/ 25 мая 2018

Согласно документам DialogFLow Fulfillment , конструктору WebhookClient требуются объекты HTTP-запросов и ответов Express HTTP.Однако в лямбда-функции я получаю только event (запрос).Как мне создать объекты экспресс-запросов и ответов?

Я пробовал это до сих пор:

const {WebhookClient} = require('dialogflow-fulfillment');

exports.dialogflowFulfillment = async (event) => {
  let response = {};
  const agent = new WebhookClient({ event, response });

  function sayNiceThings(agent) {
    agent.add(`Nice to meet you!`);
  }

  let intentMap = new Map();
  intentMap.set('Say Nice Things', sayNiceThings);
  agent.handleRequest(intentMap);
};

1 Ответ

0 голосов
/ 29 декабря 2018

Создание приложения NodeJS Express

Установка пакета serverless-http для добавления лямбда-моста AWS

Установка диалоговых пакетов npm для выполнения и действий на google.

  npm init -f
  npm install --save express serverless-http
  npm install dialogflow-fulfillment
  npm install actions-on-google

Создайте файл index.js:

index.js:
=========
const serverless = require('serverless-http');
const bodyParser = require('body-parser');
const express = require('express');

const app = express();
app.use(bodyParser.json({ strict: false }));

const {WebhookClient, Card, Suggestion} = require('dialogflow-fulfillment');
const request = require('request');



app.get('/', function (req, res) {

  res.send('Hello World !!!\n');
  console.log("Testing express lambda\n");

})



app.post('/', function (req, res) {


    const agent = new WebhookClient({request: req, response: res});

    function test_handler(agent) {
      agent.add(`Welcome to my agent on AWS Lambda!`);
    }

    // Run the proper function handler based on the matched Dialogflow intent name
    let intentMap = new Map();
    intentMap.set('test-intent', test_handler);

    agent.handleRequest(intentMap);


})


module.exports.handler = serverless(app);

Добавьте конфигурации в serverless.yml:

serverless.yml
================

service: example-express-lambda

provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: ap-southeast-1

functions:
  app:
    handler: index.handler
    events:
      - http: ANY /
      - http: 'ANY {proxy+}'

Затем разверните лямбда-функцию.Добавьте URL-адрес конечной точки в URL-адрес выполнения диалогового потока.

Ссылка: https://serverless.com/blog/serverless-express-rest-api/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...