Как использовать предлагаемые действия в диалоговом окне и поток формы соответственно в среде бота

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
    var cli = new ConnectorClient(new Uri(activity.ServiceUrl));
    var activity = await result as IMessageActivity;

    await context.PostAsync($"{activity.Text}");

    activity.SuggestedActions = new SuggestedActions()
    {
        Actions = new List<CardAction>()
        {
            new CardAction(){ Title = "Blue", Type=ActionTypes.ImBack, Value="Blue" },
            new CardAction(){ Title = "Red", Type=ActionTypes.ImBack, Value="Red" },
            new CardAction(){ Title = "Green", Type=ActionTypes.ImBack, Value="Green" }
        }
    };

    await context.PostAsync(activity);

    context.Wait(MessageReceivedAsync);
}

Я хочу, чтобы бот предлагал действие пользователю, мне нужно сделать это в диалоговом окне, а также иногда в потоке формы. я не смог понять это. Это действительно сработало, когда я попробовал в контроллере сообщений.


person Akande Babatunde    schedule 22.01.2019    source источник


Ответы (1)


Попробуйте создать ответ, например:

    var activity = await result as Activity;
    var reply = activity.CreateReply("I have colors in mind, but need your help to choose the best one.");

    reply.SuggestedActions = new SuggestedActions()
    {
        Actions = new List<CardAction>()
        {
            new CardAction(){ Title = "Blue", Type=ActionTypes.ImBack, Value="Blue" },
            new CardAction(){ Title = "Red", Type=ActionTypes.ImBack, Value="Red" },
            new CardAction(){ Title = "Green", Type=ActionTypes.ImBack, Value="Green" }
        }
    };

    await context.PostAsync(reply);

    context.Wait(MessageReceivedAsync);

вы сможете вставить это в свой метод MessageReceivedAsync, и он должен работать. Вам также не нужно создавать свой ClientConnector.

person D4RKCIDE    schedule 22.01.2019
comment
попробовал это не сработало. Вместо этого бот выдал исключение - person Akande Babatunde; 23.01.2019
comment
какое исключение он выдал? - person D4RKCIDE; 23.01.2019
comment
.CeateReply находится в действии, а не в IMessageActivity. - person Eric Dahlvang; 24.01.2019