Привет, Нишан Чатуранга !!
Я столкнулся с этой проблемой, когда создавал бота для подтверждения!Одно небольшое изменение приведет вас на правильный путь.Запрос выбора возвращает строку, а не логическое значение, так что вы путаете ее.Но если вы измените его на Подтверждение приглашения, вы устраните эту проблему.
В свой набор диалогов я добавил несколько типов приглашения:
// Add the prompts.
Add(new ChoicePrompt(Inputs.Choice));
Add(new NumberPrompt<int>(Inputs.Number));
Add(new ConfirmPrompt(Inputs.Confirm));
И мой список входов:
private static class Inputs //aka types of prompts
{
public const string Choice = "choicePrompt";
public const string Number = "numberPrompt";
public const string Confirm = "confirmPrompt";
}
Теперь, когда я вызывал эти приглашения, если я вызывал Inputs.Choice для чего-то, что требовало ответа да (истина) или нет (ложь), он ломался:
public static async Task<DialogTurnResult> ConfirmPhoneAsync(
WaterfallStepContext stepContext,
CancellationToken cancellationToken)
{
var phoneNumber = stepContext.Context.Activity.Text;
stepContext.Values[Outputs.PhoneNumber] = phoneNumber;
return await stepContext.PromptAsync(
Inputs.Choice,
new PromptOptions
{
Prompt = MessageFactory.Text($"Is {phoneNumber} your phone number?"),
Choices = new List<Choice> { new Choice("yep"), new Choice("nah.") },
},
cancellationToken);
}
![wrongChoice](https://i.stack.imgur.com/E1ZGJ.png)
НО !!Если я изменил эту строку на Input.Confirm (тип приглашения, ограниченный «да» или «нет», а не список параметров), он работал бы так, как ожидалось:
return await stepContext.PromptAsync(
Inputs.Confirm,
new PromptOptions
![rightChoice](https://i.stack.imgur.com/eOezW.png)
Дайте мне знать, если вам нужна другая помощь!