Как создать карусель с петлей Microsoft Bot Framework - PullRequest
0 голосов
/ 18 марта 2019

Попытка создать карусель с использованием JSON , возвращенного из API.Я пытаюсь вернуть одну карусель с несколькими изображениями, и вы можете просмотреть все изображения.Я почти уверен, что это что-то маленькое, что мне не хватает, любая помощь очень ценится.

                    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)
        {

        }
}

В настоящее время возвращается несколько каруселей с одним и тем же изображением: Bot Reply

1 Ответ

0 голосов
/ 20 марта 2019

Вы уже придумали это решение. Он был отредактирован из вашего вопроса, предположительно потому, что он должен быть опубликован как ответ. Так что вот (немного изменено для эффективности), если вы хотите пометить этот вопрос как ответ:

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);
...