У меня есть бот, созданный в framework v4 с использованием c#. Я использую LUIS
, чтобы выйти из бота. Когда в моем боте будет пользовательский тип выхода, бот начнет весь разговор с самого начала. Но в моем случае все стеки, представленные выше бота, не заканчиваются, так как метод CancelAllDialogsAsyn c (true, null, null, cancellationToken) недоступен в методе onturnasyn c, где я включил функцию выхода, используя LUIS
.Here код для функции выхода с LUIS
. Можно ли написать метод cancelalldialogasyn c вместе с функцией выхода.
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
var activity = turnContext.Activity;
// var activity = turnContext.Activity;
var recognizerResult = await _botServices.Dispatch.RecognizeAsync(turnContext, cancellationToken);
// Top intent tell us which cognitive service to use.
var topIntent = recognizerResult.GetTopScoringIntent();
var attachments = new List<Attachment>();
var reply = MessageFactory.Attachment(attachments);
reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
// First, we use the dispatch model to determine which cognitive service (LUIS or QnA) to use.
if (string.IsNullOrWhiteSpace(activity.Text) && activity.Value != null)
{
activity.Text = JsonConvert.SerializeObject(activity.Value);
}
if (turnContext.Activity.Text == "Yes")
{
await turnContext.SendActivityAsync($"Good bye. I will be here if you need me. ", cancellationToken: cancellationToken);
await turnContext.SendActivityAsync($"Say Hi to wake me up.", cancellationToken: cancellationToken);
}
else if (topIntent.intent == "OrderStatusintent")
{
reply.Attachments.Add(Cards.GetHeroCard6().ToAttachment());
await turnContext.SendActivityAsync(reply, cancellationToken);
}
else if (topIntent.intent == "Exitintent")
{
await turnContext.SendActivityAsync($"Good bye. Say Hi if you need more help.", cancellationToken: cancellationToken);
}
}