请指导我在MS Bot框架中创建轮播自适应卡片。我正在使用.Net SDK。我尝试使用自适应卡片设计工具进行设计,但无法实现。
// First create an empty array for your carousel
var cardArray = [];
// Populate the array with your cards (can use any method, I used a for loop)
for (var idx = 0; idx < dataForCards.length; idx++) {
// Create the adaptive card
var adaptiveCard = CardFactory.adaptiveCard({
// YOUR CARD DEFINITION HERE
});
// Push the card to the array for the carousel
cardArray.push(adaptiveCard);
}
// Send the array as a carousel
await step.context.sendActivity(MessageFactory.carousel(cardArray));
if(listOfReservationCardsData.Any())
{
foreach (var checkInStatusCardData in listOfReservationCardsData.OrderBy(l => Convert.ToDateTime(l.StartDate)))
{
listOfAttachments.Add(CreateAdaptiveCardAttachment(filePath, data));
}
}
if (listOfAttachments.Any())
{
turnContext.Activity.AttachmentLayout = AttachmentLayoutTypes.Carousel;
turnContext.Activity.Attachments = listOfAttachments.Take(5).ToList();
await turnContext.SendActivityAsync(turnContext.Activity, cancellationToken);
}
private static Attachment CreateAdaptiveCardAttachment(string filePath, object data)
{
var adaptiveCardJson = File.ReadAllText(filePath);
// Create a Template instance from the template payload
AdaptiveCardTemplate template = new AdaptiveCardTemplate(adaptiveCardJson);
string cardJson = template.Expand(data);
var adaptiveCardAttachment = new Attachment()
{
ContentType = "application/vnd.microsoft.card.adaptive",
Content = JsonConvert.DeserializeObject(cardJson),
};
return adaptiveCardAttachment;
}
这可以是一个例子:
IEnumerable<AdaptiveCard> cards;
await context.Context.SendActivityAsync((Activity)MessageFactory.Carousel(cards.Select(c => new Attachment
{
ContentType = AdaptiveCard.ContentType,
Content = c,
})));