端口 botbuilder restify 监听器到 sailsjs 路由

Port botbuilder restify listener to sailsjs route

我正在关注这里的 botbuilder 演示 - https://github.com/Microsoft/BotBuilder/blob/master/Node/examples/demo-skype/app.js

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.MICROSOFT_APP_ID,
  appPassword: process.env.MICROSOFT_APP_PASSWORD
});

var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());

我想在 SailsJS 中托管这个机器人。 我已按如下方式路由呼叫:

// config/routes.js
'POST /api/messages': {
  controller: 'BotframeworkController',    
  action: 'listen',
},

控制器:

var builder = require('botbuilder');
var botconfig = sails.config.botframework;

var connector = new builder.ChatConnector({
   appId: botconfig.MICROSOFT_APP_ID,
   appPassword: botconfig.MICROSOFT_APP_PASSWORD
});

var bot = new builder.UniversalBot( connector, function( session ) {
  session.send("%s, I heard: %s", session.userData.name, session.message.text);
});

// Add help dialog
bot.dialog('help', function (session) {
  session.send("I'm a simple echo bot.");
}).triggerAction({ matches: /^help/i });

module.exports = {

  listen: function( req, res, next ){
    sails.log.debug('BotframeworkController.listen... started');
    sails.log.debug(req.body);
    return connector.listen( req, res );
    // var test = connector.listen( req, res );
    // sails.log.debug(test );
  },
}

我没有收到任何错误 - 我可以看到 - 但没有向客户端返回任何响应。

任何 ideas/suggestions 将不胜感激?

我没有使用过 SailsJS,但看起来它会在收到 POST 到 /api/messages 时调用 BotframeworkControllerlisten 方法.我没看错吗?

connector.listen() 本身不是处理程序,它是处理程序的路径。它 returns 一个处理传入请求和响应的函数。试试这样:

module.exports = {
  listen: connector.listen()
}