#c#
#c#
Вопрос:
Я пытаюсь реализовать выпадающий список в модели водопада с помощью диалога. Первым шагом является запрос пользователю ввести имя, затем попросите пользователя ввести возраст, а затем город, в котором пользователь должен путешествовать. И пользователь должен выбрать город из выпадающего списка, и я хочу переслать информацию на следующий шаг водопада. Мой код для выбора пункта назначения приведен ниже:
private async Task<DialogTurnResult> DestinationStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var message = MessageFactory.Text("Enter your destination city");
var bookingDetails = (BookingDetails)stepContext.Options;
bookingDetails.age = (int)stepContext.Resu<
var pmtOptions = new PromptOptions();
if (bookingDetails.Destination == null)
{
var card = new AdaptiveCard();
card.Body = new List<AdaptiveElement>();
var choices = new List<AdaptiveChoice>()
{
new AdaptiveChoice()
{
Title = "Pune",
Value = "Pune",
},
new AdaptiveChoice()
{
Title = "Mumbai",
Value = "Mumbai",
},
new AdaptiveChoice()
{
Title = "Hyderabad",
Value = "Hyderabad",
},
new AdaptiveChoice()
{
Title = "Bengaluru",
Value = "Bengaluru",
},
};
var choiceSet = new AdaptiveChoiceSetInput()
{
IsMultiSelect = false,
Choices = choices,
Style = AdaptiveChoiceInputStyle.Compact,
Value = "1",
Id = "Destination city",
};
card.Body.Add(choiceSet);
message.Attachments.Add(new Attachment() { Content = card, ContentType = "application/vnd.microsoft.card.adaptive" });
var createTaskAndElement = new List<AdaptiveElement>
{
new AdaptiveColumnSet
{
Id="btnCreate",
Columns=new List<AdaptiveColumn>
{
new AdaptiveColumn
{
Items=new List<AdaptiveElement>
{
new AdaptiveActionSet
{
Actions=new List<AdaptiveAction>
{
new AdaptiveSubmitAction
{
Title="Select"
}
}
}
}
}
}
}
};
card.Body.Add(new AdaptiveContainer
{
Id = "Create_Task_Container",
Style = AdaptiveContainerStyle.Default,
Spacing = AdaptiveSpacing.Default,
Bleed = false,
IsVisible = false,
VerticalContentAlignment = AdaptiveVerticalContentAlignment.Top,
Items = createTaskAndElement
});
card.Actions.Add(new AdaptiveSubmitAction() { Title = "Select" });
return await stepContext.PromptAsync(DlgChoice, new PromptOptions { Prompt = message },cancellationToken);
}
return await stepContext.NextAsync(bookingDetails.Destination, cancellationToken);
}
Когда я пытаюсь выполнить, я получаю сообщение об ошибке как:
Выдано исключение: ‘Newtonsoft.Json.JsonReaderException’ в системе.Частное.CoreLib.dll
‘dotnet.exe ‘ (CoreCLR: clrhost): Загружено’C:Program Файлы dotnet общиеMicrosoft.NETCore.App2.1.22System.Диагностика.StackTrace.dll «. Пропущены символы загрузки. Модуль оптимизирован, и включена опция отладчика «Только мой код».
‘dotnet.exe ‘ (CoreCLR: clrhost): Загружено’C:Program Файлы dotnet общиеMicrosoft.NETCore.App2.1.22System.Отражение.Metadata.dll «. Пропущены символы загрузки. Модуль оптимизирован, и включена опция отладчика «Только мой код».
‘dotnet.exe ‘ (CoreCLR: clrhost): Загружено’C:Program FilesdotnetsharedMicrosoft.NETCore.App2.1.22System.IO.MemoryMappedFiles.dll «. Пропущены символы загрузки. Модуль оптимизирован, и включена опция отладчика «Только мой код».
Майкрософт.AspNetCore.Mvc.Internal.ControllerActionInvoker:Информация: выполняется метод действия CoreBot4.Контроллеры.BotController.PostAsync (CoreBot4), возвращенный результат Microsoft.AspNetCore.Mvc.Emptyрезультат в 3158.1642мс.
Пожалуйста, помогите мне в решении проблемы. Заранее спасибо
Комментарии:
1. Ошибка выдается в методе RunAsync: диалоговое окно ожидания. RunAsync(turnContext, ConversationState. CreateProperty<dialogState>(«dialogState»), CancellationToken);
2. @JohnG кажется, что внутри tunContext выполняет сериализацию. В диалоговом окне есть выпадающий список со списком городов, это не выдаст ошибку, если вы используете текстовое приглашение вместо выпадающего списка.