2017-01-12 4 views
-4

Мне нужно предложить пользователю сделать выбор и сохранить выбранное значение в переменной и использовать его в конце сеанса беседы.PromptChoice в структуре ботов отображает исключение «слишком много попыток»

var dialog = new PromptDialog.PromptChoice<string>(
    new string[] {"A new request", "Current Request" }, 
     "Which one would you like?", 
     "Sorry, that wans't a valid option", 1); 
context.Call(dialog, ChoiceReceivedAsync); 
context.Wait(this.MessageReceivedAsync);  
} 

private async Task ChoiceReceivedAsync(IDialogContext context, IAwaitable<object> result) 
{ 
    context.Wait(MessageReceivedAsync1); 
    return; 
} 

Приведенный выше код отображает варианты, но дает слишком много исключений. Кроме того, я использовал код ниже в MessageReceivedAsync1

var UserChose = await result; 

, но все-таки результат не сохраняет значение.

+0

Вопросы ищут рекомендации по книге/учебному курсу не относятся к теме для переполнения стека. – adv12

+0

Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебник или другой ресурс вне сайта, не относятся к теме для переполнения стека, поскольку они, как правило, привлекают упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. – Liam

+0

Я бы порекомендовал вам прочитать [help] – Liam

ответ

1

Снимите context.Wait(this.MessageReceivedAsync); линию, которая у вас есть после context.Call

context.Call запускает новый диалог (PromptChoice), и поэтому вы не можете сделать оба (запустить новый диалог и ждать в текущем окне)

+0

Я удалил опцию PromptChoice, вместо этого я просто написал PromptDialog.Choice и не «вызывал», код работоспособен, но все равно получает сообщение «tooManyattempts». –

+0

Точно так же и в контексте context.Call (за кулисами это делает). Удалите контекст. Подождите вызова от метода, вызывающего выбор. –