MS bot Framework v4 - Есть ли способ добавить предложенное действие к каждому исходящему сообщению? - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу разрешить пользователям отменять диалог и возвращаться в главное меню, если они сожалеют о запуске указанных 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...