如何在类似于 Who bot 的 Teams bot 中构建具有滚动条的列表卡?

How to build a List Card having scroll bar in Teams bot similar as Who bot?

我正在使用 .NET Core 开发 MS Teams 机器人。 谁的 Microsoft 机器人有这张带滚动条的列表卡片。

就像我们有缩略图卡、英雄卡等一样,我没有找到实现它的代码。 请帮助并提前致谢。

我想你需要试试 List 卡片。由于是 json 卡片,您需要将其作为附件发送。

 private static Attachment CreateListCardAttachment()
    {
        // combine path for cross platform support
        string[] paths = { ".", "Resources", "listCard.json" };
        var listCardJson = File.ReadAllText(Path.Combine(paths));

        var listCardAttachment = new Attachment()
        {
            ContentType = "application/vnd.microsoft.teams.card.list",
            Content = JsonConvert.DeserializeObject(listCardJson),
        };

        return listCardAttachment;
    }

请使用this json代码参考。

不要纠结于是否有代表您正在使用的架构的内置 C# class。那里有许多 REST API 和 JSON 模式,但并非所有模式都将 C# classes 预构建到 NuGet 包中供您安装。每个 Bot Framework SDK 最终都会在幕后使用 Bot Framework REST API,因此您发送的每个 activity 无论如何都会转换为 JSON 字符串。在创建对应于 JSON 的 C# 对象时,这里有一些选项:

  1. 您可以创建自己的 C# classes
  2. 您可以将 JSON 作为字符串读取并将其解析为 JObject
  3. 您可以使用 C# object initialization
  4. 手动创建 JObject

您需要了解的有关列表卡的所有信息都在 documentation Manish 已链接到的内容中。这是我用来使用选项 2 发送列表卡的一些示例代码:

var json = File.ReadAllText("Resources/listCard.json");

var attachment = new Attachment
{
    ContentType = "application/vnd.microsoft.teams.card.list",
    Content = JObject.Parse(json),
};

await turnContext.SendActivityAsync(MessageFactory.Attachment(attachment));

我根据文档中的 JSON example 创建了一个 JSON 文件。请注意,您不能只复制整个示例并期望它能正常工作,因为它是一个附件对象而您只需要卡片。您只想使用该示例中的“内容”,因此它看起来像这样:

{
  "title": "Card title",
  "items": [
    . . .
  ]
}