4

bot-framework-emulatorと Bot Builder for Node.js Builder を Linux で動作させるのに苦労しています。

Linux 用の bot-framework-emulator には mono が必要なため、次の Dockerfile を使用して Docker で実行することにしました。

FROM mono:latest
EXPOSE 9000
COPY . BotFrameworkEmulator-Console/
CMD [ "mono",  "./BotFrameworkEmulator-Console/BFEmulator.exe" ]

コマンドで開始しています(ポート9000も公開しています):

docker run -it --rm -p 9000:9000 bfemulator

それはうまく始まり、うまくいっているようです。そして、ここで最初の質問です。bot-framework-emulatorページは次のように宣言します。

Mac および Linux で開発している人々のために、mono を使用して動作するコンソールのみのバージョンを作成しました。

bot emu の Windows バリアントとして Web インターフェイスが含まれていないということですか? netstat -alは、BFEmulator.exe がポート 9000 でリッスンしていることを報告しますが、localhost:9000 にアクセスすると Docker ホストからアクセスできません。docker コンテナー内からもアクセスできません。

2 つ目の問題は、BFEmulator のコンソール モードを使用することさえできないことです。私のホストでは、「Microsoft Bot Framework」にデプロイすると正常に動作する nodejs docker bot example を実行しています。

コード例は次のとおりです。

var restify = require('restify');
var builder = require('botbuilder');

//=========================================================
// Bot Setup
//=========================================================

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
   console.log('%s listening to %s', server.name, server.url);
});

// Create chat bot
var connector = new builder.ChatConnector({
    appId: process.env.npm_package_config_MICROSOFT_APP_ID,
    appPassword: process.env.npm_package_config_MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());

//=========================================================
// Bots Dialogs
//=========================================================

bot.dialog('/', [
    function (session) {
        builder.Prompts.text(session, 'Hi! What is your name?');
    },
    function (session, results) {
        session.send('Hello %s!', results.response);
    }
]);

しかし、BFEmulator で実行すると、上記のボット サーバーは次のように報告します。

ChatConnector: message received.
Error: Request to 'http://172.17.0.1:3978/v3/botstate/emulator/users/617d3bf8' failed: [404] Not Found
    at Request._callback (/home/finch/dev/mapilary/mapilary-bot/node_modules/botbuilder/lib/bots/ChatConnector.js:413:46)
    at Request.self.callback (/home/finch/dev/mapilary/mapilary-bot/node_modules/request/request.js:186:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (/home/finch/dev/mapilary/mapilary-bot/node_modules/request/request.js:1060:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at IncomingMessage.<anonymous> (/home/finch/dev/mapilary/mapilary-bot/node_modules/request/request.js:980:12)
    at IncomingMessage.g (events.js:291:16)
    at emitNone (events.js:91:20)

ボットの例でパスv3/botstate/emulator/usersが宣言されていないことを理解しています。私の質問は、nodejsボットビルダーでエミュレーターを使用することは可能ですか?

4

1 に答える 1

0

BotFramework Emulator は現在オープン ソース プロジェクトであり、OS X、Windows、および Linux で同等に動作するはずです。ソースコードはこちらから入手できます。

于 2016-12-02T21:08:58.480 に答える