dialogContext.activeDialog не определен на этапе каскада

#botframework #azure-bot-service

#botframework #azure-bot-service

Вопрос:

Я пытаюсь аутентифицировать пользователей, используя следующее приглашение OAuth:

 private oauthPrompt = new OAuthPrompt("sign-in", {
    connectionName: this.oauthSigninAzureId,
    title: "Login"
});
  

Затем я создаю шаги водопада:

  private waterfall = new WaterfallDialog(INTENTS.GREETING, [
        (step: WaterfallStepContext) => {
            return step.prompt(
                INTENTS.SIGN_IN,
                "👋 Hello and welcome."
            )
        }, async (step: WaterfallStepContext) => {
            const token = step.result.token;
            ...
        },
    ]);
  

Затем я запускаю его:

 const dialogContext = await this.dialogs.createContext(context); // activeDialog is ALWAYS empty
if (!dialogContext.activeDialog) await dialogContext.beginDialog("sign-in");
else dialogContext.continueDialog();
  

Первый шаг выполняется нормально. Но затем, пытаясь увидеть, есть ли активный диалог, я проверяю dialogContext.activeDialog только для того, чтобы выяснить, что он не определен.

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

1. Можете ли вы поделиться тем, как вы проверяете dialogContext.activeDialog?

2. @JJ_Wailes Я отредактировал свой пост, чтобы включить его в раздел «Затем я запускаю его:»

3. Я все еще изучаю ActiveDialog, но почему вы не используете вместо этого DialogTurnStatus?

4. Я полагаю, что я не использовал его, потому что я следовал руководству в одной из документов, предоставленных Microsoft. На данный момент я не могу вспомнить.

5. Оказывается, это не работало в sdk веб-чата, но работало в эмуляторе бота. Я аутентифицировал пользователя в тот момент, когда он вошел в чат. Поэтому я сразу же запустил, dialogContext.continueDialog() прежде чем запускать что-либо еще, даже до того, как dialogContext.beginDialog(...) был запущен, и теперь это работает. Я не знаю почему.