В Microsoft bot Framework SDK V3 приветственное сообщение запускается дважды

#node.js #azure #botframework

#node.js #azure #botframework

Вопрос:

У меня есть бот, в корневом диалоговом окне которого отображается запрос на выбор (да / нет), который я хочу показать пользователю при запуске бота. Ниже приведены фрагменты кода для ConversationUpdate и корневого диалога. Проблема здесь в том, что когда пользователь нажимает «Да» или «Нет» в корневом диалоговом окне, то есть в приветственном сообщении, корневое диалоговое окно запускается во второй раз, и оно снова просит пользователя нажать «Да» или «нет». После этого бот продолжает свою обычную работу, но я хочу, чтобы диалоговое окно root запускалось только один раз.

Заранее спасибо

 bot.on('conversationUpdate', function (message) {
if (message.membersAdded amp;amp; message.membersAdded.length > 0) {
        message.membersAdded.forEach(function (identity) {
        if (identity.id === message.address.bot.id) {
            bot.beginDialog(message.address, '/');
        }
    });
} 
});
  

Корневой диалоговый код:

 bot.dialog('/', [
    function (session) {
    builder.Prompts.choice(session,"some text", ["yes", "no"], { listStyle: builder.ListStyle.button });
},
function (session, results) {
    if (results.response.entity == "yes"){
        session.send("some text");
    }
    else if (results.response.entity == "no"){
        session.send("some text");
    }

    session.beginDialog('/nextDialog');
}
]);
  

Ответ №1:

Похоже, это известная проблема https://github.com/Microsoft/BotBuilder/issues/4387

Комментарии:

1. Спасибо @Zhao. Я следил за темой, которой вы поделились, и они упомянули обходной путь по этой ссылке https://github.com/Microsoft/BotBuilder/issues/4245 . Я использовал это обходное решение, и любой мой бот работает должным образом.