1

我有一个 MS Flow,可以根据新生成的 Planner 任务构建自适应卡。除非标题中有双引号,否则它会起作用。这会破坏自适应卡的 json 代码。

我尝试将@replace-function 直接注入到 json 代码中,但没有成功。

这是我的工作(任务标题中没有引号)示例:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{triggerBody()?['title']}",
            "wrap": true
        },
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}

这是我尝试替换的方法:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{replace(@{triggerBody()?['title']},'\"','\\\"'}",
            "wrap": true
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}

我希望替换函数将用转义的黑斜线版本 (\") 替换双引号 (")。

但是 MS Flow 中的错误说:无法获取未定义或空引用的属性“属性”。

4

2 回答 2

4

我终于在我的方法中发现了错误:

  1. 我尝试了嵌套引用(两次@{})
  2. 我错误地引用了嵌套的双引号

所以这里是解决方案:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{replace(triggerBody()?['title'],'"','\"')}",
            "wrap": true
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}
于 2019-10-23T09:28:01.137 回答
1

我发现了一些我认为可以解决的方法。但是,还是有感觉,一定有更好的解决办法。我在两者之间添加了一个步骤来初始化我自己的变量,并确实将替换功能放在那里:

替换截图

所以函数归结为:replace(triggerBody()?['title'],'"','\"')

于 2019-08-10T07:14:51.320 回答