代码之家  ›  专栏  ›  技术社区  ›  KHaemels

机器人程序对话框未启动

  •  1
  • KHaemels  · 技术社区  · 7 年前

    我想问你们,为什么我的机器人不会启动对话?

    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?"
    });
    

    所以我的机器人一直崩溃,无法启动。对话 你们知道怎么了吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Steven G.    7 年前

    由于您正在实例化 UniversalBot 上课两次:

    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?"
    });