#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(...)
был запущен, и теперь это работает. Я не знаю почему.