приветственное сообщение повторяется с каждым сообщением в боте node js

Я использую аутентификацию ADFS для своего бота node js, который будет интегрирован с командами Microsoft.

моя проблема в том, что когда я вошел в бот, я получил приветственное сообщение-

 (session, results, next) => {
      if (session.userData.userName && session.userData.accessToken && session.userData.refreshToken ) {

              builder.Prompts.text(session, "Welcome " + session.userData.userName + "! You are currently logged in into Hotel Bot. Type 'Help' for Bot Help ");

              }

        else {
          session.endConversation("Goodbye.");
        }
      },

это часть корневого диалога.

теперь, после этого, когда я пытаюсь что-то спросить у бота, это приветственное сообщение повторяется с каждым сообщением. если я прокомментирую это приглашение, бот перестанет отвечать.

Помогите мне, как я могу избавиться от этого повторяющегося сообщения

Спасибо


person C P Verma    schedule 18.04.2018    source источник
comment
Пожалуйста, ознакомьтесь с Подсказка для документации по пользовательскому вводу. Вы можете просто использовать session.send() для отправки приветственного сообщения.   -  person Wajeed-MSFT    schedule 18.04.2018
comment
@Wajeed-MSFT я видел это!! но проблема в том, что когда пользователь отправляет какую-либо команду боту... бот отправляет ответы и заменяет диалог диалогом '/'... поэтому для каждого вопроса о перезапуске пользовательского бота, поэтому приветственное сообщение, запрашивающее пользователя в каждом чате. если я заменю любой другой пользовательский диалог, кроме root ..., он перестанет отвечать ....   -  person C P Verma    schedule 18.04.2018


Ответы (1)


Вы можете попробовать добавить диалоговое окно первого запуска, как показано на странице https://docs.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder.-nodejs-handle-conversation-events#add-a-first-run-dialog.

Образец следующий:

// Add first run dialog
bot.dialog('firstRun', function (session) {    
    session.userData.firstRun = true;
    session.send("Hello...").endDialog();
}).triggerAction({
    onFindAction: function (context, callback) {
        // Only trigger if we've never seen user before
        if (!context.userData.firstRun) {
            // Return a score of 1.1 to ensure the first run dialog wins
            callback(null, 1.1);
        } else {
            callback(null, 0.0);
        }
    }
});

Которые используют переменную клиента firstRun, чтобы проверить, приходил ли пользователь раньше. Также вы можете построить собственную логику в событии onFindAction.

person Gary Liu    schedule 19.04.2018
comment
У меня есть несколько сеансов внутри моего диалога. Первый для входа в систему, второй для приветственного сообщения и третий для проверки ответа пользователя. Я хочу каждый раз запускать только третий сеанс. Но в текущем сценарии сеансы 2 и 3 выполняются. запустить только сеанс 3 - person C P Verma; 27.04.2018