有没有办法在我的 C# 项目中为自适应卡使用本地图像而不是 Web-URL?

Is there a way to use a local image in my C# Project for my Adaptive Card instead of an Web-URL?

我想在我的 Bot 中使用 Adaptive Card,但我不想从 Web 获取其中的图像-URL。 相反,我想在我的项目中放置图像,自适应卡应该从项目文件夹中获取图像。这可能吗?如果可能,怎么做?

您可以在 schema explorer 中看到自适应卡片图像在 1.2+ 版本中支持数据 URI(嵌入图像)。我能够像这样在自适应卡中渲染嵌入图像:

{
  "$schema": "http://adaptivecards.io/schemas/1.2.0/adaptive-card.json",
  "version": "1.2",
  "type": "AdaptiveCard",
  "body": [
    {
      "type": "TextBlock",
      "text": "Embedded Image"
    },
    {
      "type": "Image",
      "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKBJREFUeNpiYBjpgBFd4P///wJAaj0QO9DEQiAg5ID9tLIcmwMYsDgABhqoaTHMUHRxpsGYBv5TGqTIZsDkYWLo6gc8BEYdMOqAUQeMOoAqDgAWcgZAfB9EU63SIAGALH8PZb+H8v+jVz64KiOK6wIg+ADEArj4hOoCajiAqMpqtDIadcCoA0YdQIoDDtCqQ4KtBY3NAYG0csQowAYAAgwAgSqbls5coPEAAAAASUVORK5CYII="
    }
  ]
}

请注意,我选择了一张非常小的图片,因为邮件和附件有大小限制。永远不推荐嵌入图片,但如果你有大图片,那是不可能的。

如果您提前知道要使用什么图像,那么您可以提前将其转换为 base 64,甚至不将该图像包含在您的项目文件夹中,但如果您需要帮助将本地图像转换为数据 URI 编程然后你可以看看 attachments sample.