Как step.prompt (OAUTH_PROMPT) автоматически перейти к следующей функции в диалоговом окне «Водопад» в версии 4 для бодибилдера в узле js? - PullRequest
1 голос
/ 02 апреля 2019

В настоящее время я использую OAuthPrompt в Microsfot BotBuilder V4 NodeJs SDK. OAuthPrompt в основном используется для аутентификации ботов с помощью Azure, но после входа в систему с помощью лазера через бота я не могу перейти к следующей функции в диалоговом окне водопада, пока не отправлю другому сообщению боту. Если я отправляю сообщение после входа в систему, вызывается continueDialog (), поэтому вызывается следующая функция в диалоговом окне водопада.

Как автоматически перейти к следующей функции в диалоговом окне водопада, не отправляя еще одно сообщение боту?

/**
     * Waterfall step that prompts the user to login if they have not already or their token has expired.
     * @param {WaterfallStepContext} step
     */
    async oauthPrompt(step: any) {
        await step.prompt(OAUTH_PROMPT);
    }

    /**
     * Waterfall step that informs the user that they are logged in and asks
     * the user if they would like to see their token via a prompt
     * @param {WaterfallStepContext} step
     */
    async loginResults(step: any) {
        let tokenResponse = step.result;
        if (tokenResponse != null) {
            await step.context.sendActivity('You are now logged in.');
            return await step.prompt(CONFIRM_PROMPT, 'Do you want to view your token?', ['yes', 'no']);
        }

        // Something went wrong, inform the user they were not logged in
        await step.context.sendActivity('Login was not sucessful please try again');
        return await step.endDialog();
    }

После вызова oauthPrompt () карточка входа отображается в боте. Но после этого функция loginResults () не вызывается автоматически, пока я не отправлю другое сообщение. Обе функции находятся в одном и том же диалоговом окне с водопадом?

Может кто-нибудь сказать мне, как вызвать loginResults без отправки другого сообщения боту, пожалуйста?

1 Ответ

0 голосов
/ 07 июня 2019

Это на самом деле нормальное (и ожидаемое) поведение для эмулятора. В «почему» есть много того, чего я не буду касаться.

Короче говоря, эмулятор ищет определенный тип обратного вызова, который он никогда не получит из-за того, как эмулятор работает в отношении OAuth. Поскольку он никогда не получает этот обратный вызов, шаг входа в систему не знает, как перейти к следующему шагу, и впоследствии ожидает, что что-то ему будет предложено (т. Е. Пользовательский ввод).

Это только «проблема» в эмуляторе. Когда вы запускаете это в других каналах, это не должно быть проблемой.

Надежда на помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...