【问题标题】:How to create a carousel with a loop Microsoft Bot Framework如何使用循环创建轮播 Microsoft Bot Framework
【发布时间】:2019-08-09 02:49:26
【问题描述】:

尝试使用从 API 返回的 JSON 创建轮播。我正在尝试返回一个带有多个图像的轮播,您可以滚动查看所有图像。我很确定这是我缺少的一些小东西,非常感谢任何帮助。

                    RootObject result = JsonConvert.DeserializeObject<RootObject>(apiResponse);

                    var card = new HeroCard { };

                    List<CardImage> cardImages = new List<CardImage>();
                    var reply = context.Activity.CreateReply();
                    Attachment plAttachment;

                    for (int i = 0; i < 5; i++)
                    {
                        cardImages.Add(new CardImage(url: "https://image.tmdb.org/t/p/original" + result.results[i].poster_path));                           
                    }

                    for (int x = 0; x < 5; x++)
                    {
                        HeroCard plCard = new HeroCard()
                        {
                            Text = "Test",
                            Title = "Movies",
                            Images = cardImages,

                        };
                        plAttachment = plCard.ToAttachment();
                        reply.Attachments.Add(plAttachment);
                    }
                    reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
                    await context.SendActivityAsync(reply);
                }
            }       
        }

        catch (Exception ex)
        {

        }
}

目前它返回具有相同图像的多个轮播:

【问题讨论】:

  • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。
  • 您的每张 HeroCard 有 5 张图片,但我想您应该在每张 HeroCard 中有一张图片?你能检查一下吗?
  • 更新这一行,看看,这对你有用吗? Images = new CardImage(url: "https://image.tmdb.org/t/p/original" + result.results[x].poster_path),
  • 感谢@HasanMahmood 的建议,这似乎是我创建 HeroCard 的方式。我将使用修复程序更新帖子。

标签: c# json frameworks botframework bots


【解决方案1】:

您已经想出了这个解决方案。它已从您的问题中删除,大概是因为它应该作为答案发布。因此,如果您想将此问题标记为已回答,请在此处(为提高效率稍作修改):

for (int i = 0; i < result.results.Count(); i++)
{
    var data = result.results[i];
    var heroCard = new HeroCard
    {
        Title = data.title,
        Subtitle = "Rating: " + data.popularity,
        Text = data.overview,
        Images = new List<CardImage> { new CardImage("https://image.tmdb.org/t/p/original" + data.poster_path) },
        Buttons = new List<CardAction> { new CardAction(ActionTypes.OpenUrl, "Book", value: "https://www.odeoncinemas.ie/cinema-tickets") },
    };
    // Add the attachment to our reply.
    reply.Attachments.Add(heroCard.ToAttachment());
}
reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
await context.SendActivityAsync(reply);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2018-05-08
    • 2022-08-19
    • 2023-03-11
    • 2021-05-22
    相关资源
    最近更新 更多