Node.js 结束对话

Node.js 结束对话,node.js,chatbot,botframework,Node.js,Chatbot,Botframework,我的机器人(使用MS BotFramework)应该正在收听对话流。如果有人提到“聊天机器人”,它应该说“我在这里!”,否则保持安静。这看起来很简单,也许是,但我很难实现它。以下是我所拥有的: bot.add('/', function(session) { if (someoneSaidChatbot) { session('Here I am!") } else { // session.reset(), maybe? No! // session.endDi

我的机器人(使用MS BotFramework)应该正在收听对话流。如果有人提到“聊天机器人”,它应该说“我在这里!”,否则保持安静。这看起来很简单,也许是,但我很难实现它。以下是我所拥有的:

bot.add('/', function(session) {
  if (someoneSaidChatbot) {
    session('Here I am!")
  } else {
    // session.reset(), maybe? No!
    // session.endDialog() then? Uh...nope.
    // nothing? Hmmm. negative
  }
});
所以,什么都不管用。如果我离开那里,机器人就会挂起,它会停止监听流或回答命令。
有什么想法吗?

当有人键入“聊天机器人”作为话语的一部分时,此代码将结束对话框。这就是你要找的吗

bot.add('/', function (session) { 
    if (session.message.text.search("chatbot") >= 0) {
        session.endDialog("Here I am");
    }
});

这也可能取决于您使用的频道。某些频道不允许机器人收听对话中的所有消息。

我建议使用
endConversationAction()
注册机器人的全局操作

bot.endConversationAction(
      'enddialog',                 //dialog Id
      'Here I am',                 //message
      { matches: /^.*chatbot/i }   //match pattern
    );
由于这是一个全局操作,所以当bot听到“Chatbot”时,它会说“我在这里”,如果堆栈中有一些对话框,您提出的解决方案可能无法工作