Когда начинается диалог с ботом, кажется, что он идет по пути, т.е. 1 2 3 4. Я бы хотел в точке 2 как таковой вернуться к метке пути 1 и начать процесс заново или даже потенциально перейти к маркеру.2 из 3, чтобы переадресовать / ответить на маркер 2 снова ...
Я попытался сделать это с помощью оператора if (== "Pittsburgh"), который возвращается к предыдущему методу, но я замечаю, что черезэмулятор бота движется независимо от переадресации предыдущего метода.
Короче говоря, я спрашиваю, как пройти через waterfalldialog и вернуться к любой точке диалога, которую я выберу, основываясь на результатах разговора с ответами бота и luis.То есть, если я перехожу с 1 на 5, а на 3 мне нужно начинать сначала, как я могу настроить waterfalldialog, чтобы конкретно это сделать?Проблема, с которой я столкнулся, заключается в том, что, хотя я вызываю предыдущий метод в цепочке диалогов, он официально не начинается с этого метода, вызываемого и далее.Это моя забота конкретно.
private async Task<DialogTurnResult> DestinationStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var bookingDetails = (BookingDetails)stepContext.Options;
if (bookingDetails.Destination == null)
{
return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text("Where would you like to travel to Christian?") }, cancellationToken);
}
else
{
Console.WriteLine("testing christian" + bookingDetails);
return await stepContext.NextAsync(bookingDetails.Destination, cancellationToken);
}
}
private async Task<DialogTurnResult> OriginStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
Console.WriteLine("testing paul");
var bookingDetails = (BookingDetails)stepContext.Options;
//await LuisHelper.ExecuteLuisQuery(Configuration, Logger, stepContext.Context, cancellationToken);
if ((string)stepContext.Result == "Pittsburgh")
{
return await DestinationStepAsync(stepContext, cancellationToken);
}
bookingDetails.Destination = (string)stepContext.Result;
if (bookingDetails.Origin == null)
{
Console.WriteLine("testing tall" + bookingDetails.Destination);
return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text("Where are you traveling from?") }, cancellationToken);
}
else
{
return await stepContext.NextAsync(bookingDetails.Origin, cancellationToken);
}
}