检测 Bot Framework 中的主题设置,即深色、高对比度、默认

Detect theme setting in Bot Framework, ie Dark, High Contrast, Default

在使用 Microsofts Bot Framework SDK 构建 Teams 扩展时,有谁知道如何检测用户的 主题设置 以生成视觉上吸引人的自适应卡片布局?

我发现有些图像在亮模式/默认模式下看起来不错,但在暗模式下看起来很糟糕。

为了解决这个问题,我想有条件地在自适应卡片中设置图像。但是,为此我需要当前的主题信息。

我搜索了 contextactivity 但找不到方法。

我希望在自适应卡中做这样的事情(注意 if 语句)


{
    "items": [
        {
            "type": "Image",
            "url": "${if(theme == 'dark', images.whiteCat, images.blackCat)}",
            "size": "Small"
        }
    ]
}

使用 teams-js api,我确实看到可以从上下文对象中获取当前主题,但我无法在 botbuilder 中找到执行此操作的方法-js 库(在服务器上)。这看起来很奇怪,因为 botbuilder 在 TeamsActivityHandler 中发出有关设备和语言的信息,但我找不到任何关于主题的信息。

是否可以使用 botbuilder(最新版本)检测团队主题?

鉴于 Teams 提供三种不同的主题设置(默认、深色和高对比度),如果有人可以提供有关在自适应卡片中放置图像的技巧或建议,我将不胜感激。

我认为负载中没有任何内容可以显示主题,但实际上我还是建议 - 反对 - 这样做。在选项卡中,这项工作是因为您获得了初始主题(在上下文对象上)以及订阅主题更改事件的能力。这意味着您始终能够响应相关的当前主题。对于机器人,情况有所不同,因为一旦您发送了一条消息,它基本上就会永久保留在聊天记录中。如果用户稍后更改他们的主题,则相同的消息将在那里,并且可能不再适合该主题。 (从技术上讲,可以更新或删除以前的消息,但这对于曾经发送过的所有消息来说并不实用,而且如果主题发生变化,您也不会这样做,因为没有为此向机器人发送任何事件)。因此,您需要发送适用于这两个主题的消息。

也许使用光透明度可以工作,具体取决于图像。

目前AC不支持,但已经确定 见:Themeable icons/glyphs