如何在自适应卡模板中使用 $when 找出传入数据有效负载的长度并删除输入块

How to use $when in an adaptive card template to find out the length of an incoming data payload and drop an input block

我有一个 JSON 文件形式的自适应卡,其中包含一个 Input.ChoiceSet。这是随数据有效负载一起提供的,它是动态的,因此每次的数据量都不相同。如果它根据我要传递给它的数据数组的长度打破某个阈值,我希望能够删除它 Input.ChoiceSet。是否可以使用 %when 将其写为 Input.ChoiceSet 中的条件来执行此操作?

这就是我目前拥有的,但它没有像我希望的那样工作:

{
      "type": "Input.ChoiceSet",
      "id": "CompactSelectVal1",
      "$when": "${$data.length < 400}",
      "placeholder": "Select a value",
      "choices": [
        {
          "$data": "${data}",
          "title": "${name}",
          "value": "${tag}"
        }
      ],
      "label": "Input"
}

此处使用.length只是猜测,并非基于任何文档。我用来查找有关 $when 的文档如下 https://docs.microsoft.com/en-us/adaptive-cards/templating/language.

如有任何帮助,我们将不胜感激。

您可以使用“count”属性 代替“length”,并删除大括号内多余的“$”"${$data.length < 400} ".

试试这个:

{
  "type": "Input.ChoiceSet",
  "id": "CompactSelectVal1",
  "$when": "${count(data) < 400}",
  "placeholder": "Select a value",
  "choices": [
    {
      "$data": "${data}",
      "title": "${name}",
      "value": "${tag}"
    }
  ],
  "label": "Input"
}

如果条件为真,则选择按钮将从自适应卡中隐藏。