如何在自适应卡片模板中使用 $when 来找出传入数据有效负载的长度并删除输入块
Posted
技术标签:
【中文标题】如何在自适应卡片模板中使用 $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 【发布时间】:2021-09-28 15:53:09 【问题描述】:我有一个 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。
对此的任何帮助将不胜感激。
【问题讨论】:
我不知道条件布局内的大括号内是否真的需要额外的“$”。您可以将单独的长度参数传递给自适应卡以验证长度。 删除大括号内的“$”并没有什么不同,但我将如何计算长度参数?在这个条件表达式中,data.length 似乎对我不起作用 啊我想我知道你的意思了,所以将数据的长度作为数据数组中的一个元素传递,并在 JSON 代码中使用它来验证长度 完全不是在自适应卡中进行所有活动,而是在进入之前可以通过的长度。我将验证是否有任何选项可以检查自适应卡内的长度。 count 方法对我有用,你可以试试我的解决方案。 【参考方案1】:您可以使用“count”属性代替“length”,还可以删除花括号“$$data.length 。
试试这个:
"type": "Input.ChoiceSet",
"id": "CompactSelectVal1",
"$when": "$data.count < 400",
"placeholder": "Select a value",
"choices": [
"$data": "$data",
"title": "$name",
"value": "$tag"
],
"label": "Input"
如果条件为真,则选择按钮将从自适应卡片中隐藏。
【讨论】:
谢谢。我还发现使用“$count(data) 您是否也知道在使用 $when 时是否可以做一个后备案例? 我不记得有任何后备选项,但机会非常少。更好的是,您可以在进入自适应卡之前验证所有条件,从而降低风险。以上是关于如何在自适应卡片模板中使用 $when 来找出传入数据有效负载的长度并删除输入块的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Microsoft 自适应卡中播放 youtube 视频