4

nodejs で Microsoft Bot フレームワークを使用してチャットボットを開発しています。これをサーバーレス フレームワークを使用して aws ラムダにデプロイしたいのですが、そのためにはラムダ コールバックを呼び出す必要があります。

メッセージの処理が終了したときにコールバックを取得する方法がわかりません(データを保存し、必要なすべてのメッセージを送信しました)。

応答をシミュレートしてコールバックを呼び出そうとしましたが、うまくいきませんでした。Microsoft ボット フレームワークはメッセージの処理を続けています。現在のハンドラーは次のとおりです。

'use strict';
const DynamoDbStorage = require('./dynamo-db-storage').DynamoDbStorage
let storage = new DynamoDbStorage()
const connector = require('./channel')(storage)

module.exports.message = (event, context, callback) => {
   connector.verifyBotFramework(context, getHandler(callback));
};

function getHandler(callback) {
   let status = 200
   return {
      status: (code) => { status = code },
      send: (data) => {
         const response = {
             statusCode: 200,
             body: JSON.stringify(data),
         };
         callback(null, response)
     }
   }
 }

そして、ここに私のchannel.jsがあります

const builder = require('botbuilder');
function getChannel(storage) {

    const connector = new builder.ChatConnector({
        appId: process.env.MICROSOFT_APP_ID,
        appPassword: process.env.MICROSOFT_APP_PASSWORD
    });


    const bot = new builder.UniversalBot(connector, {
        storage: storage
    });

    //Bot logic
    //...

    return connector
}

module.exports = getChannel;
4

1 に答える 1

1

リンクしたコードは、 res オブジェクトで send 関数を呼び出していないようです。end()関数を呼び出す関数を追加しようとしましたかcallback

function getHandler(callback) {
    let status = 200
    return {
        status: (code) => { status = code },
        send: (data) => {
            const response = {
                statusCode: 200,
                body: JSON.stringify(data),
            };
            callback(null, response)
        },
        end: () => callback(null, "end called");
    }
 }
于 2016-10-31T16:44:27.130 に答える