2016-06-11 18 views
1

我使用textbot來回顯用戶輸入的名稱並添加了一個選項來更改用戶的名稱使用set name命令,但該程序只接受新名稱並且不會打印它。想知道什麼是錯的?我想在控制檯上回應改變的名稱..但程序退出,因爲當我輸入新名稱

這裏是我的代碼

var builder = require('botbuilder'); 

var helloBot = new builder.TextBot(); 
helloBot.add('/', new builder.CommandDialog() 
     .matches('^set name', builder.DialogAction.beginDialog('/profile')) 
     .matches('^quit', builder.DialogAction.endDialog()) 
     .onDefault([ 
      function (session, args, next) { 
       if (!session.userData.name) { 
        session.beginDialog('/profile'); 
       } else { 
        console.log('in else part..'); 
        next(); 
       } 
      }, 
      function (session, results) { 
       session.send('Hello %s!', session.userData.name); 
      } 
      ])); 
helloBot.add('/profile', [ 
     function (session) { 
      if (session.userData.name) { 
       builder.Prompts.text(session, 'What would you like to change it to?'); 
       console.log('setting name..'); 
      } else { 
       builder.Prompts.text(session, 'Hi! What is your name?'); 
      } 
     }, 
     function (session, results) { 
      session.userData.name = results.response; 
      session.endDialog(); 
     } 
     ]); 

helloBot.listenStdin(); 

輸出應該是這樣的:

 
Hi 
Hi! What is your name? 
james 
Hello james! 
set name 
What would you like to change it to? 
Bond 

程序退出在這裏,而預期輸出是 您好邦德!

回答

0

問題是.onDefault永遠不會被調用,因爲根對話符合「set name」條件。

試試這個代碼(使用BotBuilder的更新版本):

var builder = require('botbuilder'); 

var connector = new builder.ConsoleConnector().listen(); 
var bot = new builder.UniversalBot(connector); 
var intents = new builder.IntentDialog(); 
bot.dialog('/', intents); 

intents.matches(/^set name/i, [ 
    function (session) { 
     session.beginDialog('/profile'); 
    }, 
    function (session, results) { 
     session.send('Hello %s!', session.userData.name); 
    } 
]); 

intents.onDefault([ 
    function (session, args, next) { 
     if (!session.userData.name) { 
      session.beginDialog('/profile'); 
     } else { 
      next(); 
     } 
    }, 
    function (session, results) { 
     session.send('Hello %s!', session.userData.name); 
    } 
]); 

bot.dialog('/profile', [ 
    function (session) { 
     if (session.userData.name) { 
      builder.Prompts.text(session, 'What would you like to change it to?'); 
     } else { 
      builder.Prompts.text(session, 'Hi! What is your name?'); 
     } 
    }, 
    function (session, results) { 
     session.userData.name = results.response; 
     session.endDialog(); 
    } 
]); 
相關問題