Адаптивное пользовательское действие карты в JavaScript

#javascript #adaptive-cards

#javascript #адаптивные карты

Вопрос:

Я пытаюсь создать пользовательское действие в адаптивной карте, но не могу его создать. может ли кто-нибудь, пожалуйста, помочь мне

Данные карты

 {
    "type": "AdaptiveCard",
    "version": "1.0",
    "body": [
        {
            "type": "TextBlock",
            "size": "Medium",
            "weight": "Bolder",
            "text": "Custom"
        }
    ],
    "actions": [
        {
            "type": "Action.Alert",
            "title": "Click me",
            "text": "Hello world!"
        }
    ]
}
 

Файл TypeScript — action.ts создан заново

 import * as AC from "adaptivecards";
export class AlertAction extends AC.Action {
    static readonly JsonTypeName = "Action.Alert";

    //#region Schema

    static readonly textProperty = new AC.StringProperty(AC.Versions.v1_0, "text", true);

    @AC.property(AlertAction.textProperty)
    text?: string;

    //#endregion

    getJsonTypeName(): string {
        return AlertAction.JsonTypeName;
    }

    execute() {
        alert(this.text);
    }
}
 

и согласно этой ссылке
https://docs.microsoft.com/en-us/adaptive-cards/sdk/rendering-cards/javascript/extensibility

Я не понимаю, куда добавить эту строку кода

AC.GlobalRegistry.actions.register(AlertAction.JsonTypeName, AlertAction);

Это код для рендеринга карты

 var jsonTemplate = "some data",
  var jsonDate = "some data"
var template = new ACData.Template(jsonTemplate);
var cardPayload = template.expand({
  $root: jsonData
});
var adaptiveCard = new AdaptiveCards.AdaptiveCard();
adaptiveCard.onExecuteAction = function(action) {
  alert("Ow!");
}
adaptiveCard.parse(cardPayload);
let renderedCard = adaptiveCard.render();
document.body.appendChild(renderedCard);
 

Я попытался добавить GlobalRegistry следующим образом

  import {AlertAction} from '../action' // Action file is a TS file 
    var adaptiveCard = new AdaptiveCards.AdaptiveCard();
            adaptiveCard.onExecuteAction = function(action) {
  alert("Ow!");
}
            adaptiveCard.GlobalRegistry.actions.register(AlertAction.JsonTypeName, AlertAction)
 

Я получаю сообщение об ошибке типа «ReferenceError: не удается получить доступ к ‘AlertAction’ перед инициализацией»

Комментарии:

1. Вам нужна строка везде, где вы инициализируете средство визуализации, прежде чем визуализировать карту. AC. в данном случае является экземпляром средства визуализации.

2. Привет @TimCadenbach, я добавил код рендеринга карты выше… этот код рендеринга в js-файле, но строка AC.GlobalRegistry.actions.register(AlertAction. JsonTypeName, AlertAction) необходимо добавить в файл сценария типа в соответствии с документами.. теперь, как мы можем использовать эту строку в файле js.. пожалуйста, помогите мне в этом

3. Прошло много времени с тех пор, как я это пробовал, но, насколько я знаю, вы должны установить его в «var adaptiveCard», Как после onExecuteAction вы устанавливаете действия GlobalRegistry и т. Д. Не могу попробовать это прямо сейчас, но сделаю позже сегодня