Docker上的Bot framework emulator和Bot Builder for Node.js的其他问题

Docker上的Bot framework emulator和Bot Builder for Node.js的其他问题,node.js,botframework,botbuilder,Node.js,Botframework,Botbuilder,我正在努力使Node.js Builder的Bot Builder在Linux下工作 由于Linux的bot framework emulator需要mono,我决定在Docker下使用以下Dockerfile运行它: FROM mono:latest EXPOSE 9000 COPY . BotFrameworkEmulator-Console/ CMD [ "mono", "./BotFrameworkEmulator-Console/BFEmulator.exe" ] 我用命令启动它(

我正在努力使Node.js Builder的Bot Builder在Linux下工作

由于Linux的bot framework emulator需要mono,我决定在Docker下使用以下Dockerfile运行它:

FROM mono:latest
EXPOSE 9000
COPY . BotFrameworkEmulator-Console/
CMD [ "mono",  "./BotFrameworkEmulator-Console/BFEmulator.exe" ]
我用命令启动它(同时暴露端口9000):

docker run-it--rm-p 9000:9000 bf模拟器

它刚开始的时候很好,看起来很有效。这是第一个问题。第页声明:

对于那些在Mac和Linux上开发的人,我们已经创建了一个只使用控制台的版本,它可以使用mono

这是否意味着它不包含作为bot emu的Windows变体的web界面?因为netstat-al报告BFEmulator.exe正在侦听端口9000,但在我访问localhost:9000时无法从docker主机访问。从docker容器内部也无法访问它

第二个问题是,我甚至不能使用BFEmulator的控制台模式。在我的主机上,我运行的是nodejs-docker-bot示例,它在部署到“MicrosoftBot框架”时运行良好

下面是示例代码:

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运行时,上面的bot服务器会报告:

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)
ChatConnector:收到消息。
错误:请求发送到'http://172.17.0.1:3978/v3/botstate/emulator/users/617d3bf8'失败:[404]未找到
应请求。_回调(/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)
两点钟(events.js:106:13)
at Request.emit(events.js:191:7)
应要求。(/home/finch/dev/mapilary/mapilary bot/node_modules/request/request.js:1060:10)
在emitOne(events.js:96:13)
at Request.emit(events.js:188:7)
在收到消息时。(/home/finch/dev/mapilary/mapilary bot/node_modules/request/request.js:980:12)
在IncomingMessage.g(events.js:291:16)
在emitNone(events.js:91:20)

我知道在bot示例中没有声明path
v3/botstate/emulator/users
。因此,我的问题是是否可以将emulator与nodejs bot builder一起使用?

BotFramework emulator现在是一个开源项目,应该在OS X、Windows和Linux上同样运行良好。您可以获取源代码