机器人对话框不启动

Bot dialog doesn't start

我来这里是想问问你们中有谁知道为什么我的机器人无法启动对话吗? 我是机器人世界的新人,阅读了很多,但似乎无法解决这个问题。

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

// 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 connector for communicating with the Bot Framework Service
var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});


var luisAppUrl = process.env.LUIS_APP_URL || 'https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/.......';
var bot = new builder.UniversalBot(connector);

var bot = new builder.UniversalBot(connector, function(session, args, next) {
  session.send('How can i help you ?')
  session.endDialog();
  next();
});

bot.recognizer(new builder.LuisRecognizer(luisAppUrl));


bot.dialog('Location', [
  function (session, args, next) {
  var intent = args.intent;
    var locations = builder.EntityRecognizer.findEntity(intent.entities, 'Location');
     var location = session.dialogData.location = {
       title: title
     };
    // session.send()
    if (!locations){
      builder.Prompts.text(session, 'From which settlement do you want to know the location? ')
    } else {
      next();
    }

  },
  function(session, results) {
    var location = session.dialogData.location;
    if(results.response){
      note.text = results.response;
      // session.send('Our company is located in Antwerp')
    }
  }
]).cancelAction({
  matches: /^(cancel|nevermind)/i,
  confirmPrompt: "Are you sure?"
});

所以我的机器人一直在崩溃,没有启动 bot.dialog? 你们能看出哪里出了问题吗?

机器人正在崩溃,因为您将 UniversalBot class 实例化了两次:

var luisAppUrl = process.env.LUIS_APP_URL // etc
var bot = new builder.UniversalBot(connector);

var bot = new builder.UniversalBot(connector, function(session, args, next) {
  session.send('How can i help you ?')
  session.endDialog();
  next();
});

尝试删除第一个 bot,这样您的代码就是:

var luisAppUrl = process.env.LUIS_APP_URL // etc

var bot = new builder.UniversalBot(connector, function(session, args, next) {
  session.send('How can i help you ?')
  session.endDialog();
  next();
});

编辑:

要到达 'Location' 对话框,您需要将 triggerAction() 添加到 dialog

bot.dialog('Location', [
  function (session, args, next) {
    // ...
  },
  function(session, results) {
    // ...
  }
]).triggerAction({
  matches: 'Location' // What your intent from LUIS is called.
}).cancelAction({
  matches: /^(cancel|nevermind)/i,
  confirmPrompt: "Are you sure?"
});