c# - Bot Framework v4 中的等待方法
问题描述
在 Bot Framework 的第 3 版中,我可以调用卡片并等待用户的响应:
context.Call(new MyHeroCardOptions(), MyResumeAfter);
- 其中MyHeroCardOptions是 HeroCard 类型的卡片,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”来生成等待,但我不知道它是否合适。
- 我不知道我可以将 HeroCard 包含在“选择提示”中。一个例子会很棒。
解决方案
对于 bot 框架 4.7 预览版,我通过调用 2 个操作来完成
new SendActivity("@{YourHeroCardTemplate()}"),
new TextInput()
{
Property = "dialog.heroCardResponse",
Prompt = new ActivityTemplate("Please select an option"),
},
希望它可以帮助您了解其他版本的机器人框架
推荐阅读
- javascript - 处理对异步函数的多次调用
- python - Django中迁移的执行顺序
- java - 通信链路故障 JDBC Java
- python - 如何将变量发送到搅拌机 python 脚本?
- visual-studio-code - VSCode“$gcc”问题匹配器在 C++ 编译器错误报告中识别文件路径的问题
- c++ - 无法理解有关从属名称错误的编译器错误消息语言。这是什么意思?
- c++ - 渲染时如何使 SDL2 0,0 定位在窗口的中心?
- node.js - 如果我导入没有 `js` 扩展名的文件,ExpressJs 将返回错误 `ERR_MODULE_NOT_FOUND`
- php - Laravel - 类 stdClass 的对象无法转换为 int
- npm - 在命令行中使用 vue-cli-service