Я хочу разрешить пользователям отменять диалог и возвращаться в главное меню, если они сожалеют о запуске указанных c диалогов. В соответствии с примерами этого можно достичь с помощью проверки InterruptAsyn c в OnContinueDialogAsyn c. Однако я хочу показать пользователю эту функциональность / возможность с помощью предложенного действия «Отмена», которое отправляет сообщение «Отмена» и обрабатывает его как прерывание. Есть или вы могли бы придумать способ сделать это? Можем ли мы добавить предлагаемое действие к каждой активности исходящих сообщений в определенных диалогах, независимо от того, являются ли они текстовым сообщением или подсказкой? Я пробовал следующий код, но они не отображаются в эмуляторе:
protected override async Task<DialogTurnResult> OnContinueDialogAsync(DialogContext innerDc, CancellationToken cancellationToken = default)
{
var result = await InterruptAsync(innerDc, cancellationToken);
if (result != null)
{
return result;
}
//my solution
if (innerDc.Context.Activity is IMessageActivity reply)
{
var ca = new CardAction() { Title = "Cancel", Type = ActionTypes.ImBack, Value = "/cancel" };
var actions = ((reply.SuggestedActions ??= new SuggestedActions()).Actions ??= new List<CardAction>());
if (!actions.Contains(ca))
actions.Add(ca);
}
return await base.OnContinueDialogAsync(innerDc, cancellationToken);
}