#c# #botframework
#c# #botframework
Вопрос:
В настоящее время я использую шаблон Enterprise Bot и не могу завершить диалоговое окно аутентификации. Каждый раз, когда я пытаюсь его вызвать, он возвращает сообщение токена и затем останавливает выполнение. Далее в водопаде не используются методы getToken (т. Е. я могу войти в систему и получить волшебный код, но когда я вставляю его в эмулятор для продолжения аутентификации, диалоговое окно останавливается).
Я попробовал образец AuthenticationBot с github, и он отлично работает. Я думаю, что это как-то связано с routerDialog и / или моим методом OnTurnAsync, но я понятия не имею, что это может быть. Редактировать:
AddDialog(new WaterfallDialog(InitialDialogId, authenticate));
AddDialog(new OAuthPrompt(DialogIds.LoginPrompt, new OAuthPromptSettings()
{
ConnectionName = ConnectionName,
Title = AuthenticationStrings.TITLE,
Text = AuthenticationStrings.PROMPT,
}));
private async Task<DialogTurnResult> PromptToLogin(WaterfallStepContext sc, CancellationToken cancellationToken)
{
return await sc.PromptAsync(AuthenticationResponses.ResponseIds.LoginPrompt, new PromptOptions());
}
var dc = await _dialogs.CreateContextAsync(turnContext);
if (dc.ActiveDialog != null)
{
var result = await dc.ContinueDialogAsync();
if (!turnContext.Responded)
{
// Start the Login process.
await dc.ContinueDialogAsync();
}
}
else
{
await dc.BeginDialogAsync(nameof(MainDialog));
}
Это два блока кода, касающиеся аутентификации, куда будет отправлено действие.
Редактировать 2 / Решение: Просто хотел продолжить, я только что понял, чего мне не хватало. В основной файл bot.cs в OnTurnAsync мне нужно было добавить этот фрагмент кода и часть в конструкторе. Конструктор
_dialogs.Add(new AuthenticationDialog(_services.AuthConnectionName));
OnTurnAsync
if (!turnContext.Responded)
{
await dc.BeginDialogAsync(nameof(AuthenticationDialog));
}
Комментарии:
1. Что произойдет после публикации волшебного кода, если вы отправите другое сообщение? Бот продолжает работу на этом этапе или он вообще остановился? Кроме того, можете ли вы опубликовать какой-либо соответствующий код, чтобы мы могли помочь в диагностике?
2. Стивен, да, после того, как я отправлю обратно волшебный код, он показывает значок ввода, а затем просто исчезает. Если я попытаюсь ввести больше после этого, ничего не произойдет.
3. Вы тестировали на каких-либо других каналах?
4. Нет, только эмулятор