1

Google AssistantのAWS Lambdaでfullfilmentを設定したいとします。 actions-on-google npmパッケージを使用しています。 ApiAiApp({req,res}を作成するには、http要求と応答オブジェクトが必要です。AWS LambdaでApiAiノードアプリケーションを実行

しかし、ラムダコールバックは、パラメータの異なるセットを提供します。

exports.handler = function(event, context, callback) { 
    const apiAiApp = new ApiAiApp({req:<REQUEST>, res:<RESPONSE>}); 
} 

どのように私は<REQUEST><RESPONSE>event, context, callbackを翻訳していますか?

私は同じ問題に直面していた

+0

AoGクライアントライブラリは、「express」Node.JSオブジェクトを使用します。ラムダを使用するには、翻訳を行うためのガイドが必要な場合があります。 –

答えて

1

(私はここにコンテキストを必要とは思わないが)、最終的に私は、単純なプロキシを生成するためにいくつかのコードを提供プロジェクト「claudia.js」を介して、それを解決していますAWS Lambdaで明示的なアプリケーションをホストすることができます。 https://github.com/claudiajs/example-projects/tree/master/express-app-lambda

https://claudiajs.com/tutorials/serverless-express.html

ヒント:あなたは二つの "アプリ" で終わる、例えばDialogflowのフルフィルメントのFirebaseの例を使用している場合は、名前を変更して衝突を避ける必要があります。

'use strict'; 

const googleAssistantRequest = 'google'; // Constant to identify Google Assistant requests 
const express = require('express'); 
const app = express(); 
const DialogflowApp = require('actions-on-google').DialogflowApp; // Google Assistant helper library 
const bodyParser = require('body-parser'); 
var endpoint = "..."; // name of AWS endpoint aka as "Resource path" in API Gateway Trigger setup 

... 

const urlencodedParser = bodyParser.json({ extended: false }); 
app.post('/'+ endpoint, urlencodedParser, (request, response) => { 
    console.log('Request headers: ' + JSON.stringify(request.headers)); 
    console.log('Request body: ' + JSON.stringify(request.body)); 

    // An action is a string used to identify what needs to be done in fulfillment 
    let action = request.body.result.action; // https://dialogflow.com/docs/actions-and-parameters 


    ... 

    const appDialogFlow = new DialogflowApp({request: request, response: response}); 

    // Create handlers for Dialogflow actions as well as a 'default' handler 
    const actionHandlers = { 
     ... 
    }; 

    ... 
    // If undefined or unknown action use the default handler 
    if (!actionHandlers[action]) { 
     action = 'default'; 
    } 

    // Run the proper handler function to handle the request from Dialogflow 
    actionHandlers[action](); 

    ... some helper functions, etc ... 

}); 

//app.listen(3000) // <-- comment this line out from your app 
module.exports = app; // <-- link to the proxy that is created viy claudia.js