如何使用 javascript SDK 验证自适应卡 json

how to validate adaptive card json using the javascript sdk

我正在自己生成一张自适应卡片 json,我想验证 json 是否根据自适应卡片架构编写得很好。我正在阅读 this docs,从那里我知道有一个 parse 函数。

我是这样用的:

import * as AdaptiveCards from 'adaptivecards';

...

try {
  const adaptiveCard = new AdaptiveCards.AdaptiveCard();
  adaptiveCard.parse(json);
} catch (e) {
  console.log('Error', e);
}

这种方法似乎不起作用,因为只要它是 json.

,解析就会接受我传递给它的所有内容

我也试过这个:

const v = adaptiveCard.validateProperties();

但无论架构是否正确,响应始终相同。

我的意思是,不管我有没有这个:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.3",
  "body": [
  ]
}

或:

{
      "schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.3",
      "boy": [
        {"catcher": true}
      ]
    }

或者这个:

    {
      "schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.3",
      "body": [
      {
         "type": "Container"
      }
    ]
  }

它总是returns相同,即使有未知属性,或者容器没有项目。

也许我做错了。

关于如何验证这个的任何提示?

验证卡片的最简单方法是尝试渲染它。有一个验证函数,但它并没有真正帮助,而且还没有完成。

试试这个:

var renderedCard = undefined;
try {
  const adaptiveCard = new AdaptiveCards.AdaptiveCard();
  adaptiveCard.parse(json);
  renderedCard = adaptiveCard.render();
} catch (e) {
  console.log('Error', e);
  return false;
}

任何有效的卡都不会抛出异常,这并不意味着卡完全正常工作,但至少 json 代码肯定有效。