结束对话

Ending conversation

我的机器人(使用 MS BotFramework)应该可以听到对话流。如果有人提到 'chatbot' 它应该说 'Here I am!',否则保持沉默。它看起来很简单,也许确实如此,但我很难尝试实现它。这是我拥有的:

bot.add('/', function(session) {
  if (someoneSaidChatbot) {
    session('Here I am!")
  } else {
    // session.reset(), maybe? No!
    // session.endDialog() then? Uh...nope.
    // nothing? Hmmm. negative
  }
});

所以,没有任何效果。如果我离开那里,机器人就会挂起,它会停止收听流或回答命令。 有什么想法吗?

当有人输入 "chatbot" 作为话语的一部分时,此代码结束对话。这是你想要的?

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

这也可能取决于您使用的频道。某些频道不提供 Bot 收听对话中所有消息的功能。

我想建议使用 endConversationAction() 注册一个 Bots Global Actions

bot.endConversationAction(
      'enddialog',                 //dialog Id
      'Here I am',                 //message
      { matches: /^.*chatbot/i }   //match pattern
    );

由于这是全局操作,任何时候当机器人听到 "Chatbot" 时,它都会说 "Here I am" ,如果堆栈中有一些对话,您提出的解决方案可能不起作用。