【问题标题】:Adaptive Card returns undefined in Teams c#自适应卡在 Teams c# 中返回未定义
【发布时间】:2019-09-10 02:26:50
【问题描述】:

我正在尝试向 Microsoft Teams 发送自适应卡,但它在 Teams 中返回未定义。它在模拟器中运行良好。我正在使用 c#。下面是来自模拟器的图像和用于向 Teams 发送响应的代码。

代码:

public async Task EventCardMessage(Activity activity, JToken row)
{
    using (var connector = new ConnectorClient(new Uri(activity.ServiceUrl), _config["MicrosoftAppId"], _config["MicrosoftAppPassword"]))
    {
        //adaptive card
        Activity replyToConversation = activity.CreateReply();
        replyToConversation.Attachments = new List<Attachment>();

        AdaptiveCards.AdaptiveCard card = new AdaptiveCards.AdaptiveCard();
        Card adaptiveCard = new Card();
        adaptiveCard.Count = row["total_count"].ToString();
        // Add text to the card.
        card.Body.Add(new TextBlock()
        {
            Text = "There are " + adaptiveCard.Count + " Holidays this Year",
            Size = TextSize.Normal,
            Weight = TextWeight.Bolder
        });

        // Add Columns to card.
        var list = row["card"]["data"]["list"];
        foreach (var li in list)
        {
            adaptiveCard.Name = li["label3"].ToString();
            adaptiveCard.Date = li["label1"].ToString() + " " + li["label2"].ToString();
            adaptiveCard.Time = li["label5"].ToString();
            adaptiveCard.Address = li["label4"].ToString();

            var current = new ColumnSet();
            card.Body.Add(current);
            var column1 = new Column();
            current.Columns.Add(column1);
            var column2 = new Column();
            current.Columns.Add(column2);
            column1.Size = "40";
            AddTextBlock(column1, adaptiveCard.Date, TextSize.Large, TextColor.Accent, false);
            column2.Size = "60";
            AddTextBlock(column2, adaptiveCard.Name, TextSize.Normal, TextColor.Default, false);
            AddTextBlock(column2, adaptiveCard.Address, TextSize.Normal, TextColor.Default, false);
            AddTextBlock(column2, adaptiveCard.Time, TextSize.Normal, TextColor.Default, false);
        }

        // Create the attachment.
        Attachment attachment = new Attachment()
        {
            ContentType = AdaptiveCards.AdaptiveCard.ContentType,
            Content = card
        };
        replyToConversation.Attachments.Add(attachment);

        var reply = await connector.Conversations.SendToConversationAsync(replyToConversation);
    }
}

【问题讨论】:

  • 我的回答可以接受吗?

标签: c# botframework microsoft-teams adaptive-cards


【解决方案1】:

Microsoft Teams currently only supports Adaptive Cards 1.0. 这意味着如果您尝试发送版本高于 1.0 的卡片,它将无法呈现。使用 AdaptiveCards NuGet 包时,默认情况下,您的卡片将获得与包相同的版本。这意味着如果您使用 AdaptiveCards 1.2.0,您的卡片将使用 1.2.0 版本构建。尝试明确设置您的卡的版本:

var card = new AdaptiveCard(new AdaptiveSchemaVersion(1, 0));

如果您想了解有关自适应卡片的更多信息,可以查看我的最新博文:https://blog.botframework.com/2019/07/02/using-adaptive-cards-with-the-microsoft-bot-framework/

【讨论】:

猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 2021-02-06
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2020-07-29
  • 2020-04-06
相关资源
最近更新 更多