You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AdaptiveCard在Teams中通过变量渲染无序列表失效问题

问题描述

我在AdaptiveCard里配置了Action.ToggleVisibility按钮,点击可展示底部含无序列表的文本区域。在AdaptiveCard Designer预览时列表显示正常,但在Teams中渲染时,只有Markdown粗体生效,无序列表被忽略。

关键现象:直接把文本赋值给$root.help属性时,无序列表能正常显示;但通过tipsText变量传递完全相同的文本内容时,列表就无法渲染。

相关配置代码如下:

AdaptiveCard JSON配置

{
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.5",
    "body": [
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "items": [
                        {
                            "type": "ActionSet",
                            "actions": [
                                {
                                    "type": "Action.ToggleVisibility",
                                    "title": "tips",
                                    "tooltip": "show tips",
                                    "targetElements": [
                                        "HelpToggle"
                                    ]
                                }
                            ]
                        }
                    ],
                    "width": "stretch"
                }
            ]
        },
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "width": 65,
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "EXAMPLE CARD TITLE",
                            "wrap": true,
                            "size": "ExtraLarge",
                            "horizontalAlignment": "Left",
                            "weight": "Bolder",
                            "spacing": "None"
                        }
                    ],
                    "verticalContentAlignment": "Center",
                    "spacing": "ExtraLarge"
                }
            ]
        },
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                        {
                            "type": "ColumnSet"
                        }
                    ]
                }
            ]
        },
        {
            "type": "Container",
            "items": [
                {
                    "type": "TextBlock",
                    "text": "${help}",
                    "wrap": true
                }
            ],
            "style": "accent",
            "bleed": true,
            "spacing": "None",
            "isVisible": false,
            "id": "HelpToggle"
        }
    ]
}

渲染卡片的JavaScript函数

async createTipsCard(context, tipsText) {
    const template = new ACData.Template(tipsCard);
    const temp = template.expand({
        $root: {           
            // help: tipsText
            help: "Bullet list with tips: \r- **Tip 1**: Dummy text for tip #1. \r- **Tip 2**: Dummy text for tip #2."
        }
    });   
    await context.sendActivity({ text: '', attachments: [CardFactory.adaptiveCard(temp)] });       
}
问题原因

Teams对AdaptiveCard动态绑定文本中的换行符处理存在兼容性差异:直接写在代码里的\r能被正确解析为换行,但通过变量传递时,\r可能被转义或者未被Teams识别,导致列表项没有正确分隔,无法触发无序列表的Markdown渲染逻辑。

解决方案

1. 标准化换行符格式

在传递变量前,将文本中的\r替换为Teams兼容的\n,修改JavaScript函数如下:

async createTipsCard(context, tipsText) {
    // 将\r替换为\n,确保Teams能识别换行
    const formattedTips = tipsText.replace(/\r/g, '\n');
    const template = new ACData.Template(tipsCard);
    const temp = template.expand({
        $root: {           
            help: formattedTips
        }
    });   
    await context.sendActivity({ text: '', attachments: [CardFactory.adaptiveCard(temp)] });       
}

2. 直接传递兼容格式的文本

如果可以控制tipsText的内容,直接用\n作为换行符,比如传递的文本改为:

"Bullet list with tips: \n- **Tip 1**: Dummy text for tip #1. \n- **Tip 2**: Dummy text for tip #2."

3. 显式启用Markdown渲染

在AdaptiveCard的TextBlock中显式设置markdown: true,避免Teams默认行为的不确定性:

{
    "type": "TextBlock",
    "text": "${help}",
    "wrap": true,
    "markdown": true
}

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:05:29