首页 > 解决方案 > Bot Framework v4 中的等待方法

问题描述

在 Bot Framework 的第 3 版中,我可以调用卡片并等待用户的响应:

context.Call(new MyHeroCardOptions(), MyResumeAfter);

有人可以指导我如何在 Bot Framework V4 中做到这一点。请不要包含“ChoicePrompt”,我的目标是使用 HeroCard,因为它是一个附件。

我正在使用这种形式:

private static async Task<DialogTurnResult> TransportStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            await OptionHeroCard.GetHeroCard(stepContext.Context);
            return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions());
        }

public static class OptionHeroCard
    {
        public static async Task GetHeroCard(ITurnContext context)
        {
            var heroCard = new HeroCard
            {
                Title = "Documentation",
                Subtitle = "Microsoft Bot Framework Documentation",
                Images = new List<CardImage> { new CardImage("https://sec.ch9.ms/ch9/7ff5/e07cfef0-aa3b-40bb-9baa-7c9ef8ff7ff5/buildreactionbotframework_960.jpg") },
                Buttons = new List<CardAction> { 
                    new CardAction(ActionTypes.ImBack, title: "Opción 1", value: "Opción 1"),
                    new CardAction(ActionTypes.ImBack, title: "Opción 2", value: "Opción 2"),
                    new CardAction(ActionTypes.OpenUrl, "Ir a a web", value: "https://docs.microsoft.com/bot-framework"),
                },
            };
            var reply = context.Activity.CreateReply();
            reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
            reply.Attachments.Add(heroCard.ToAttachment());
            await context.SendActivityAsync(reply);
        }
    }

我目前使用带有“瀑布”的“TextPrompt”来生成等待,但我不知道它是否合适。

  1. 我不知道我可以将 HeroCard 包含在“选择提示”中。一个例子会很棒。

标签: c#botframework

解决方案


对于 bot 框架 4.7 预览版,我通过调用 2 个操作来完成

 new SendActivity("@{YourHeroCardTemplate()}"),
 new TextInput()
        {
                Property = "dialog.heroCardResponse",
                Prompt = new ActivityTemplate("Please select an option"),
        },

希望它可以帮助您了解其他版本的机器人框架


推荐阅读