首页 > 解决方案 > 如何在自适应卡片模板中使用 $when 来找出传入数据有效负载的长度并删除输入块

问题描述

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

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

{
      "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

对此的任何帮助将不胜感激。

标签: jsonbotframeworkchatbottemplatingadaptive-cards

解决方案


您可以使用“count”属性而不是“length”,还可以删除花括号“${$data.length < 400}”中多余的“$”

试试这个:

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

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


推荐阅读